主要观点总结
本文介绍了大模型微调的过程和相关要点,包括数据集的获取与构建、模型基底的比较、模型训练、效果的评估以及模型的发布等内容。
关键观点总结
关键观点1: 大模型微调的过程
文章介绍了大模型微调的全过程,包括数据集的准备、模型的训练、参数的调整等。
关键观点2: 数据集的获取与构建
文章提到了数据集的获取方式,包括从相关开源平台搜索并下载,尝试从网站上爬取,以及自行构建数据集等。
关键观点3: 模型基底的比较
文章强调了选择合适的模型基底的重要性,并介绍了如何在不同垂直领域进行测试与总结。
关键观点4: 模型训练
文章介绍了模型训练的过程,包括参数的选择、训练次数的控制等。
关键观点5: 效果的评估
文章提到了如何评估模型的效果,包括使用客观和主观的标准来衡量,并介绍了过拟合的概念及其解决方法。
关键观点6: 模型的发布
文章介绍了模型发布后的调用方式,以及相关成本和考虑因素。
关键观点7: 其他考虑因素
文章还提到了在实际过程中需要考虑的其他因素,如模型的每一次测试、训练的成本,以及如何将模型打造成商业产品等。
正文
大模型微调的过程
💡建议严格按照此流程来,不要跳步,不然可能会做无用功。 比如如果没有好好构建数据集,最后发现微调模型效果不佳是数据集的问题,就事倍功半了。 方案的构思与落地:几种可能的选择
我有个问题,我现在写了一个prompt,用户可以自己输入内容,但我不想让用户看见这个prompt,只有一个输入区在那儿,要怎么实现呢? - 自己想要做的到底是什么?它要达到什么效果?预期目标是什么?
- 自己做的到底是一个广而泛之的大模型、还是一个封装好的产品(如智能体)?
- 创新点是在于专业领域的深耕(意味着需要训练新模型)、还是已有内容的衔接(意味着调用已有模型,用到工作流),还是二者都有?
——Agent指的是基于人工智能技术,尤其是大型语言模型(LLM),能够感知和理解环境,并采取行动以完成目标的智能实体 在讯飞MaaS上,如果我们想做一个Agent,可以在大模型应用平台中实现。 ——工作流(Workflow)是指完成特定任务或一系列任务的步骤和过程。在讯飞MaaS的大模型应用平台中有对应的模块。目前已经上线的节点有:大模型、代码、决策、分支器、变量提取器、文本拼接等等。 如果你的idea需要训练新模型,那么可以继续往下。但如果你的idea只是涉及已有模型的流程拼接,则可以直接用workflow实现,不涉及以下过程。 数据集的获取与构建
数据集的获取
对于新手而言,我们可以根据数据集的可获得性分为两种:公开已有的、难以获得的。 ——最简单的数据集获取方案是去相关开源平台搜索并下载,如:github、hugging face、魔搭等平台。尤其是小说等文本类数据特别多。 然而,自行构建几百上千条数据集非常麻烦,如何能够快速实现这一过程?这里介绍两个思路 - 借助讯飞MaaS平台的数据增强功能。可以先尝试自己手搓50条数据,然后再借助讯飞MAAS平台【数据增强】功能让数据翻倍。
- 借助大模型快速构建数据集。手搓了几十条数据后,把数据作为示例丢给大模型,让它输出类似的内容
- ❗一开始不要让大模型生成太多,建议第一轮先让大模型生成20条,精读这20条,找大模型经常会犯的错误。然后把这些错误作为错误示例加入到Prompt中
- 个人经验:大模型一轮可以做到生成200条及以上的数据
参照示例,输出20个类似的“近期运气”问题给我,注意要生活化、语言不要太夸张,最好不要有场景、有类似于“在活动中”、“在比赛中”之类的定语与状语;语句不要太累赘、尤其是不要有太多定语,正常人不这样说话。示例:我这个季度顺利吗?
我这个季度会发财吗?
最近有哪些事情在等着我?
最近会发生什么事情?
近期我能否被幸运之神垂青?
数据的清洗
原始数据集并不符合模型训练可以接受的形式,因此需要对原始数据进行清理,处理为模型可以学习的格式。 在讯飞MaaS平台中,微调数据集通常以AIpaca的形式构建。具体内容详见讯飞开放平台说明。 AIpaca
特点:结构简单,适用于文本生成、翻译、总结等任务,尤其是单轮的、任务导向的指令微调 - instruction任务的指令,类似于用户的直接输入
- input任务所需的输入内容。通常情况下为空(因为若任务是开放式的,或者不需要明确输入,可以为空字符串)
- output在给定指令和输入的情况下,模型需要生成的期望输出,也就是对应的正确结果或参考答案。
[
{
"instruction": "人类指令(必填)",
"input": "人类输入(选填)",
"output": "模型回答(必填)",
"system": "系统提示词(选填)",
"history": [
["第一轮指令(选填)", "第一轮回答(选填)"],
["第二轮指令(选填)", "第二轮回答(选填)"]
]
}
]
简单来说,这个结构可以理解为:请大模型记住现在的角色history,当用户输入类似于instruction内容的时候,大模型需要返回类似于output的结果 模型基底的比较
在正式开始调试模型前,特别重要的是选择一个合适的模型基底。尽管讯飞MaaS平台已经对模型擅长的内容有了一些介绍,但具体到各个垂直领域,还是需要自行测试与总结。 其中,讯飞MaaS平台上提供的Llama3模型主要基于英文语料(训练语料中只有0.2%是中文)所以经常会有同学有以下问题: ——输入自己的中文数据集,然后选择全参数微调,然后再次进行lora训练。 同时,也可以在自己的中文数据集的system部分加入“请输出中文”(但目前讯飞MaaS平台好像不支持这个) 模型训练
构建好数据集、选择好模型基底后,可以开始训练模型啦! 参数的选择
💡个人的经验是,需要尤其注意其中的“训练次数”!若数据集超过10000了,训练次数最高也要低于5,不然会出现过拟合问题(下章) 效果的评估
对于模型效果的评估,我们可以用客观+主观的标准来衡量。尤其要注意出现过拟合问题。 ——过拟合指的是模型学习数据时,不仅记住了数据中的细节,还把偶然出现、不重要的东西(即“噪声”)同时记住了。 主观的标准:根据自己对产品的预期,确定预期目标效果的评估框架。这是最重要的 Loss曲线是用于评估模型学习状态(学习损失)的曲线。 理想的拟合状态
有待提升的拟合状态
以下内容来自Cheng Xiaojuan的笔记和机器学习术语表 表现1:loss下降的非常平缓,以至于似乎并没有下降,这说明模型根本没从数据中学到东西(欠拟合)。 表现4:loss值过低,快到0.2、0.3了(来自@August) 模型的发布
模型做好发布后,可以直接调用API,请求地址如下: 调用API可参考以下文档:开源大模型 Web API文档 还有更多需要考虑……
目前得益于讯飞MaaS平台的开放性和公益性,模型的训练、发布、调用很多都不需要考虑成本问题。 然而在实际过程中,模型的每一次测试、训练等都是有成本的。如果想把模型打造成一个商业产品,则一定需要考虑成本问题。 ❓如果有两种技术实现路径,第一个路径是用一个模型、一次实现,但是Prompt超级长(差不多2000字)、另一个是用workflow,涉及到2~3个模型,整个workflow的prompt字数可能在1000以内。一般哪个路径更便宜呢? ——费用主要看模型的输入输出的token,如果都差不多的话,那价格也差不多。作者主页:https://blog.csdn.net/weixin_45092438/category_12856410.html