目录
关于本项目
本人使用制作了一个基于nanoGPT用于生成诗词的AI大语言模型。数据集来自于chinese-poetry。
安装
python3 -m pip install numpy transformers datasets tiktoken wandb tqdm opencc
其余依赖项:
快速开始
现在就可以快速使用本人已经训练好的模型进行推理了。速度视您电脑的配置而定。
python3 main.py
稍等一会,您应该在控制台看到一些输出。如果出错,请检查环境配置是否正确。
模型参数:iter 23750
, train loss 2.1653
, val loss 2.4391
。
训练设备:CPU: Intel® Xeon® Gold 5220R Processor
, GPU:Tesla T4 GPU 16GB
从头训练
## 数据准备
首先,我们需要提取数据。为此,请运行:
python3 data/poetry/get_data.py
接着,将数据从繁体中文翻译为浅显易懂的简体中文:
python3 data/poetry/translate.py
最后,预处理数据:
python3 data/poetry/prepare.py
这将在数据目录中创建train.bin
和val.bin
。
现在,是时候训练您的GPT了。
开始训练
您有一个GPU 太好了,我们可以使用config/poetry.py配置文件中提供的设置快速训练一个小型GPT:
python3 train.py config/poetry.py
如果您查看其中,您将看到我们正在训练一个GPT。在训练了600000次迭代后,训练将会停止,并会在out-poetry
目录中保存一个模型。接下来,参考快速开始
来使用他。如果想停止,可以随时按下Ctrl+C
。每过一段时间,模型就会自动保存。
您只有一台MacBook(或GPU差强人意或非NVIDIA GPU) 别担心,我们仍然可以训练一个GPT,但我们要降低一些要求。我建议获取最新的PyTorch nightly版本(在安装时选择它),因为目前它很可能会使您的代码更有效。即使没有最新版本,一个简单的训练运行可能如下所示:
python3 train.py config/poetry.py --device=cpu --compile=False --eval_iters=20 --log_interval=1 --block_size=64 --batch_size=12 --n_layer=4 --n_head=4 --n_embd=128 --max_iters=2000 --lr_decay_iters=2000 --dropout=0.0
在这里,由于我们在CPU上而不是在GPU上运行,我们必须设置--device=cpu
以及关闭PyTorch 2.0编译选项--compile=False
。然后,在评估时,我们会得到一个更加嘈杂但更快的估计(--eval_iters=20
,从200减少),我们的上下文大小仅为64个字符,而不是256个字符,每次迭代的批量大小仅为12个示例,而不是64个。我们还将使用一个更小的Transformer(4层,4个头,128个嵌入大小),并将迭代次数减少到2000(并相应地通常将学习率衰减到--lr_decay_iters
处)。由于我们的网络如此小,我们也放松了正则化(--dropout=0.0
),因此也会得到更糟糕的样本,但仍然很有趣。可以使用以下代码来使用模型进行推理:
python3 main.py --device=cpu
该代码将使用CPU来进行推理。
LICENSE
古诗词生成
项目根目录