LLM 分词
Andrej Karpathy 最近发表了一个关于大型语言模型 (LLM) 分词的新讲座 (在新标签页中打开)。分词是训练 LLM 的关键部分,但它是一个使用自己的数据集和算法(例如,字节对编码 (在新标签页中打开))训练分词器的过程。
在讲座中,Karpathy 教导了如何从头开始实现一个 GPT 分词器。他还讨论了许多奇怪的行为,这些行为都可以追溯到分词问题。
图片来源:https://youtu.be/zduSFxRajkE?t=6711 (在新标签页中打开)
以下是上面列表的文本版本
- 为什么 LLM 不会拼写单词?分词问题。
- 为什么 LLM 不能完成像反转字符串这样超简单的字符串处理任务?分词问题。
- 为什么 LLM 在非英语语言(例如日语)方面表现较差?分词问题。
- 为什么 LLM 不擅长简单的算术?分词问题。
- 为什么 GPT-2 在 Python 编码方面遇到不必要的麻烦?分词问题。
- 为什么我的 LLM 在看到字符串 "<endoftext>" 时会突然停止?分词问题。
- 我收到的关于“尾随空格”的奇怪警告是什么?分词问题。
- 如果我问 LLM 关于 "SolidGoldMagikarp" 的问题,为什么它会崩溃?分词问题。
- 为什么我应该在 LLM 中优先使用 YAML 而不是 JSON?分词问题。
- 为什么 LLM 实际上不是端到端语言建模?分词问题。
- 痛苦的真正根源是什么?分词问题。
为了提高 LLM 的可靠性,了解如何提示这些模型非常重要,这也包括了解它们的局限性。尽管在推理时对分词器(除了 max_tokens
配置)没有太多强调,但良好的提示工程涉及理解分词固有的约束和局限性,就像理解如何构建或格式化你的提示一样。你的提示可能会表现不佳,因为例如它无法理解未被正确处理或分词的首字母缩写或概念。这是许多 LLM 开发人员和研究人员经常忽略的一个非常常见的问题。
一个很好的分词工具是 Tiktokenizer (在新标签页中打开),这也是讲座中实际用于演示的工具。