没作业也要「卷」。
闲不下来的 Andrej Karpathy 又有了新项目!
曩昔几天,OpenAI 非常热烈,先有 AI 大牛 Andrej Karpathy 官宣离职,后有视频生成模型 Sora 撼动 AI 圈。
在宣告脱离 OpenAI 之后,Karpathy 发推表明「这周可以歇一歇了。」
这种无事要做的状况让马斯克都仰慕(I am envious)了。
可是,如果你真的以为 Karpathy 会闲下来,那就有点「too young, too navie」了。
这不,有眼尖的网友发现了 Karpathy 的新项目 ——minbpe,致力于为 LLM 分词中常用的 BPE(Byte Pair Encoding, 字节对编码)算法创建最少、洁净以及教育性的代码。
只是一天的时间,该项意图 GitHub 标星现已达到了 1.2 k。
有人 P 了一张图,表明 Karpathy 为大家「烹制了一顿大餐」。
更有人欢呼,Karpathy is back。
咱们来看一看「minbpe」项目具体讲了些什么。
项目介绍
GitHub 地址:github.com/karpathy/mi…
咱们知道,BPE 算法是「字节级」的,在 UTF-8 编码的字符串上运转。该算法通过 GPT-2 论文和 GPT-2 相关的代码在大言语模型(LLM)中得到推广。
现如今,一切现代的 LLM(比如 GPT、Llama、Mistral)都运用 BPE 算法来练习它们的分词器(tokenizer)。
Karpathy 的 minbpe 项目存储库中提供了两个 Tokenizer,它们都可以执行分词器的 3 个主要功能:1)练习 tokenizer 词汇并兼并给指定文本,2)从文本编码到 token,3)从 token 解码到文本。
具体的存储库文件分别如下:
-
minbpe/base.py:完结 Tokenizer 类,是基类。它包含了练习、编码和解码存根、保存 / 加载功能,还有一些常见的实用功能。不过,该类不该直接运用,而是要承继。
-
minbpe/basic.py:完结 BasicTokenizer,这是直接在文本上运转的 BPE 算法的最简略完结。
-
minbpe/regex.py:完结 RegexTokenizer,它通过正则表达式形式进一步拆分输入文本。作为一个预处理阶段,它在分词之前按类别(例如字母、数字、标点符号)拆分输入文本。这保证不会发生跨类别鸿沟的兼并。它是在 GPT-2 论文中引进的,并继续在 GPT-4 中运用。
-
minbpe/gpt4.py:完结 GPT4Tokenizer。此类是 RegexTokenizer 的轻量级封装,它准确地复现了 tiktoken(OpenAI 开源分词神器)库中 GPT-4 的分词。封装处理有关恢复 tokenizer 中准确兼并的一些细节,并处理一些 1 字节的 token 摆放。需求注意,奇偶校验尚未彻底完结,没有处理特别的 token。
脚本 train.py 在输入文本 tests/taylorswift.txt 上练习两个主要的 tokenizer,并将词汇保存到磁盘以进行可视化。Karpathy 称,该脚本在他的 MacBook (M1) 上运转大约需求 25 秒。
Karpathy 还表明,一切文件都非常短且注释翔实,并包含运用示例。如下为 BPE 维基百科文章的复现比如。
<span><span>from</span> minbpe <span>import</span> BasicTokenizer</span>
此外还提供了怎么完结 GPT4Tokenizer,以及它与 tiktoken 的比较。
<span>text = <span>"hello123!!!? (안녕하세요!) "</span></span>
当然,Karpathy 不满足只推出 GitHub 项目,他表明视频很快就会发布。
扩展阅读: