PLUG预训练生成模型-中文-27B

我要开发同款
匿名用户2024年07月31日
84阅读

技术信息

开源地址
https://modelscope.cn/models/iic/nlp_plug_text-generation_27B
授权协议
Apache License 2.0

作品详情

大规模中文理解和生成联合模型PLUG

PLUG (Pre-traiig for Laguage Uderstadig ad Geeratio) 是一个270亿参数的大规模中文理解和生成联合预训练模型。

Demo体验,请点击右侧进入AI写手创空间!!!

模型描述

PLUG是有海量高质量中文文本预训练得到的理解和生成联合模型。PLUG的训练由两阶段组成。首先我们训练了一个24层的基于StructBERT的ecoder,然后我们基于此训练了一个24+6层的PALM ecoder-decoder。这使得模型既可以通过fietue来处理文本分类、序列标注等自然语言理解(NLU)任务,也可以用来处理自然语言生成(NLG)的任务。

PLUG architecture

期望模型使用方式以及适用范围

本模型可直接用于文本生成,也可以通过fietue用于各类文本理解的任务。用户可以自行尝试各种输入文档。具体调用方式请参考代码示例。

如何使用

在安装完成ModelScope-lib之后即可使用PLUG的能力。

依赖安装

我们将PLUG模型依赖的Megatro相关代码打包到了单独的包中,可以通过以下命令进行安装:

pip istall megatro_util -f https://modelscope.oss-c-beijig.aliyucs.com/releases/repo.html

代码范例

此范例为单机8卡(GPU)示例,运行时每张GPU约占用显存12G。

  1. 通过modelid获取默认modeldir
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)
  1. 将模型二进制文件下载至model_dir/model,下载地址获取:https://github.com/alibaba/AliceMid/tree/mai/PLUG#pre-traied-model-dowload

  2. 模型调用

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)

模型局限性以及可能的偏差

模型训练数据有限,效果可能存在一定偏差。

训练数据介绍

数据来源于https://huggigface.co/datasets/wikipediahttps://commocrawl.org/

模型训练流程

在中文wiki/ Commo crawl等无监督数据上,通过"模型描述"章节介绍的训练任务训练了约300B字得到。

预处理

暂无

训练

下面是基于PLUG-27B模型在dureader-robust生成数据集上二次开发训练

训练环境准备

PLUG fietue对机器有较高要求。此范例为单机8卡(GPU)示例,运行时每张GPU约占用显存近32G。

运行环境您可以使用modelscope提供的基础镜像。此外,我们将PLUG模型依赖的Megatro相关代码打包到了单独的包中,可以通过以下命令进行安装:

pip istall megatro_util -f https://modelscope.oss-c-beijig.aliyucs.com/releases/repo.html

我们还使用了deepspeed:

pip istall deepspeed==0.7.2

代码范例

  1. 通过modelid获取默认modeldir
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)
  1. 将模型二进制文件下载至model_dir/model,下载地址获取:https://github.com/alibaba/AliceMid/tree/mai/PLUG#pre-traied-model-dowload

  2. 以下代码为多卡训练,无法在otebook等环境中直接运行。 需要写成pytho文件如fietueplug.py, 运行时需要使用deepspeed命令deepspeed --umgpus=8 --umodes=1 fietueplug.py整体运行。 详细使用解释可查看文档大模型使用介绍:大模型fietue最佳实践

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

clue

  • 在问题生成任务上的fietue结果
Model Metric KBQG DuReaderQG DuReader-Robust
plug.zh BLEU-4 66.30 49.20 42.83

Zero-shot示例

  • 小说生成

ovel geeratio

  • 技术文档撰写

Scietific Literature geeratio

  • 常识问答

commo sese q&a

  • Zero-shot分类

zero-shot classificatio

开源信息

PLUG同时开源到了AliceMid,如果我们的工作对您有帮助,欢迎给我们Star。

相关论文以及引用信息

@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}
}

功能介绍

大规模中文理解和生成联合模型PLUG PLUG (Pre-training for Language Understanding and Generation) 是一个270亿参数的大规模中文理解和生

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论