PicoGPT 项目介绍
在机器学习和语言模型领域,大多数开发者都对 OpenAI 的 GPT-2 有所了解。类似地,也许你已经听说过 Karpathy 的 minGPT 和 nanoGPT。然而,你是否见过极简的 picoGPT?
什么是 PicoGPT?
picoGPT
是一个极其精简的 GPT-2 实现,它完全基于 NumPy。整个正向传播的代码仅有 40 行,这使得它成为一个极小但完整的 GPT-2 模型实现。
PicoGPT 的特点
- 速度: 并不快,实际上,PicoGPT 是非常慢的。
- 训练代码: 不包含训练代码。
- 批量推理: 不支持批量推理,只能逐条处理。
- 采样策略: 不支持 top-p, top-k, 温度或类别采样,只支持贪婪策略。
- 可读性: 对于
gpt2.py
文件是可读的,而gpt2_pico.py
则高度精简。 - 文件小巧: 可以说是非常小巧轻便。
文件介绍
encoder.py
:包含了由 OpenAI 开发的 BPE Tokenizer 的代码,该代码直接来自他的 gpt-2 代码库。utils.py
:包含用于下载和加载 GPT-2 模型权重、分词器和超参数的代码。gpt2.py
:包含 GPT 模型和生成代码,可以作为 Python 脚本运行。gpt2_pico.py
:与gpt2.py
相同,但行数更少,为的是极简化。
依赖
要使用 PicoGPT,确保在你的 Python 环境中安装相关依赖。以下是安装命令:
pip install -r requirements.txt
该项目在 Python 3.9.10
版本上测试通过。
使用方法
可以通过运行以下命令来执行生成文本的过程:
python gpt2.py "Alan Turing theorized that computers would one day become"
这将生成如下文本:
最强大的机器。
计算机是一种可以执行复杂计算的机器,其运算方式与人脑非常相似。
此外,还可以控制生成的 token 数量、模型大小 (可选 ["124M", "355M", "774M", "1558M"]
)以及保存模型的目录:
python gpt2.py \
"Alan Turing theorized that computers would one day become" \
--n_tokens_to_generate 40 \
--model_size "124M" \
--models_dir "models"
PicoGPT 旨在提供一个教育性的工具,用以展示利用最少代码量实现语言模型的可能性,即便它不是最快或功能最全的方案,但确实是非常精简且容易理解的实现。