跳到主要内容

LLM 分词

最近,Andrej Karpathy 发表了一篇关于大型语言模型(LLM)分词的新讲座。分词是训练LLM的关键部分,但这是一个涉及使用自己的数据集和算法(例如字节对编码)来训练分词器的过程。

在讲座中,Karpathy 教授如何从头开始实现 GPT 分词器。他还讨论了与分词相关的奇怪行为。

"LLM 分词"

图片来源: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,这实际上是讲座中用于演示的工具。