Finetune 微调
在实际对话中,通常会有三种角色
- system:给定一些上下文信息,“你是一个专业的内科医生,能回答医疗领域的专业问题”
- User:用户的问题,”肿瘤如何治疗“
- Assistant:LLM的回答
增量预训练
让基座模型学习到一些垂类领域的新知识
学习时只需要学习知识,“珠穆朗玛峰是世界第一高峰”,并不需要问题(User)和系统提示(System),这些留空。计算损失只计算output
指令跟随微调
指令跟随微调,输入数据需要包含System、User、Assistant。计算损失只计算output
LoRA& QLoRA
XTuner
- 支持工具类模型的对话
- 支持从Huggingface和modelscope加载模型
- 原始问答对生成多种不同LLM的格式化问答对
- 多数据样本拼接,增强并行性
Tmux
用户与计算机的交互,称为一次会话(session)。会话的一个特点是,将窗口和其中运行的进程绑定,窗口关闭,则进程关闭。Tmux就是将窗口和其中的进程进行解绑。
# Ubuntu 或 Debian
$ sudo apt-get install tmux
# CentOS 或 Fedora
$ sudo yum install tmux
微调
安装环境
# 1.创建虚拟环境
/root/share/install_conda_env_internlm_base.sh xtuner0.1.9
# 2.进入虚拟环境
conda activate xtuner0.1.9
cd ~
mkdir xtuner019 && cd xtuner019
# 3.拉取Xtuner源码
git clone -b v0.1.9 https://github.com/InternLM/xtuner
# 4.从源码安装Xtuner
cd xtuner
pip install -e '.[all]'
配置文件
# 创建一个微调 oasst1 数据集的工作路径,进入
mkdir ~/ft-oasst1 && cd ~/ft-oasst1
# 列出所有内置配置
xtuner list-cfg
cd ~/ft-oasst1
#拷贝一个配置文件到当前目录
xtuner copy-cfg internlm_chat_7b_qlora_oasst1_e3 .
模型下载
数据集
cd ~/ft-oasst1
# ...-guanaco 后面有个空格和英文句号啊
cp -r /root/share/temp/datasets/openassistant-guanaco .
修改配置文件
训练
# 单卡
## 用刚才改好的config文件训练
xtuner train ./internlm_chat_7b_qlora_oasst1_e3_copy.py
# 多卡
NPROC_PER_NODE=${GPU_NUM} xtuner train ./internlm_chat_7b_qlora_oasst1_e3_copy.py
# 若要开启 deepspeed 加速,增加 --deepspeed deepspeed_zero2 即可