【书生·浦语系列课程之】XTuner: 自己微调开源模型 InternLM #203
maxchiron
started this conversation in
Show and tell
Replies: 1 comment
-
你好,我想询问下,生成的test数据集,在微调的时候不需要使用吗,该如何送入模型中 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
注意:本教程使用 xtuner 0.1.9 版本
若需要跟着本教程一步一步完成,建议执行如下安装步骤:
若出现莫名其妙报错,请尝试更换以下包的版本:
CUDA相关:(如果有报错再检查,没报错不用看)
目录
概述
Xtuner
一个大语言模型微调工具箱。由 MMRazor 和 MMDeploy 联合开发。
支持的开源LLM (2023.11.01)
特色
微调原理
※ 因此,你找到了一种叫 LoRA 的方法:只对玩具中的某些零件进行改动,而不是对整个玩具进行全面改动。
※ 而 QLoRA 是 LoRA 的一种改进:如果你手里只有一把生锈的螺丝刀,也能改造你的玩具。
快速上手
平台
Ubuntu + Anaconda + CUDA/CUDNN
安装
见文章开头
微调
XTuner 提供多个开箱即用的配置文件,用户可以通过下列命令查看:
注意最后有个英文句号,代表复制到当前路径
不用xtuner默认的
从huggingface拉取模型
,而是`提前从OpenXLab下载模型到本地不用xtuner默认的
从huggingface拉取数据集
,而是提前把数据集下载到本地
https://huggingface.co/datasets/timdettmers/openassistant-guanaco/tree/main
把这两个数据集放到
openassistant-guanaco
文件夹此时,当前路径的文件应该长这样:
修改其中的模型和数据集为 本地路径
常用超参
例如,我们可以利用 QLoRA 算法在 oasst1 数据集上微调 InternLM-7B:
单卡
多卡
NPROC_PER_NODE=${GPU_NUM} xtuner train ./internlm_chat_7b_qlora_oasst1_e3_copy.py
跑完训练后,当前路径应该长这样:
在本示例中,为:
此时,路径中应该长这样:
此时,hf文件夹即为我们平时所理解的所谓 “Lora模型文件”
部署与测试
xtuner chat
的启动参数自定义微调
概述
场景需求
基于 InternLM-chat-7B-V1.1模型,用MedQA数据集进行微调,将其往
医学问答
领域对齐。真实数据预览
数据准备
原格式:(.xlsx)
目标格式:(.jsonL)
🧠通过python脚本:将.xlsx中的 问题 和 回答 两列 提取出来,再放入.jsonL文件的每个conversation的input和output中。
生成的python代码:
执行python脚本,获得格式化后的数据集:
格式化后的数据集长这样:
生成的python代码:
此时,我们重新建一个文件夹来玩“微调自定义数据集”
把前面下载好的internlm-chat-7b-v1_1模型文件夹拷贝过来,或者重新运行下载代码也行。最好不要用软连接,有可能会出问题。因为openxlab本身已使用软连接管理模型路径,所以即使重新运行下载代码,也会很快完成。
别忘了把自定义数据集,即几个.jsonL,也传到服务器上。
减号代表要删除的行,加号代表要增加的行。
同前述,这里不赘述了。
同前述。
【补充】用MS-Agent数据集 赋予LLM以Agent能力
概述
MSAgent 数据集每条样本包含一个对话列表(conversations),其里面包含了 system、user、assistant 三种字段。其中:
system: 表示给模型前置的人设输入,其中有告诉模型如何调用插件以及生成请求
user: 表示用户的输入prompt,分为两种,通用生成的prompt和调用插件需求的 prompt
assistant: 为模型的回复。其中会包括插件调用代码和执行代码,调用代码是要 LLM 生成的,而执行代码是调用服务来生成结果的
一条调用网页搜索插件查询“上海明天天气”的数据样本示例如下图所示:
步骤
步骤0: 查看并复制配置文件
步骤1: 修改配置文件
Beta Was this translation helpful? Give feedback.
All reactions