Prompt-Engineering-Guide/pages/research/llm-tokenization.zh.mdx

28 lines
2.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 大语言模型LLM的标记化处理
Andrej Karpathy 最近发布了一个关于如何对大型语言模型Large Language Model简称 LLM进行标记化处理的新[讲座视频](https://youtu.be/zduSFxRajkE?si=Hq_93DBE72SQt73V)。标记化是训练这类模型时的核心环节,它包括使用专属的数据集和算法(比如[字节对编码](https://en.wikipedia.org/wiki/Byte_pair_encoding))来训练标记器。
在讲座中Karpathy 向我们展示了如何从零开始构建一个 GPT 标记器,并探讨了与标记化相关的一些异常行为。
!["LLM Tokenization"](../../img/research/tokenization.png)
*图源https://youtu.be/zduSFxRajkE?t=6711*
以下是视频中提及的列表内容:
- 为什么大语言模型不能正确拼写单词?这是因为标记化。
- 为什么它不能执行像字符串反转这样的简单任务?同样是因为标记化。
- 为什么在处理日语等非英语语言时表现不佳?标记化的问题。
- 为什么它在简单算术方面表现糟糕?也是标记化导致的。
- GPT-2 为什么在用 Python 编码时遇到更多问题?依旧是标记化的问题。
- 当模型遇到 "\<endoftext\>" 这个字符串时为什么会突然停止?还是标记化的问题。
- 那些关于 "trailing whitespace" 的警告是什么意思?也是标记化引起的。
- 为什么询问 "SolidGoldMagikarp" 时模型会出错?同样是标记化的问题。
- 为什么在使用大语言模型时更倾向于使用 YAML 而不是 JSON这也是标记化的问题。
- 为什么大语言模型并不是真正的端到端语言模型?原因在于标记化。
- 什么才是痛苦真正的根源?在这一点上,讲座中以幽默的方式指出,也是标记化。
为了提升大语言模型的可靠性,了解如何有效地提示模型至关重要,这包括认识到它们的局限性。虽然在模型推理时对标记器的关注不多(除了设置 `max_tokens` 参数之外),但要想进行有效的提示工程,就需要像考虑如何构建和格式化提示一样,理解标记化过程中的内在限制和约束。例如,如果提示没有达到预期效果,可能是因为模型未能正确处理或标记化某个缩写词或概念,这是一个很多开发者和研究者在开发大语言模型时容易忽视的问题。
[Tiktokenizer](https://tiktokenizer.vercel.app/) 是一个实用的标记化工具Karpathy 在讲座中就是用它来演示的。