4

大型语言模型场景调优实践|打造「贺岁灵感模型」

 5 months ago
source link: https://zhuanlan.zhihu.com/p/688530708
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

大型语言模型场景调优实践|打造「贺岁灵感模型」

云问科技 算法工程师
7 人赞同了该文章

ChatGPT模型问世后,立刻在全球范围内掀起了轩然大波,其卓越的效果引发了新一轮AI浪潮。目前以ChatGPT、文心一言等为首的一系列大型语言模型给广大用户带来了极大的便捷。

例如:编辑们可以借助大型语言模型的能力进行文案创作及润色,程序员们可以借助大型语言模型能力进行代码辅助生成等;尤其在多模态大型语言模型出现后,很多人都变成了绘画大师,只需要输入一些文本描述,大型语言模型就可以生成对应的图片内容。

但大型语言模型距离真正地落地,其实还有一段艰难的路要走。目前大型语言模型在通用领域上效果还不错,但在一些特殊或者小众的领域&场景上效果往往不是很理想。

因此需要在领域数据或场景数据上对通用大型语言模型采用继续预训练、指令微调、人类偏好对齐等手段,将通用大型语言模型领域化、垂直化、行业化、场景化、个性化,这样可以在不丧失原有大型语言模型能力的基础上,进一步提高模型在特定领域或场景上的效果。

恰巧春节假期期间,我注意到百度智能云发起了【千帆杯AI原生应用开发挑战赛】,正是给大家提供了一次打造场景专属大型语言模型的机会。

百度智能云千帆杯第二期赛题是《贺岁灵感模型》,赛题聚焦于春节假期贺岁时刻的精彩“文笔”展示,旨在构建一个能在春节期间帮大家激发无限创意的模型,让你在贺岁期间大显身手。赛题借助百度智能云千帆大模型平台(千帆Modelbuilder),参赛者可以在平台上快速进行数据管理、模型调优以及模型部署,让参赛者更加方便、快捷地打造出领域、场景或个人专属的大型语言模型。

赛题链接:https://cloud.baidu.com/qianfandev/topic/268516

看到这个题目我还挺兴趣的,抽空想了想解题思路和步骤。分享出来,欢迎大家一起交流~

接下来我们先对赛题进行简要描述,再进行解题思路详解,最后完成专属的大型语言模型创建。

生成一个可制作贺岁文案内容的精调模型(限定使用ERNIE Speed,通过对模型精调使其保持原有能力的同时,具备准确理解并执行文案创作中创作长度相关指令的能力)。

输入:包含创作长度要求的对文案创作的需求描述文本。(如:如何应对生成给领导的拜年文案;作为“I”人,如何在家庭群中发送讨长辈欢心的50字以内拜年语;如果你作为家长,如何辅助指导孩子完成“300字过年作文”的作业......)
输出:严格符合长度要求且满足其他创作需要的创作内容。

参赛任务:

  • 通过在千帆大模型平台使用平台上的各种模型调优工具,结合相关数据,基于ERNIE-Speed调优生成符合赛题主题要求且效果优秀的模型。
  • 补充说明:官方提供「贺岁文案」基础数据集,开发者需要在此基础上做延伸和扩充(模型训练最少需要100条数据)。
  • 微调后的大模型需可访问在千帆大模型平台平台部署服务EndPoint、所有调优过程数据,超参设置和步骤描述,确保评审过程中必要的复现。
  • 本次赛题必须使用百度智能云千帆大模型平台(千帆Modelbuilder)完成开发。

模型评价说明:
a.文案创作包括但不限于生成、摘要、扩写等常见应用场景及常见风格与修辞等要求。
b.如果创作要求合理,生成内容必须语义语法正确,主题与创作要求相符,否则不得分。
c.如果篇幅要求合理,则在b的基础上,生成内容需要符合指令中篇幅相关的要求,误差不超过5个字,否则扣分。
d.如果篇幅要求不合理或与指令中其他部分存在矛盾,则生成对应提示,而非继续创作,否则扣分。

在创建自己的专属场景大型语言模型时,通常需要以下几个步骤: (1)选择合适的底座大模型;(2)数据构造;(3)模型微调;(4)模型评估。

选择合适的底座大模型

选择合适的底座大模型是为了模型可以快速获取较为优异的效果,让我们站在巨人的肩膀上。由于赛题指定了“ERNIE-Speed”底座模型,因此,在此不需要进行额外的选择。

数据构造是构建专属大型语言模型的关键环节,涵盖了数据的获取、清洗、标注、预处理。目前指令微调数据构造可以借助大型语言模型进行自动构造,节省人工标注成本,主要采用Self-Instruct方法,如下图所示。Self-Instruct方法中,首先利用一个任务种子集作为任务池的起点,随机采样出多个任务指令,利用大型语言模型生成新的指令内容;再利用大型语言模型判断指令任务是否为分类任务(分类任务与生成任务的要求有所不同);然后利用大型语言模型对新的指令内容进行补全,主要是生成输出结果,并且判断如果需要额外输入文本也同步生成;其次进行数据过滤,满足要求的数据加入到任务池中,最后重复上面几步操作,直到数据达到数量要求。

由于本赛题已经提供数据集样例,可以将官方提供的数据集作为“种子池”,并且可以利用百度智能云千帆大模型平台中的“ERNIE-Bot 4.0”模型来进行数据构造。 种子池数据样例如下:

[{"prompt": "假如你是企业CEO,请以正式鼓励的风格为全公司员工撰写50字的春节祝福语。", "response": [["亲爱的团队成员们,值此新春佳节之际,向你们致以诚挚的祝福和感谢。过去一年,我们共同努力,取得了骄人的成绩。愿新的一年里,家庭幸福、事业成功,我们携手迎接更加辉煌的明天。祝大家春节快乐,万事如意!"]]}]
[{"prompt": "假如你是家庭医生,请提供一段30字内温馨安慰的春节祝福给病人。", "response": [["春节将至,愿您快乐安康,疾病远离,新春暖暖,幸福满满。"]]}]
[{"prompt": "撰写春节期间的工作安排通知,明确工作调整、休假政策和紧急联系方式,回答不低于200字。", "response": [["关于春节期间工作安排的通知\n\n各位同事:\n\n春节将至,为确保节日期间工作顺利进行,特此通知如下:\n\n1. 工作调整:春节期间,公司将按照国家法定节假日安排进行调整,具体时间为xx月xx日至xx月xx日放假调休。期间部分部门将安排值班,请提前与部门负责人确认。\n\n2. 休假政策:员工可享受法定假期,如有特殊情况需请假或调休,请提前向人事部门申请。\n\n3. 紧急联系方式:如遇紧急情况,请及时联系公司值班电话:xxxxxxxxxxx。\n\n请大家合理安排工作与生活,确保度过一个欢乐、祥和的春节。\n\n祝大家春节快乐!\n\n公司管理层\n2023年xx月xx日"]]}]
[{"prompt": "创建春节特色菜单介绍,包括菜品选择、食材来源和烹饪技巧,回答不低于200字。", "response": [["春节特色菜单以团圆和吉祥为主题,精选菜品丰富多样。主打的“年年有余”鱼香肉丝,选用新鲜猪肉和脆嫩的竹笋,切丝均匀,鱼香调味恰到好处,寓意年年富足。另有“金鸡报喜”宫保鸡丁,采用农家土鸡,丁状均匀,口感鲜嫩,辣香四溢,象征吉祥如意。还有“五福临门”五彩蔬菜拼盘,集五种颜色蔬菜于一体,色彩缤纷,营养均衡,代表五福同享。食材均来自当地绿色生态农场,确保新鲜无污染。烹饪时注重火候控制和调味搭配,力求呈现最佳口感,让家人围坐一桌,品尝美味,共享天伦之乐。"]]}]

步骤1:随机采样6个种子池中的数据,并利用“ERNIE-Bot 4.0”模型生成4个新的任务指令。其中生成数据的提示词为“请生成4个任务描述,所有任务必须与春节相关,注意注意注意:仅提供任务描述即可。\n下面有6个任务描述可以参考,但不要类似,要有一定的区别:\n任务1:{}\n任务2:{}\n任务3:{}\n任务4:{}\n任务5:{}\n任务6:{}\n请生成结果:”。

步骤2:针对每个任务描述利用“ERNIE-Bot 4.0”模型生成回复答案。其中生成数据的提示词为“请根据下面描述内容,给出答案,需要严格执行描述中的内容,特别是主题要求、字数要求、任务要求等。\n任务描述:{}”。

步骤3:为了保证生成任务指令的多样性,可以通过Rouge指标来对新生成的指令内容进行过滤,判断是否需要加入到任务池中。

注意:上述“ERNIE-Bot 4.0”模型的调用,均可利用千帆大模型平台的SDK API进行调用。

PS:千帆平台还提供了数据增强功能,可以直接对种子调用大模型进行数据扩充。

步骤1:创建数据增强任务。

步骤2:填写基本信息以及增强配置。

步骤3:等待数据增强完成,查看数据质量。

模型微调是让大型语言模型更好遵循指令以及让模型对任务场景具有更优输出的手段,可以让大型语言模型具有领域、场景、个性迁移的能力。随着当前模型参数规模的不断扩大,使用全量参数规模的训练无论在模型微调还是后续推理阶段都会消耗大量的算力资源。目前模型调优的方法一般会采用参数高效微调方法,例如:LoRA。

Lora方法即在大型语言模型上对指定参数(权重矩阵)并行增加额外的低秩矩阵,并在模型训练过程中,仅训练额外增加的并行低秩矩阵的参数。 当“秩值”远小于原始参数维度时,新增的低秩矩阵参数量也就很小。在下游任务tuning时,仅须训练很小的参数,但能获取较好的表现结果,如图下图所示。

注意:千帆大模型平台无需代码开发,仅通过配置参数即可完成大模型的微调。

模型评估就是对训练完的大型语言模型进行测试,进行Bad Case分析,对效果不好类型的数据,可以针对性进行数据构造,增加训练数据样本,以提高微调后大模型效果。

下面我们快速在千帆大模型平台上来进行「贺岁灵感模型」的调优。

第一步:报名。

报名后,可以获得500代金券。

第二步:进入“百度智能云千帆大模型平台”页面。

第三步:将构建好的指令微调数据集上传到平台上。

注意:数据格式请按照样例模型进行构造。

完成数据导入后,可以在数据管理中看到导入的数据集,并在“更多”中进行数据发布,以供后续模型微调使用。

第4步:创建模型微调任务。

在SFT任务创建过程中,可以选择多种模型,例如ERNIE-Speed、ERNIE-Bot-turbo、Llama-2、Mixtral-8x7B、SQLCoder-7B、ChatGLM、Baichuan2、BLOOMZ-7B等,根据赛事要求,选择“ERNIE-Speed”模型。

平台支持全量参数微调和Lora微调,我们选择Lora方法,并设置相应的训练参数,包括:迭代轮次、学习率、序列长度、保存日志间隔、预热比例、正则化系数、LoRA秩大小、LoRA所有线性层等。

选择SFT相关数据集,采用第2步上传的贺岁灵感数据。

完成后,可以看到已经创建的任务,并且在详情中,可以查看模型训练状态、时间、日志等相关信息。

完成后进行模型发布。

第5步:模型部署

部署的方式涉及两种,可以选择按部署时长,也可以选择按服务调用量。

当部署状态是“已发布”后,表示可以调用该在线服务。

然后创建应用,将部署的在线服务变成应用。

其中应用的API Key和Secret Key将在代码调用时使用。

第6步:模型调用及测试 体验中心可以选择部署的模型,来进行测试。当然也可以使用SDK进行测试。

以上我们就完成了大模型的场景优化,借助“百度智能云千帆大模型平台”,在零代码编写的情况下就完成了大模型的优化,帮助每位开发者快速构建自己专属的大型语言模型,探索AI大模型的无限可能。

千帆杯的第二道赛题的解题思路给大家抛砖引玉,后面即将发布第三道赛题,欢迎大家踊跃参加,赢取10万奖金!

3月21日,百度智能云在千帆产品发布会上发布了包括ERNIE Speed、ERNIE Lite、ERNIE Tiny在内,参数量由大到小的三款轻量级大模型,帮助企业实现“减量不减效”,节约不必要投资。其中,ERNIE Speed作为三款轻量级大模型中的“大个子”,推理场景下拥有最高128k的上下文长度,在处理知识问答等任务时,能够更好的处理上下文的依赖关系,生成更加连贯和准确的预测或回答。同时,针对特定场景可以将ERNIE Speed作为基座模型进行精调,模型效果可以追平甚至超过旗舰级大参数规模大模型,效价比大幅提升。

感兴趣的开发者可以上手体验新功能了!


欢迎多多关注公众号「NLP工作站」,加入交流群,交个朋友吧,一起学习,一起进步!

我们的口号是“生命不止,学习不停”!

往期回顾

刘聪NLP:自我蒸馏方法-减轻大模型微调过程中的灾难性遗忘

刘聪NLP:指令微调数据的高效筛选方法-排序&聚类-CaR方法

刘聪NLP:Yi技术报告细节分享
刘聪NLP:大模型增量预训练新技巧-防止模型灾难性遗忘
刘聪NLP:如何提高LLMs的文本表征(Text Embedding)能力?
刘聪NLP:DEITA-大模型指令微调的数据高效筛选方法
刘聪NLP:1-2B参数规模大模型使用心得及模型汇总
刘聪NLP:大模型微调技巧 | 高质量指令数据筛选方法-MoDS
刘聪NLP:大模型下载使我痛苦
刘聪NLP:大模型微调技巧-在Embedding上加入噪音提高指令微调效果
刘聪NLP:通义千问-Qwen技术报告细节分享
刘聪NLP:如何从数据集中自动识别高质量的指令数据-IFD指标的使用
刘聪NLP:BaiChuan2技术报告细节分享&个人想法
刘聪NLP:领域大模型-训练Trick&落地思考
刘聪NLP:千Star-大模型LLM微调项目-更新
刘聪NLP:Llama2技术细节&开源影响
刘聪NLP:垂直领域大模型的一些思考及开源模型汇总
刘聪NLP:如何评估大模型-LLMs的好坏?
刘聪NLP:大模型流水线并行(Pipeline)实战
刘聪NLP:支持多模态的ChatGLM模型-VisualGLM-6B
刘聪NLP:大模型时代-不进则退
刘聪NLP:大模型LLM-微调经验分享&总结
刘聪NLP:ChatGPT-所见、所闻、所感
刘聪NLP:ACL2022 | DCSR:一种面向开放域段落检索的句子感知的对比学习方法
刘聪NLP:ACL2022 | NoisyTune:微调前加入少量噪音可能会有意想不到的效果
刘聪NLP:总结|Prompt在NER场景的应用
刘聪NLP:PERT:一种基于乱序语言模型的预训练模型
刘聪NLP:常用预训练语言模型(PTMs)总结


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK