LLaMA-Factory-行业垂直大模型微调训练·可行性实践

背景

  • 行业:生物试剂
  • 手上有自产试剂的所有说明书,大概300多份
  • 不限于说明书的资料

目标

希望微调出一个名字为 dayou 的自产生物试剂行业垂直大语言模型。首要目标是能解答说明书内的相关内容,继而继续增加数据集,完善该 dayou 自训练大模型,或者分领域分别训练 dayou-saledyou-manualdyou-tech大模型。

本次可行性验证,我们从说明书选取如下2个试剂产品

  • IMDM培养基 (6016311 IMDM培养基说明书(中文)–C2–A4.docx)
  • TransFx转染用无血清培养基 (6066411 TransFx转染用无血清培养基说明书–C0.docx)

通过AI对2个产品的docx文件进行制作QA的数据集。

实践

  • 微调模型选择:Qwen2.5-7B-Instruct
  • 微调框架选择:LLaMA-Factory
  • GPU显卡选择: RTX 4090
  • 数据集制作:easy-dataset

算力准备及训练环境准备

本次实验使用AutoDL AI算力云 租借算力,采用GPU卡进行训练,使用Ubuntu 24.04LTS版本
IX3I8x

AutoDL的系统盘和数据盘可以通过source ~/.bashrc 查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ source ~/.bashrc
+-----------------------------------------------AutoDL-----------------------------------------------------+
目录说明:
╔═════════════════╦════════╦════╦══════════════════════════════════════════════════════════════╗
║目录 ║名称 ║速度 ║说明 ║
╠═════════════════╬════════╬════╬══════════════════════════════════════════════════════════════╣
║/ ║系 统 盘 ║一般║实例关机数据不会丢失,可存放代码等。会随保存镜像一起保存。 ║
║/root/autodl-tmp ║数 据 盘 ║ 快 ║实例关机数据不会丢失,可存放读写IO要求高的数据。但不会随保存镜像一起保存 ║
╚═════════════════╩════════╩════╩═══════════════════════════════════════════════════════════════╝
CPU :16 核心
内存:120 GB
GPU :NVIDIA GeForce RTX 4090, 1
存储:
系 统 盘/ :29% 8.6G/30G
数 据 盘/root/autodl-tmp:1% 72M/50G

LLaMA-Factory搭建

1
2
3
4
5
6
7
8
9
10
11
12
13
## 克隆项目
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
## 创建环境
conda create -n llamafactory python=3.10
## 激活环境
conda activate llamafactory
## 安装依赖
pip install -e ".[torch,metrics]" --no-build-isolation -i https://mirrors.aliyun.com/pypi/simple
## 执行webui
llamafactory-cli webui
## 后台运行
nohup llamafactory-cli webui > webui.log 2>&1 &
  • 下载模型
    a0F1dg
    界面中选择Qwen2.5-7B-Instruct,并加载模型,会自动下载到默认路径: /root/.cache/modelscope/hub/models/Qwen,我们自己手动下载并指定路径。
    1
    2
    3
    4
    5
    6
    7
    8
    pip install modelscope
    modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir /root/autodl-tmp/LLaMA-Factory/models/Qwen/Qwen2.5-7B-Instruct
    modelscope download --model Qwen/Qwen2.5-1.5B-Instruct --local_dir /root/autodl-tmp/LLaMA-Factory/models/Qwen/Qwen2.5-1.5B-Instruct

    apt install git-lfs
    git lfs install
    git clone https://www.modelscope.cn/Qwen/Qwen2.5-7B-Instruct.git /root/autodl-tmp/LLaMA-Factory/models/Qwen
    git clone https://www.modelscope.cn/Qwen/wen2.5-1.5B-Instruct.git /root/autodl-tmp/LLaMA-Factory/models/Qwen

数据集准备

我们使用easy-dataset来简化我们的数据集制作流程,通过大模型自动生成QA数据集。

  • 初始化数据库文件。
    1
    2
    3
    4
    git clone https://github.com/ConardLi/easy-dataset.git
    cd easy-dataset
    npm install
    npm run db:push
  • 部署
    docker-compose.yml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    services:
    easy-dataset:
    image: ghcr.io/conardli/easy-dataset
    container_name: easy-dataset
    ports:
    - '1717:1717'
    volumes:
    - ./local-db:/app/local-db
    - ./prisma:/app/prisma # 如果需要挂载请先手动初始化数据库文件
    restart: unless-stopped
    1
    docker-compose up -d
    就此我们部署好我们的数据集制作工具。
    wBoKqJ

我们来制作2个产品的数据集

  • IMDM培养基
    hvvrd7
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [
    {
    "instruction": "IMDM与RPMI-1640培养基在酚红含量上有何差异",
    "input": "",
    "output": "IMDM培养基含有酚红,其含量为15 mg/L。而RPMI-1640培养基的酚红含量在文档中未提及,表明该产品标签中未列出酚红作为成分。因此,IMDM与RPMI-1640培养基在酚红含量上的主要差异在于IMDM明确包含酚红,而RPMI-1640未标明含有该成分。",
    "system": "你是一个由“达科为”公司自产的生物试剂产品,品牌名为:“达优”,产品名称是:“IMDM培养基”,有一个规格,货号为:“6016311”"
    },
    {
    "instruction": "IMDM培养基是否含有抗生素?",
    "input": "",
    "output": "IMDM培养基不含抗生素。该培养基是一种改进型的DMEM培养基,特别设计用于红细胞和巨噬细胞前体、T淋巴细胞、B淋巴细胞、骨髓造血细胞和淋巴瘤细胞的培养。在产品参数中明确指出,该培养基不含抗生素成分,需额外添加胎牛血清等培养添加物以满足细胞生长的需求。",
    "system": "你是一个由“达科为”公司自产的生物试剂产品,品牌名为:“达优”,产品名称是:“IMDM培养基”,有一个规格,货号为:“6016311”"
    },
    ...一下省略,共41个问题
    ]
  • TransFx转染用无血清培养基
    cAEnPF
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [
    {
    "instruction": "分析无血清培养基中不含酚红、HEPES和胰岛素成分对减少转染试剂用量和避免血清干扰的实证数据支持。",
    "input": "",
    "output": "无血清培养基中不含酚红、HEPES和胰岛素的设计可有效减少转染试剂用量并提升转染效率。酚红作为pH指示剂,可能干扰细胞代谢及外源物质摄取;HEPES缓冲系统在某些情况下会与转染试剂发生非特异性结合,降低其活性。胰岛素则可能影响细胞膜通透性,干扰阳离子脂质体或聚合物介导的核酸传递。实验证明,在不含这些成分的TransFx培养基中,转染试剂(如TransIT-X2)与核酸复合物更稳定,细胞摄取效率提高,从而减少试剂用量并避免血清成分的干扰,最终实现更高效的基因转染。",
    "system": "你是一个由“达科为”公司自产的生物试剂产品,品牌名为:“达优”,产品名称是:“TransFx转染用无血清培养基”,有一个规格,货号为:“6066411”"
    },
    {
    "instruction": "比较不同储存条件(如温度2℃~8℃和避光)对TransFx培养基稳定性和转染效果的影响机制。",
    "input": "",
    "output": "TransFx转染用无血清培养基的稳定性与活性受储存条件影响显著。其推荐储存温度为2℃~8℃,该温度范围可维持培养基中植物源重组生长因子(如IGF-1和EGF)、氨基酸(如L-谷氨酰胺)及微量元素的化学稳定性,防止降解或失活。高温可能加速成分氧化或降解,影响其支持转染的能力。同时,避光保存可防止光敏感成分(如酚红替代物及某些维生素或辅因子)发生光化学反应,从而维持培养基的pH稳定性和生物活性。若未避光或温度波动较大,可能降低转染效率,影响核酸-转染试剂复合物的形成与细胞摄取能力,最终削弱基因表达效果。因此,遵循推荐储存条件对于维持TransFx培养基功能至关重要。",
    "system": "你是一个由“达科为”公司自产的生物试剂产品,品牌名为:“达优”,产品名称是:“TransFx转染用无血清培养基”,有一个规格,货号为:“6066411”"
    },
    ...一下省略,共43个问题
    ]

训练

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
llamafactory-cli train \
--stage sft \
--do_train True \
--model_name_or_path /root/autodl-tmp/LLaMA-Factory/models/Qwen/Qwen2.5-3B-Instruct \
--preprocessing_num_workers 16 \
--finetuning_type lora \
--template qwen \
--flash_attn auto \
--dataset_dir data/dayou/ \
--dataset identity,[Easy Dataset] [oLYDc6WUW-2H] ShareGPT,[Easy Dataset] [ag7XS4Wdb3LM] ShareGPT \
--cutoff_len 1024 \
--learning_rate 0.0001 \
--num_train_epochs 20.0 \
--max_samples 100000 \
--per_device_train_batch_size 2 \
--gradient_accumulation_steps 16 \
--lr_scheduler_type cosine \
--max_grad_norm 1.0 \
--logging_steps 5 \
--save_steps 50 \
--warmup_steps 4 \
--packing False \
--enable_thinking True \
--report_to none \
--output_dir saves/Qwen2.5-3B-Instruct/lora/dayou_v6 \
--bf16 True \
--plot_loss True \
--trust_remote_code True \
--ddp_timeout 180000000 \
--include_num_input_tokens_seen True \
--optim adamw_torch \
--adapter_name_or_path saves/Qwen2.5-3B-Instruct/lora/dayou_v6 \
--lora_rank 16 \
--lora_alpha 32 \
--lora_dropout 0 \
--lora_target all

可行性总结与分析