视频:https://www.bilibili.com/video/BV1yK4y1B75J/?spm_id_from=333.788&vd_source=d5e90f8fa067b4804697b319c7cc88e4
视频中跟的操作笔记:https://github.com/InternLM/tutorial/blob/main/xtuner/README.md
视频推荐star:https://github.com/internLM/xtuner
Finetune简介
system在一个训练数据集里面是固定的
增量预训练微调是陈述句,没有输入,放入assistant里面,计算损失。
stable defusion就是通过不同的LoRA模型,作为旁路分支,替换不同风格。
QLoRA在加载模型时量化为4-bit,不精确加载,相当于生锈的螺丝刀,减小显存开销。
XTuner 介绍
特色
🤓 傻瓜化: 以 配置文件 的形式封装了大部分微调场景,0基础的非专业人员也能一键开始微调。
🍃 轻量级: 对于 7B 参数量的LLM,微调所需的最小显存仅为 8GB : 消费级显卡✅,colab✅
adapter就是训练好的LoRA模型,在加载大模型的时候要一同加载进去。
多条训练数据拼接,统一计算loss。并行训练,增大显存。增强训练的效率。
QLoRA跟的是zero2
8GB显卡玩转LLM
动手实践
视频说要gite源码安装xtuner,但是我pip安装了,后面需要。
Xtuner开箱即用的配置:
baichuan2_13b_base_qlora_alpaca_e3 的意思是
<模型名字><模型参数><模型是base还是指令微调后的chat模型><微调算法><微调数据集><3个epoch>
训练先加载底座模型,Map内置好了一些函数,把不是标准格式的数据变成sys、user、assistant这样格式的数据。
01/11 20:02:26 - mmengine - INFO - Epoch(train) [1][ 10/2162] lr: 2.8573e-05 eta: 2:44:21 time: 4.5825 data_time: 0.0100 memory: 11668 loss: 1.5038
eta:预计训练时间,太长了。
- 需要加deepspeed,需要先删除微调路径:当前目录下的work_dirs。
- 需要保持远程连接,连接中断,训练中断,需要后台。下载tmux,中断连接,但是训练继续。
# 1. 加deepspeed,,建议下完tmux一起加
rm -rf work_dirs
xtuner train ./internlm_chat_7b_qlora_oasst1_e3_copy.py --deepspeed deepspeed_zero2
# 2. tmux下载
apt update -y
apt install tmux -y
# 3. 下载好tumx后新建任务名“finetune“,进入tumx行
tmux new -s finetune
# 虚拟的Ctrl+B D返回之前的命令行
# 再次返回之前新建的finetune tmux环境
tmux attach -t finetune
比较微调前和微调h后:
使用merge之后的模型提问:双眼视物模糊2个月,用英文是因为中文报错了,not a string。可能中文编码支持有问题。
使用intern7b的基座模型提问:
微调后有结果,遇到的问题主要是:
- git clone 有503报错,还好gitee有备份,基本上所有的下载不了的都可以试试同样路径下的gitee。
# 拉取 0.1.9 的版本源码
git clone -b v0.1.9 https://github.com/InternLM/xtuner
# 无法访问github的用户请从 gitee 拉取:
# git clone -b v0.1.9 https://gitee.com/Internlm/xtuner
其他无法拉取的资源保持https://gitee.com/Internlm/<所需资源>
- 有个user.png读不出来,来来回回下了好几次都不行,索性给他换了个可以读的图片:
FileNotFoundError: [Errno 2] No such file or directory: ‘doc/imgs/user.png’
我的解决办法:随机选择一个图片命名成发生错误的user.png
(personal_assistant) root@intern-studio:~/personal_assistant/code# cd InternLM/doc/imgs/
(personal_assistant) root@intern-studio:~/personal_assistant/code/InternLM/doc/imgs# ls
compass_support.svg license.svg pack_into_one.png robot.png torch_profiler_trace.png
flops.png logo.svg params_memory_sunburst.png sequence_parallel.png train_performance.png
hybrid_parallel_training.png modelscope_logo.png pipeline_schedule.png tensor_parallel.png user.png
(personal_assistant) root@intern-studio:~/personal_assistant/code/InternLM/doc/imgs# mv user.png user_o.png
(personal_assistant) root@intern-studio:~/personal_assistant/code/InternLM/doc/imgs# cp robot.png user.png