课程内容
目录
Finetune 简介
大语言模型是在海量的文本内容上,已无监督或半监督的方式进行训练,从而使大语言模型拥有了各行各业的知识。
微调是使大语言模型在具体的使用场景或垂直领域内可以输出更好的回答。
- 指令跟随微调
- 使用场景:让模型学会对话模板,根据人类指令进行对话
- 训练数据:高质量的对话、问答数据
- 对训练数据进行角色指定
- System
- 给定一些上下文信息,比如“你是一个安全的 AI 助手
- 微调的目标领域
- User
- 实际用户,会提出一些问题,比如“世界第一高峰是?”
- 训练数据的问
- Assistant
- 根据User的输入,结合System的上下文信息,做出回答,比如“珠穆朗玛峰”
- 训练数据的答
- 三种角色形成对话模板,加上数据后喂给模型进行微调训练
- System
不同模型有不同的对话模板
只用于微调阶段
-
部署模型进入预测阶段(用户与模型进行对话)
- 用户的输入默认放入User角色
- System部分由模板自动添加,该模板启动预测的时候,可以自定义
-
指令微调
根据对话模板产生的训练数据喂给模型后,模型对答案部分计算损失(Loss)
-
增量预训练微调
- 使用场景:让基座模型学习到一些新知识,如某个垂类领域的常识
- 训练数据:文章、书籍、代码等
-
给模型投喂新的知识(目标领域的文本内容)
- 增量训练不需要问题,只需要答案。所以对话模板里的system和user可以为空。
-
LoRA & QLoRA
- LoRA
- Stable Diffusion中在底模之上,套用一个LoRA模型,换LoRA就可以换一个出图的风格或人物。
- 对模型的参数全部调整的话,会需要很大的显存才能进行训练,用LoRA降低显存开销。
- LoRA
全参数微调、LoRA和QLoRA的比较
- 全参数微调
- 整个模型和模型参数的优化器都要加载到显存中
- LoRA微调
- 整个模型和LoRA的参数优化器都要加载到显存中
- QLoRA微调
- 整个模型使用4bit量化的方式加载到显存中(不那么精确的加载)
- QLoRA的参数优化器在CPU和GPU间Offload(调度,显存满了自动去内存里跑,XTuner整合了QLoRA的CPU调度)
XTuner 介绍
🤓 傻瓜化: 以 配置文件 的形式封装了大部分微调场景,0基础的非专业人员也能一键开始微调。
🍃 轻量级: 对于 7B 参数量的LLM,微调所需的最小显存仅为 8GB : 消费级显卡✅,colab✅
增强并行性,充分利用GPU资源(大显存情况下)。
8GB 显卡玩转 LLM
Flash Attention加速算法,默认启用
DeepSpeed ZeRO优化算法,需手动开启
显存占用情况