编辑:LRS 好困 【新智元导读】自己部署一个ChatYuan,再也不用担心网络拥堵了! 前段时间,元语智能开发团队训练了一个类似ChatGPT的功能型对话大模型ChatYuan ,并在网页版中开放了试玩接口。 现在你也可以在自己的机器上部署一个ChatYuan了! 模型可用于问答场景,能够结合上下文做对话、做各种生成任务,包括创意性写作,也能回答法律、新冠等领域类问题。 并且在全中文任务中支持零样本学习,用户可以通过提供prompt的方式来使用,支持文本生成、信息抽取和理解大类下近30多种中文任务。 ChatYuan基于PromptCLUE-large结合数亿条功能问答和多轮对话数据进一步训练得到,模型参数量7.7亿,显存6G左右,一张民用显卡即可加载使用,目前模型已开放下载。 PromptCLUE在1000亿token中文语料上预训练,累计学习1.5万亿中文token,并且在数百种任务上进行Prompt任务式训练。 针对理解类任务,如分类、情感分析、抽取等,可以自定义标签体系;针对多种生成任务,可以进行采样自由生成。 如何使用 1. Github 项目地址:https://github.com/clue-ai/ChatYuan 2. Huggingface 项目地址:https://huggingface.co/ClueAI/ChatYuan-large-v1 3. ModelScope 项目地址:https://modelscope.cn/models/ClueAI/ChatYuan-large 加载模型: 使用模型进行预测推理方法: 4. PaddlePaddle 项目地址:https://aistudio.baidu.com/aistudio/projectdetail/5404182 模型地址:https://huggingface.co/ClueAI/ChatYuan-large-v1-paddle 使用自有数据训练模型 1. 组织数据 将数据组织成统一的格式,由两部分构成:输入(Input)和输出(Output)。 针对单轮问答或生成: 输入(Input):任务描述+输入文本 输出(Output):系统需要预测的文本,如下图中「小元」后的内容。 针对多轮对话: 输入(Input):任务描述+上文+输入文本 输出(Output):系统需要预测的文本,如下图中「小元」后的内容。 单轮对话数据格式: 多轮对话数据格式: 2. 训练模型 训练代码可以参考: 使用pCLUE数据集进行训练、预测和效果验证, pytorch实现——在线colab。 Github项目:https://colab.research.google.com/drive/1lEyFhEfoc-5Z5xqpEKkZt_iMaojH1MP_?usp=sharing 举个例子 ==========示例1========== 用户: 你能干什么 小元: 您好!我是元语AI。我可以回答您的问题、写文章、写作业、翻译,对于一些法律等领域的问题我也可以给你提供信息。 ==========示例2========== 用户: 写一个诗歌,关于冬天 小元: 冬夜寂静冷, 云在天边飘, 冰封白雪上, 寒冷像一场雪。 雪花融化成冰, 像那雪花飘洒, 在寒冷的冬天, 感受春天的喜悦。 冬日里, 风雪渐消, 一片寂静, 把快乐和温暖带回家。 ==========示例3========== 用户: 学前教育专业岗位实习中,在学生方面会存在问题,请提出改进措施。800字 小元: 在学前教育专业岗位实习中,在学生方面会存在一些问题,如学生缺少专业知识、缺乏合作意识、缺乏基本的责任心等等,需要我们采取措施,来解决这些问题。 首先,在实习过程中,我们需要培养学生的团队意识,加强学生与老师之间的合作,加强与家长之间的沟通,提高他们的沟通能力。另外,我们也需要加强学生的独立性,让学生学会独立思考,学会和老师、家长进行沟通,培养其独立性。 此外,在日常的工作中,我们也要为学生提供适当的机会和机会,让学生多接触社会、多参加社会活动,加深他们对社会、学校的认识,培养他们主动、积极和创新的精神。 最后,我们还需要重视学生在实习中出现的问题,尤其是学生缺乏合作,有依赖心理,不懂得分享,有拖延行为等,这些学生应该引起我们的重视,制定合理的改进措施,改善这些问题。 技术与训练过程 ChatYuan是在PromptCLUE基础上进一步训练获得的模型。它去掉了文本理解、信息抽取类任务,加强了问答、对话和各种生成式任务的学习和训练; 针对多轮对话容易受到上下文的干扰,加入了抗干扰数据使得模型可以在必要时忽略无关的上下文;加入了用户反馈数据的学习,使得模型不仅具有一定的通用语言理解能力、特定任务上的生成能力,也能更好的响应用户的意图。 PromptCLUE的学习过程 三大统一:统一模型框架(text-to-text),统一任务形式(prompt),统一应用方式(zero-shot/few-shot)(T0) 大规模预训练:在t5-large版基础上,使用数百G中文语料,训练了100万步,累积训练了1.5万亿个中文字词级别token 大规模任务数据:使用了16种任务类型,数百种任务,累积亿级别任务数据 混合预训练:一方面将下游任务作为预训练语料,另一方面将下游任务和预训练语料一起训练,减少任务灾难遗忘以及缩短预训练和下游任务的距离,更好的适应下游任务(ExT5) 混合采样:针对众多数据量差异极大的任务,采用在每个训练batch内对所有的任务进行按照比例采样,根据任务的数据量进行平滑采样,并且同时限制任务数据量采样池的上限。平滑采样可以减少任务训练有偏危害,在每一batch内训练可以减少异质任务之间训练负迁移的情况(T5) 分阶段训练:一方面指在预训练分阶段,涉及训练序列长度的分阶段(128和512),加快预训练速度(Bert);另一方面,在下游训练分阶段, 涉及学习率和序列长度的变化以及递减式对下游任务的数据量限制,更好的适应下游的不同任务。 增加语言模型的训练:参考t5.1.1, 除了使用Span Corrpution构建的方式进行无监督训练,同时在使用prefix LM的方式训练,增强生成任务的能力(LM adapted) 增加对模型的encoder以及decoder的训练:根据下游任务数据分别构建Data_text,Data_target预训练数据语料,加入到预训练中,分别增强模型的encoder理解能力和 decoder的生成能力(见UIE) 重新构建模型中文字典:使用sentencepiece上在千亿token上学习并构建模型字典,更加符合中文语言习惯 后续工作 目前版本可以进行问答、对话和各种创意性写作或文本生成,相对于线上的版本,它的意图理解和生成能力在一些场合还有比较大的提升空间;它也还不能较好实现推理或复杂的任务。之后,会根据反馈进一步改进现有版本。