Datawhale 2024年12月20日
大模型微调(Fine-Tuning)全流程思考
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文涵盖大模型微调过程,包括方案构思、数据集构建与清洗、模型基底选择与训练、效果评估及发布等内容,还探讨了相关问题及成本考量。

大模型微调需严格按流程,先明确目标,如构建数据集等

数据集获取分公开和自行构建,可借助平台功能快速实现

数据清洗后以AIpaca形式构建,建立问题-回答映射关系

选择合适模型基底并注意训练参数,评估模型效果

原创 August 2024-12-19 23:13 浙江

冬令营优秀学习笔记(二)

 Datawhale分享 

作者:August

大模型微调的过程

?建议严格按照此流程来,不要跳步,不然可能会做无用功。 

比如如果没有好好构建数据集,最后发现微调模型效果不佳是数据集的问题,就事倍功半了。 

方案的构思与落地:几种可能的选择

我有个问题,我现在写了一个prompt,用户可以自己输入内容,但我不想让用户看见这个prompt,只有一个输入区在那儿,要怎么实现呢? 

我怎么能够调用两个模型,让他们相互衔接呢? 

…… 

在正式开始之前,需要先想好以下问题: 

❓什么是Agent? 

——Agent指的是基于人工智能技术,尤其是大型语言模型(LLM),能够感知和理解环境,并采取行动以完成目标的智能实体 

在讯飞MaaS上,如果我们想做一个Agent,可以在大模型应用平台中实现。 

❓什么是workflow? 

——工作流(Workflow)是指完成特定任务或一系列任务的步骤和过程。在讯飞MaaS的大模型应用平台中有对应的模块。目前已经上线的节点有:大模型、代码、决策、分支器、变量提取器、文本拼接等等。 

如果你的idea需要训练新模型,那么可以继续往下。但如果你的idea只是涉及已有模型的流程拼接,则可以直接用workflow实现,不涉及以下过程。 

数据集的获取与构建

数据集的获取

练成数据集,微调就成功了一大半。 

——不要葱姜蒜老师 

对于新手而言,我们可以根据数据集的可获得性分为两种:公开已有的、难以获得的。 

❓如何获得公开已有的数据? 

——最简单的数据集获取方案是去相关开源平台搜索并下载,如:githubhugging face魔搭等平台。尤其是小说等文本类数据特别多。 

也可以尝试从网站上爬取,但需要一定技术支持。 

❓如果我需要的数据全网没有/难以获得怎么办? 

——自行构建数据集。 

然而,自行构建几百上千条数据集非常麻烦,如何能够快速实现这一过程?这里介绍两个思路 

一个简单的Prompt示例(来自@August) 

参照示例,输出20个类似的“近期运气”问题给我,注意要生活化、语言不要太夸张,最好不要有场景、有类似于“在活动中”、“在比赛中”之类的定语与状语;语句不要太累赘、尤其是不要有太多定语,正常人不这样说话。示例:我这个季度顺利吗?我这个季度会发财吗?最近有哪些事情在等着我?最近会发生什么事情?近期我能否被幸运之神垂青?

数据的清洗

原始数据集并不符合模型训练可以接受的形式,因此需要对原始数据进行清理,处理为模型可以学习的格式。 

在讯飞MaaS平台中,微调数据集通常以AIpaca的形式构建。具体内容详见讯飞开放平台说明。 

AIpaca

特点:结构简单,适用于文本生成、翻译、总结等任务,尤其是单轮的、任务导向的指令微调 

[  {    "instruction": "人类指令(必填)",    "input": "人类输入(选填)",    "output": "模型回答(必填)",    "system": "系统提示词(选填)",    "history": [      ["第一轮指令(选填)", "第一轮回答(选填)"],      ["第二轮指令(选填)", "第二轮回答(选填)"]    ]  }]

简单来说,这个结构可以理解为:请大模型记住现在的角色history,当用户输入类似于instruction内容的时候,大模型需要返回类似于output的结果 

相当于帮助大模型建立了问题-回答之间的映射关系。 

模型基底的比较

在正式开始调试模型前,特别重要的是选择一个合适的模型基底。尽管讯飞MaaS平台已经对模型擅长的内容有了一些介绍,但具体到各个垂直领域,还是需要自行测试与总结。 

其中,讯飞MaaS平台上提供的Llama3模型主要基于英文语料(训练语料中只有0.2%是中文)所以经常会有同学有以下问题: 

❓如何实现Llama3的输出是中文? 

——输入自己的中文数据集,然后选择全参数微调,然后再次进行lora训练。 

同时,也可以在自己的中文数据集的system部分加入“请输出中文”(但目前讯飞MaaS平台好像不支持这个) 

模型训练

构建好数据集、选择好模型基底后,可以开始训练模型啦! 

参数的选择

在训练模型的过程中,有很多参数可以选择。 

?个人的经验是,需要尤其注意其中的“训练次数”!若数据集超过10000了,训练次数最高也要低于5,不然会出现过拟合问题(下章) 

效果的评估

大家都说效果不好,那你的预期目标效果是什么呢? 

——葱姜蒜煎蛋老师 

对于模型效果的评估,我们可以用客观+主观的标准来衡量。尤其要注意出现过拟合问题。 

❓什么是过拟合? 

——过拟合指的是模型学习数据时,不仅记住了数据中的细节,还把偶然出现、不重要的东西(即“噪声”)同时记住了。 

当出现过拟合问题的时候,可以考虑 


主观的标准:根据自己对产品的预期,确定预期目标效果的评估框架。这是最重要的 

客观的标准:查看loss曲线。 

Loss曲线是用于评估模型学习状态(学习损失)的曲线。 

你的loss曲线调到0.1、0.2了,肯定不行呀 

——葱姜蒜煎蛋老师 

理想的拟合状态

有待提升的拟合状态

以下内容来自Cheng Xiaojuan的笔记机器学习术语表 

表现1:loss下降的非常平缓,以至于似乎并没有下降,这说明模型根本没从数据中学到东西(欠拟合)。 

 

表现2:曲线振荡 

表现3:模型急剧跳跃 

表现4:loss值过低,快到0.2、0.3了(来自@August) 

模型的发布

模型做好发布后,可以直接调用API,请求地址如下: 

wss://xingchen-api.cn-huabei-1.xf-yun.com/v1.1/chat

调用API可参考以下文档:开源大模型 Web API文档 

还有更多需要考虑……

目前得益于讯飞MaaS平台的开放性和公益性,模型的训练、发布、调用很多都不需要考虑成本问题。 

然而在实际过程中,模型的每一次测试、训练等都是有成本的。如果想把模型打造成一个商业产品,则一定需要考虑成本问题。 

你的模型商业成本是多少?已经最低了吗? 

比如: 

❓如果有两种技术实现路径,第一个路径是用一个模型、一次实现,但是Prompt超级长(差不多2000字)、另一个是用workflow,涉及到2~3个模型,整个workflow的prompt字数可能在1000以内。一般哪个路径更便宜呢? 

——费用主要看模型的输入输出的token,如果都差不多的话,那价格也差不多。

作者主页:https://blog.csdn.net/weixin_45092438/category_12856410.html

一起“三连

阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

大模型微调 数据集构建 模型训练 效果评估
相关文章