鹏程.盘古(PanGu-Alpha)
简介
「鹏程·盘古α」由以鹏城实验室为首的技术团队联合攻关,首次基于“鹏城云脑Ⅱ”和国产mindSpore框架的自动混合并行模式实现在2048卡算力集群上的大规模分布式训练,训练出业界首个2000亿参数以中文为核心的预训练生成语言模型。鹏程·盘古α预训练模型支持丰富的场景应用,在知识问答、知识检索、知识推理、阅读理解等文本生成领域表现突出,具备很强的小样本学习能力。
相关原理和方法,请参见[项目主页]。
使用方法
环境搭建
目前仅支持pytorch 和 mindspore。环境信息:请参考项目主页。
数据准备
如果基于鹏程.盘古做微调或者基于鹏程.盘古直接训练,请参考下面的数据准备过程。
- step1,组织训练预料的格式;转为txt文本数据,txt 文件格式如下:
每段完整的内容作为一个数据样本。
样本间用两个换行符\n\n隔开
- step2,数值化,将文本数据转换成能直接输入模型的数值数据。
pytorch
from pcl_pangu.context import set_context
from pcl_pangu.dataset import txt2bin
set_context(backend="pytorch")
txt2bin(input_glob='YOUR_DATASET_TXT_DIR/*.txt', output_prefix='Your_Saving_DIR/text_document')
训练
如果你想利用鹏程.盘古的技术对预训练语言模型如鹏程.盘古做增强训练,可以参考如下实现过程。
首先需要在模型下载页面下载对应的鹏程.盘古
模型,并且解压。
【注意】多卡训练需要配置 model_config 当中的节点数"nnodes"和每个节点卡数"nproc_per_node"
from pcl_pangu.context import set_context
from pcl_pangu.dataset import txt2bin
from pcl_pangu.model import alpha
set_context(backend="pytorch") #or backend='mindspore'
data_path = 'path/of/training/dataset'
txt2bin(input_glob='your/txt/path/*.txt', output_prefix=data_path)
config = alpha.model_config_gpu(model='350M',
nnodes=1,
nproc_per_node=4,
model_parallel_size=1,
save='path/to/save/ckpt',
data_path=data_path)
alpha.train(config)
微调
如果你想基于鹏程.盘古对你任务数据做进一步的增量训练,可以参考如下实现过程。
首先需要在模型下载页面下载对应的鹏程.盘古
模型,并且解压。
模型微调流程基本和训练的流程一致,只需要更改为调用 model.fine_tune()
。
from pcl_pangu.context import set_context
from pcl_pangu.dataset import txt2bin
from pcl_pangu.model import alpha
set_context(backend="pytorch")
data_path = 'path/of/training/dataset'
txt2bin(input_glob='your/txt/path/*.txt', output_prefix=data_path)
config = alpha.model_config_gpu(model='2B6', save='path/of/your/existing/ckpt', data_path=data_path)
alpha.fine_tune(config)
预测
如果你想利用鹏程.盘古直接用于下游的推理,可以参考如下实现过程。
首先需要在模型下载页面下载对应的鹏程.盘古
模型,并且解压。
from pcl_pangu.context import set_context
from pcl_pangu.model import alpha
set_context(backend='pytorch')
config = alpha.model_config_gpu(model='2B6', save='2B6/mode/path')
alpha.inference(config, input="四川的省会是?")