OpenI_LLM_Finetune_Example
项目简介
本项目使用LLama Factory工具,结合启智社区提供的免费AI算力进行微调。支持GPU、NPU和天数GPGPU微调。同时使用启智社区提供的AI任务模板功能,可以轻松实现一键微调。
实现原理:
因为启智社区的AI训练任务可以方便地选择平台提供的数据集和模型, 指定运行脚本和运行参数,所以只需要在运行脚本中准备好LLama Factory环境,解析LLama Factory支持的运行参数,适配启智社区AI任务的模型和数据集加载的路径,然后调用LLama Factory命令就可以实现微调训练;最后再通过LLama Factory命令合并模型。
如何使用本项目:
-
fork本项目
-
查看项目代码页的相应模板,选择一个模板,点击运行
-
点击运行后,进入微调训练任务创建页面
点击选择模型,选择数据集,替换为您要微调的模型(需要是llama factory工具支持的模型)和数据集。启智社区已经提供了很多的开源模型,如果您要微调的模型在启智社区找不到,可以尝试使用启智社区的迁移外部模型功能,先迁移的社区再使用。
为了适配启智社区的数据集加载方式,数据集的要求与llama factory工具稍有不同,
如何制作数据集请参考数据集准备
-
修改运行参数:
根据选择的模型和数据集,需要修改上图蓝框中的3个参数,
model_name对应选择的模型名字,
dataset对应选择的数据集的名称,多个数据集用英文逗号分隔
template参数和模型相关,参考llama_factory Readme 模型部分的说明
其它参数根据训练实际需要调整即可
-
点击新建,等待任务被调度运行
-
运行结束后,在任务详情中可以查看结果文件,并把结果保存为模型,保存为模型后还可以利用平台的在线推理功能体验微调的模型。
-
在详情页中有个保存云脑任务模板按钮,可以把任务保存为模板,这样下次就可以像本项目一样一键运行。如果您建了一些有意思的微调任务模板,也可以分享给本项目作为模板,共享给社区用户。
深度定制:
-
如果模型微调失败,一般是由于一些模型对包的版本有要求,查看任务详情中的日志确定具体的包及版本,修改finetune.py的model_adapter方法,安装特定版本的包;
-
目前本项目所用的LLama Factory并不是最新版本,如果要使用最新版本,可以自己把最新版本LLama Factory先迁移到启智社区,然后修改finetune.py,将git clone的地址替换为你自己的地址;
-
如果有哪些LLama Factory的参数脚本中还没有涵盖,可以在finetune.py中增加,也欢迎在项目中提issue,帮助我们一起优化脚本。
其他说明:
-
GPU镜像的torch版本是2.2.0,NPU镜像的torch版本是2.1.0。
-
finetune_gpgpu.py是适合天数GPU的运行文件,因为芯片限制,与finetune.py的唯一区别是安装llama factory采用的命令为pip install -e . --no-dependencies(正常安装会破坏环境,导致llama factory无法运行),天数的镜像torch版本为1.13.1,所以可能有些模型的微调支持不了。
-
百川模型微调失败解决办法:根据https://github.com/baichuan-inc/Baichuan2/issues/204, 需要自己把百川模型的tokenization_baichuan.py修改后再上传到社区上再微调。 (采用降低transformer版本的方法llama factory无法运行,只能先修改文件)