文章目录
XTuner 文档链接: XTuner-doc-cn
课程视频:https://www.bilibili.com/video/BV1G9SJYGEtD
使用 XTuner 微调 InternLM2-Chat-7B 实现自己的小助手认知
环境配置与数据准备
机器配置 30% A100
cd ~
git clone https://github.com/InternLM/Tutorial.git -b camp4
mkdir -p /root/finetune && cd /root/finetune
conda activate /root/share/pre_envs/pytorch2.3.1cu12.1
安装 XTuner。推荐源码安装
pip install -t /root/finetune/env 'xtuner[deepspeed]' timm==1.0.9 transformers==4.39.0
每次使用前,需要运行一下命令,把自定义的安装包的路径添加到PYTHONPATH环境变量中,这样python才能找到你安装的包(同一个终端下只需运行一次):
export PYTHONPATH=/root/finetune/env:$PYTHONPATH
export PATH=/root/finetune/env/bin:$PATH
验证安装 - 打印配置文件:
xtuner list-cfg
修改准备的数据
创建一个新的文件夹用于存储微调数据
mkdir -p /root/finetune/data && cd /root/finetune/data
cp -r /root/Tutorial/data/assistant_Tuner.jsonl /root/finetune/data
创建修改脚本
# 创建 `change_script.py` 文件
touch /root/finetune/data/change_script.py
import json
import argparse
from tqdm import tqdm
def process_line(line, old_text, new_text):
# 解析 JSON 行
data = json.loads(line)
# 递归函数来处理嵌套的字典和列表
def replace_text(obj):
if isinstance(obj, dict):
return {
k: replace_text(v) for k, v in obj.items()}
elif isinstance(obj, list