LLM Tokenization

LLM 分词

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

在讲座中,Karpathy 教授如何从零开始实现一个 GPT 分词器。他还讨论了一些可以追溯到分词过程的奇怪行为。

"LLM Tokenization"

图源:https://youtu.be/zduSFxRajkE?t=6711 (在新标签页中打开)

以下是上述列表的文本版本:

  • 为什么LLM不能拼写单词?分词。
  • 为什么LLM不能执行像反转字符串这样的超级简单的字符串处理任务?分词。
  • 为什么LLM在非英语语言(例如日语)上表现较差?分词问题。
  • 为什么LLM在简单算术上表现不佳?分词问题。
  • 为什么GPT-2在Python编码中遇到了比预期更多的困难?分词问题。
  • 为什么我的LLM在看到字符串""时突然停止了?分词。
  • 我收到的关于“尾随空格”的奇怪警告是什么?标记化。
  • 为什么当我询问“SolidGoldMagikarp”时,LLM会崩溃?分词问题。
  • 为什么我应该更喜欢在LLMs中使用YAML而不是JSON?标记化。
  • 为什么LLM实际上不是端到端的语言建模?分词。
  • 什么是痛苦的真正根源?Tokenization。

为了提高LLMs的可靠性,了解如何提示这些模型非常重要,这也涉及到理解它们的局限性。虽然在推理时对分词器(除了max_tokens配置)没有太多强调,但良好的提示工程需要理解分词中固有的约束和限制,类似于如何构建或格式化你的提示。你可能会遇到提示表现不佳的情况,因为它未能理解一个未正确处理或分词的缩写或概念。这是许多LLM开发者和研究人员忽视的一个非常常见的问题。

一个用于分词的好工具是 Tiktokenizer (在新标签页中打开),这实际上是讲座中用于演示的工具。