2024-07-18 13:38:25 +00:00
|
|
|
|
# GPT2
|
|
|
|
|
|
|
|
|
|
原作者:Andrej Karpathy @ https://github.com/karpathy/llm.c
|
|
|
|
|
|
|
|
|
|
## 背景
|
|
|
|
|
|
|
|
|
|
GPT 很酷,能不能在我自己的电脑上跑一个呢?当然可以!
|
|
|
|
|
|
|
|
|
|
![](show.gif)
|
|
|
|
|
|
2024-08-12 13:32:45 +00:00
|
|
|
|
请按照下面的指示来完成自己的 GPT2 吧!
|
2024-07-18 13:38:25 +00:00
|
|
|
|
|
2024-08-12 13:32:45 +00:00
|
|
|
|
## 安装依赖
|
|
|
|
|
|
|
|
|
|
完成本题需要 GNU Make、GCC、Python3。请先使用你的 Linux 发行版的包管理器完成安装。
|
|
|
|
|
|
|
|
|
|
例如,如果你是 Ubuntu,可以使用下面的命令完成安装。
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
sudo apt install build-essential python3
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
接着你需要安装 `tiktoken` Python 包,可以使用下面的命令完成安装。
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
make install
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 下载并检查模型
|
|
|
|
|
|
|
|
|
|
[这里](https://alist.yaossg.com/share/model/gpt2_124M.bin)有我提供的 GPT2 的预训练模型,请下载后把该模型放在本仓库目录下,并执行下面的命令进行检查。
|
2024-07-18 13:38:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2024-08-12 13:32:45 +00:00
|
|
|
|
$ make check
|
|
|
|
|
Checking your model...
|
|
|
|
|
Model is OK
|
2024-07-18 13:38:25 +00:00
|
|
|
|
```
|
|
|
|
|
|
2024-08-12 13:32:45 +00:00
|
|
|
|
如果不出意外,会出现上面的结果,表示模型正常。
|
|
|
|
|
|
|
|
|
|
|
2024-07-18 13:38:25 +00:00
|
|
|
|
## 编译
|
|
|
|
|
|
2024-08-12 13:32:45 +00:00
|
|
|
|
如果你需要调试你的程序,可以使用下面的命令进行编译。
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
make debug
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
调试完毕后用这个编译更快的版本!
|
|
|
|
|
|
2024-07-18 13:38:25 +00:00
|
|
|
|
```bash
|
2024-08-12 13:32:45 +00:00
|
|
|
|
make release
|
2024-07-18 13:38:25 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 运行
|
|
|
|
|
|
2024-08-12 13:32:45 +00:00
|
|
|
|
完成编译之后,就可以运行你的程序了!
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
make run
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
如果你非常懒,可以用下面这个命令一键编译运行:
|
|
|
|
|
|
2024-07-18 13:38:25 +00:00
|
|
|
|
```bash
|
2024-08-12 13:32:45 +00:00
|
|
|
|
make
|
2024-07-18 13:38:25 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 目标
|
|
|
|
|
|
|
|
|
|
你可能已经发现了,你的程序可能并没有我演示的跑的那么快(~~神机请忽略~~)。
|
|
|
|
|
|
|
|
|
|
你的目标就是优化该程序的性能,在保证结果不变的情况下更快的完成文本的补全。
|
|
|
|
|
|
|
|
|
|
我会使用一些测试点来评测你的程序的正确性和执行时间。期待更高的效率和更多样的优化方案。
|
|
|
|
|
|
|
|
|
|
此外,请在 wp 中回答下面的问题:
|
|
|
|
|
|
|
|
|
|
- 什么是阿姆达尔定律?根据阿姆达尔定律,我们应该把优化的重点放在哪里?
|
|
|
|
|
- 你的优化方案和思路是什么?优化的效果受到哪些因素影响?
|