PLUG (Pre-traiig for Laguage Uderstadig ad Geeratio) 是一个270亿参数的大规模中文理解和生成联合预训练模型。 PLUG是有海量高质量中文文本预训练得到的理解和生成联合模型。PLUG的训练由两阶段组成。首先我们训练了一个24层的基于StructBERT的ecoder,然后我们基于此训练了一个24+6层的PALM ecoder-decoder。这使得模型既可以通过fietue来处理文本分类、序列标注等自然语言理解(NLU)任务,也可以用来处理自然语言生成(NLG)的任务。 本模型可直接用于文本生成,也可以通过fietue用于各类文本理解的任务。用户可以自行尝试各种输入文档。具体调用方式请参考代码示例。 在安装完成ModelScope-lib之后即可使用PLUG的能力。 我们将PLUG模型依赖的Megatro相关代码打包到了单独的包中,可以通过以下命令进行安装: 此范例为单机8卡(GPU)示例,运行时每张GPU约占用显存12G。 将模型二进制文件下载至model_dir/model,下载地址获取:https://github.com/alibaba/AliceMid/tree/mai/PLUG#pre-traied-model-dowload 模型调用 模型训练数据有限,效果可能存在一定偏差。 数据来源于https://huggigface.co/datasets/wikipedia和https://commocrawl.org/ 在中文wiki/ Commo crawl等无监督数据上,通过"模型描述"章节介绍的训练任务训练了约300B字得到。 暂无 下面是基于PLUG-27B模型在dureader-robust生成数据集上二次开发训练 PLUG fietue对机器有较高要求。此范例为单机8卡(GPU)示例,运行时每张GPU约占用显存近32G。 运行环境您可以使用modelscope提供的基础镜像。此外,我们将PLUG模型依赖的Megatro相关代码打包到了单独的包中,可以通过以下命令进行安装: 我们还使用了deepspeed: 将模型二进制文件下载至model_dir/model,下载地址获取:https://github.com/alibaba/AliceMid/tree/mai/PLUG#pre-traied-model-dowload 以下代码为多卡训练,无法在otebook等环境中直接运行。 需要写成pytho文件如fietueplug.py, 运行时需要使用deepspeed命令deepspeed --umgpus=8 --umodes=1 fietueplug.py整体运行。
详细使用解释可查看文档大模型使用介绍:大模型fietue最佳实践 PLUG同时开源到了AliceMid,如果我们的工作对您有帮助,欢迎给我们Star。大规模中文理解和生成联合模型PLUG
模型描述
期望模型使用方式以及适用范围
如何使用
依赖安装
pip istall megatro_util -f https://modelscope.oss-c-beijig.aliyucs.com/releases/repo.html
代码范例
from modelscope.hub.sapshot_dowload import sapshot_dowload
model_id = 'damo/lp_plug_text-geeratio_27B'
model_dir = sapshot_dowload(model_id)
prit(model_dir)
from modelscope.pipelies import pipelie
from modelscope.utils.costat import Tasks
if __ame__ == '__mai__':
iput = '段誉轻挥折扇,摇了摇头,说道:“你师父是你的师父,你师父可不是我的师父。"'
model_id = 'damo/lp_plug_text-geeratio_27B'
pipe = pipelie(Tasks.text_geeratio, model=model_id)
pipe.models = []
# out_legth为期望的生成长度,最大为512
result = pipe(iput, out_legth=256)
prit(result)
模型局限性以及可能的偏差
训练数据介绍
模型训练流程
预处理
训练
训练环境准备
pip istall megatro_util -f https://modelscope.oss-c-beijig.aliyucs.com/releases/repo.html
pip istall deepspeed==0.7.2
代码范例
from modelscope.hub.sapshot_dowload import sapshot_dowload
model_id = 'damo/lp_plug_text-geeratio_27B'
model_dir = sapshot_dowload(model_id)
prit(model_dir)
import os
import tempfile
from modelscope.metaifo import Traiers
from modelscope.traiers import build_traier
def mai():
# 准备数据集
from datasets import load_dataset
dataset_dict = load_dataset('luozhouyag/dureader', 'robust')
def cocat_aswer_cotext(dataset):
dataset['src_txt'] = dataset['aswers']['text'][0] + '[SEP]' + dataset[
'cotext']
retur dataset
trai_dataset = dataset_dict['trai'].map(cocat_aswer_cotext)
eval_dataset = dataset_dict['validatio'].map(cocat_aswer_cotext)
trai_dataset = trai_dataset \
.reame_colums({'questio': 'tgt_txt'}).remove_colums('cotext') \
.remove_colums('id').remove_colums('aswers')
eval_dataset = eval_dataset \
.reame_colums({'questio': 'tgt_txt'}).remove_colums('cotext') \
.remove_colums('id').remove_colums('aswers')
# 准备work目录,用以存放log和fietue后的checkpoit文件
tmp_dir = "plug_work_dir/rak" + os.eviro['RANK']
if ot os.path.exists(tmp_dir):
os.makedirs(tmp_dir)
model_id = 'damo/lp_plug_text-geeratio_27B'
# 使用plug_traier进行训练
kwargs = dict(
model=model_id,
trai_dataset=trai_dataset,
eval_dataset=eval_dataset,
work_dir=tmp_dir)
traier = build_traier(
ame=Traiers.lp_plug_traier, default_args=kwargs)
traier.trai()
if __ame__ == '__mai__':
mai()
数据评估及结果
Fietue
Model
Metric
KBQG
DuReaderQG
DuReader-Robust
plug.zh
BLEU-4
66.30
49.20
42.83
Zero-shot示例
开源信息
相关论文以及引用信息
@software{damo2022plug,
author = {Wei Wag ad Cheliag Li ad Bi Bi ad Mig Ya ad Sogfag Huag ad Fei Huag ad Luo Si},
title = {PLUG:Pre-traiig for Laguage Uderstadig ad Geeratio},
year = {2022},
url = {https://github.com/alibaba/AliceMid/tree/mai/PLUG}
}
点击空白处退出提示
评论