Files

3.2 KiB
Raw Permalink Blame History

部署指南 —— Qwen2.5-1.5B 材料科学问答模型(bf16 全量微调)

本项目基于 Qwen/Qwen2.5-1.5B-Instruct,在 样本收集.csv(材料科学问答对)上做因果语言模型微调,单卡 16GB 显存可训练。

一、环境与依赖

# Python 3.10+
pip install torch torchvision torchaudio
pip install transformers>=4.44.0 accelerate
pip install pandas tqdm

验证 CUDA

python -c "import torch; print('CUDA:', torch.cuda.is_available(), torch.cuda.get_device_name(0))"

国内加速下载:在脚本顶部已设置 os.environ["HF_ENDPOINT"] = "https://hf-mirror.com",无需额外操作。 若想更快可安装 hf_transfer 并设 HF_HUB_ENABLE_HF_TRANSFER=1

二、文件结构

gpt-chemistry/
├── 样本收集.csv      # 训练数据(列:问题、回答)
├── main.py           # 训练脚本(bf16 全量微调)
├── test.py           # 推理回测脚本
├── download.py       # 模型预热下载脚本
├── deploy.md         # 本指南
└── output/           # 训练产物(自动生成)
    ├── model.pth     # state_dict
    └── best_model/   # 完整模型 + tokenizer(可直接 from_pretrained

三、方案说明

项目 配置
基座模型 Qwen/Qwen2.5-1.5B-Instruct
精度 bfloat16
微调方式 全量参数微调
梯度检查点 开启
显存占用 约 8~10GB(单卡 16GB 富余)
训练参数量 1.5B 全部

1.5B 用 bf16 全量微调约需 8~10GB 显存,16GB 卡无需量化即可跑通。相比 QLoRA 全量微调收敛更稳、效果更好。

四、下载模型(可选预热)

python download.py

download.py 会带进度条把模型拉到本地缓存,之后 main.py / test.py 自动命中缓存,不再重复下载。

五、训练流程

  1. 确认 样本收集.csvmain.py 同目录,列名为 问题回答

  2. 启动训练:

    python main.py
    
  3. 训练产物保存在 ./output/best_model/,可直接 from_pretrained 加载。

  4. 终端 tqdm 实时显示 lossavg_losslr,每个 epoch 结束保存当前最优。

六、推理 / 测试

python test.py

test.py 自动从 csv 取前 10 条问题回测,对比「标准答案」与「模型回答」。

交互式问答:

from test import chat
print(chat("MOF 是什么材料?"))

七、常见问题

  • OOM(显存不足):降低 batch_size 为 2 或 1 → 减小 max_length 至 384 → 换 Qwen2.5-0.5B。
  • 下载慢:确认已换源(脚本内已设 hf-mirror),或安装 hf_transfer 加速。
  • 中文乱码:确认 样本收集.csv 为 UTF-8 编码。
  • 生成重复:推理时提高 repetition_penalty(1.1~1.3) 或降低 temperature
  • 训练不收敛:全量微调学习率建议 1e-5 ~ 3e-5,默认 2e-5
  • 想用 LoRA:1.5B 全量微调显存足够,一般无需 LoRA;若要省显存可参考 PEFT 文档注入 LoRA。