|
| 1 | +# GPT |
| 2 | + |
| 3 | +## 模型介绍 |
| 4 | +GPT-[2](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf)/[3](https://arxiv.org/pdf/2005.14165.pdf) 是以[Transformer](https://arxiv.org/abs/1706.03762) 解码器为网络基本组件,使用自回归的方式在大规模无标注文本语料上进行预训练得到的语言生成模型。 |
| 5 | + |
| 6 | +本项目是语言模型 GPT 的 PaddlePaddle 大模型实现。下是本例的简要目录结构及说明: |
| 7 | + |
| 8 | +```text |
| 9 | +. |
| 10 | +├── tools.py # 训练参数配置处理脚本 |
| 11 | +├── single # 单卡模型训练 |
| 12 | + ├── configs_345m_single_card.yaml # 单卡345M模型配置文件 |
| 13 | + ├── configs_1.3B_single_card.yaml # 单卡1.3B模型配置文件 |
| 14 | + ├── run_pretrain.py # 单卡预训练入口 |
| 15 | + ├── run.sh # 单卡训练启动入口 |
| 16 | +├── hybrid_parallel # 分布式模型训练 |
| 17 | + ├── configs_1.3B_dp8.yaml # 单机1.3B数据并行模型配置文件 |
| 18 | + ├── configs_6.7B_sharding16.yaml # 两机6.7B分组切片并行模型配置文件 |
| 19 | + ├── configs_175B_mp8_pp16.yaml # 16机175B混合并行模型配置文件 |
| 20 | + ├── run_pretrain.py # 分布式预训练入口 |
| 21 | + ├── run.sh # 分布式训练启动入口 |
| 22 | +``` |
| 23 | + |
| 24 | +## 快速开始 |
| 25 | + |
| 26 | +### 环境依赖 |
| 27 | + |
| 28 | +- regex |
| 29 | +- colorlog |
| 30 | +- colorama |
| 31 | +- cached_path >= 1.1.5 |
| 32 | +- omegaconf |
| 33 | +- sentencepiece >= 0.1.94 |
| 34 | +- tqdm |
| 35 | +- visualdl |
| 36 | +- paddlepaddle-gpu >= 2.2rc |
| 37 | +- pybind11 |
| 38 | +- lac (可选) |
| 39 | +- zstandard (可选) |
| 40 | + |
| 41 | +**安装命令** |
| 42 | +```shell |
| 43 | +pip install regex colorlog colorama cached_path omegaconf sentencepiece tqdm visualdl pybind11 lac zstandard |
| 44 | +``` |
| 45 | +注:需要PaddlePaddle版本大于等于2.2rc,或者使用最新develop版本,安装方法请参见Paddle[官网](https://www.paddlepaddle.org.cn)。 |
| 46 | + |
| 47 | +### 数据准备 |
| 48 | + |
| 49 | +数据获取和制作详见[GPT 模型预训练数据准备流程](https://github.com/PaddlePaddle/FleetX/tree/develop/fleetx/data/data_tools/gpt) |
| 50 | + |
| 51 | +为了方便用户运行测试本模型,此处提供处理好的300M的训练样本。 |
| 52 | + |
| 53 | +**数据下载命令** |
| 54 | +```shell |
| 55 | +cd single # 或者 cd hybrid_parallel |
| 56 | + |
| 57 | +# 下载样例数据 |
| 58 | +mkdir data && cd data |
| 59 | +wget https://bj.bcebos.com/paddlenlp/models/transformers/gpt/data/gpt_en_dataset_300m_ids.npy |
| 60 | +wget https://bj.bcebos.com/paddlenlp/models/transformers/gpt/data/gpt_en_dataset_300m_idx.npz |
| 61 | + |
| 62 | +cd .. # 回到 single/hybrid_parallel 路径下 |
| 63 | +``` |
| 64 | + |
| 65 | +### 模型训练 |
| 66 | + |
| 67 | +除了单卡训练,飞桨还支持数据并行、混合并行、重计算等多种分布式策略,减少显存占用、加速训练,达到大模型可训练且训得快的效果。在模型训练前,需要根据模型规模选择合适的并行策略。下面分别从单卡训练和混合并行训练两方面来介绍GPT模型训练的配置文件和启动方式。 |
| 68 | + |
| 69 | + |
| 70 | + |
| 71 | +- [单卡训练](./single/README.md) |
| 72 | + |
| 73 | +- [混合并行训练](./hybrid_parallel/README.md) |
| 74 | + |
| 75 | + |
| 76 | +## 参考文献 |
| 77 | +- [Language Models are Unsupervised Multitask Learners](https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) |
| 78 | +- [Language Models are Few-Shot Learners](https://arxiv.org/pdf/2005.14165.pdf) |
| 79 | +- [CPM: A Large-scale Generative Chinese Pre-trained Language Model](https://arxiv.org/abs/2012.00413) |
0 commit comments