积分商城网站建设,做电商的步骤,wordpress 导入插件,优化设计三要素文章目录 前言笔记正文XTuner支持模型和数据集 微调原理跟随文档学习快速上手自定义微调准备数据准备配置文件 MS-Agent微调 前言
本文是对于InternLM全链路开源体系系列课程的学习笔记。【XTuner 大模型单卡低成本微调实战】 https://www.bilibili.com/video/BV1yK4y1B75J/?… 文章目录 前言笔记正文XTuner支持模型和数据集 微调原理跟随文档学习快速上手自定义微调准备数据准备配置文件 MS-Agent微调 前言
本文是对于InternLM全链路开源体系系列课程的学习笔记。【XTuner 大模型单卡低成本微调实战】 https://www.bilibili.com/video/BV1yK4y1B75J/?share_sourcecopy_webvd_source99d9a9488d6d14ace3c7925a3e19793e
笔记正文
XTuner
地址XTuner
一个大预言模型微调工具箱
傻瓜化以配置文件的形式封装了大部分微调场景轻量级对于7B参数量的LLM微调所需的最小显存仅为8GB。
支持模型和数据集 微调原理
LoRA只对玩具中某些零件记性改动而不是对整个玩具进行全面改动QLoRALoRA的一种改进如果你手里只有一把生锈的螺丝刀也能改造你的玩具。
跟随文档学习
文档提供了三个微调的例子分别叫做快速上手、自定义微调和MS-Agent微调。
快速上手
首先介绍了如何安装微调的XTuner环境然后介绍了具有多个开箱即用的配置文件并对于这些配置文件的名称进行了解释 例如文件名internlm_chat_7b_qlora_oasst1_e3
模型名internlm_chat_7b使用算法qlora数据集oasst1把数据集跑几次跑三次e3
然后根据实际模型、数据集存放的位置、实际训练需求修改配置文件中的信息。
接着就可以开始微调了。
微调训练完成后应该在work_dirs的目录下产生pth权重需要将其转换成hf格式的模型
xtuner convert pth_to_hf ${CONFIG_NAME_OR_PATH} ${PTH_file_dir} ${SAVE_PATH}转换后生成的文件应该是
|-- README.md
|-- adapter_config.json
|-- adapter_model.bin
-- xtuner_config.py可以理解为LoRA模型文件Adapter 然后将hf的adapter合并到原LLM并与之对话这些需求xtuner都提供了相应的命令行工具。
自定义微调
这个部分演示了在实际需求下如何准备数据、修改配置文件、进行微调。
准备数据
将表格或者其他数据格式数据转化成jsonL格式。也就是json列表
[{conversation:[{system: xxx,input: xxx,output: xxx}]
},
{conversation:[{system: xxx,input: xxx,output: xxx}]
}]然后划分训练集和测试集等。
准备配置文件
可以从下面的对配置文件的修改看出如何使用这种所谓的“自定义数据集”进行微调训练。
# 修改import部分
- from xtuner.dataset.map_fns import oasst1_map_fn, template_map_fn_factoryfrom xtuner.dataset.map_fns import template_map_fn_factory# 修改模型为本地路径
- pretrained_model_name_or_path internlm/internlm-chat-7bpretrained_model_name_or_path ./internlm-chat-7b# 修改训练数据为 MedQA2019-structured-train.jsonl 路径
- data_path timdettmers/openassistant-guanacodata_path MedQA2019-structured-train.jsonl# 修改 train_dataset 对象
train_dataset dict(typeprocess_hf_dataset,
- datasetdict(typeload_dataset, pathdata_path),datasetdict(typeload_dataset, pathjson, data_filesdict(traindata_path)),tokenizertokenizer,max_lengthmax_length,
- dataset_map_fnalpaca_map_fn,dataset_map_fnNone,template_map_fndict(typetemplate_map_fn_factory, templateprompt_template),remove_unused_columnsTrue,shuffle_before_packTrue,pack_to_max_lengthpack_to_max_length)然后和前文差不多。
MS-Agent微调
数据也是由jsonl格式的但是与前面的input、output不同现在的每个conversations则需要赋予不同的身份了。
system: 表示给模型前置的人设输入其中有告诉模型如何调用插件以及生成请求user: 表示用户的输入 prompt分为两种通用生成的prompt和调用插件需求的 promptassistant: 为模型的回复。其中会包括插件调用代码和执行代码调用代码是要 LLM 生成的而执行代码是调用服务来生成结果的
而assistant则需要包含工具调用和返回分别叫做思考阶段和执行阶段这两个阶段是不输出的具体格式如下 图片来源https://github.com/InternLM/tutorial/blob/main/xtuner/README.md
之后就是找到对应的训练配置文件根据实际情况等进行修改即可。