目录
- 总体思路
- 实操案例
- 数据集构造
- 收集数据
- 数据构造
- 模型微调
- 选择模型
- 选择数据集
- 参数配置
- 开始训练
- 模型使用
总体思路
微调大模型主要以开源的通用大模型为基础,喂给模型自己准备的数据,将通用的大模型往自己想要的方向引导,变成更偏向某一领域的大模型。其中最主要的是数据,你希望大模型变成一个什么的大模型,就需要给他喂相应的数据。然后就是算力,微调的代码比较简单,可以自己搭一个环境,写几行模型训练的代码就能训练,也可以找一个模型训练平台,0代码进行大模型微调。比如讯飞星辰平台。
实操案例
以医疗方面的对话大模型为例,演示一下如何微调一个能够回答医疗方面问题的大模型。
数据集构造
收集数据
因为是医疗相关的大模型,需要有医疗相关的数据,比如患者与医生的对话数据集,通过网上搜索,在github上搜索到一份中文医疗对话数据集。
一共有内科,男科,妇科,肿瘤科,儿科和外科的数据,已经涵盖了大部分常见医疗问题。
数据构造
微调大模型,要求的数据格式分为两种,Alpaca和ShareGPT,具体如下,其实是JSON文件格式,只是必须按照相应的字段名称进行存储。
原始数据如下:
需要将ask字段对应的内容变成Alpaca格式中的instruction字段中,把answer的内容变到output字段中。处理代码可以参考下面代码
处理完的数据长下面这样:
模型微调
这里采用讯飞星辰平台进行模型微调训练
选择模型
输入模型名称,因为是医疗对话模型,回答患者问题,因此选择文本对话模型,在选择基础模型,这个根据问题的复杂度,越复杂需要选择的模型就越大,简单的可以选择小模型,减少训练时长。
选择数据集
点击创建数据集,创建自己自定义的数据集。
将自己构造的数据集拖到数据导入框中,完成确认即可。
参数配置
大部分参数可以不改变,因为我的数据集8万条,数据量还可以,设置训练次数3次就行,也可以默认参数即可,后续根据模型的表现进行参数调整,提高模型效果。
开始训练
耐心等待模型训练结束。
模型使用
训练完成后,可以将模型发布成一个服务,进行接口调用使用。