基于 LLaMA-Factory 的 Qwen3.5-4B 医疗助手微调指南
针对垂直领域的医疗问答场景,利用开源大模型构建专业助手已成为趋势。Qwen3.5-4B 参数量适中,在效果与显存占用之间取得了不错的平衡;配合 LLaMA-Factory 这一成熟框架,开发者可以快速完成从环境搭建到模型部署的全流程。
硬件与环境准备
LoRA 微调对显存要求相对友好。对于 4B 模型,12GB 显存的显卡(如 RTX 4070)即可满足基础需求。若资源有限,QLoRA 量化方案能进一步降低门槛。
| 微调方式 | 4B 模型显存需求 | 推荐显卡 |
|---|---|---|
| LoRA (16-bit) | ~10-12 GB | RTX 4070 / RTX 3090 |
| QLoRA (8-bit) | ~6-8 GB | RTX 4060 / RTX 3070 |
| QLoRA (4-bit) | ~4-6 GB | RTX 3060 |
软件层面建议 Python 3.11+,PyTorch 2.0 以上,CUDA 版本推荐 12.x 以保证兼容性。
模型下载与安装
获取基座模型
国内用户推荐使用魔搭社区下载,速度较快:
# 方式一:Python 脚本下载
pip install modelscope
from modelscope import snapshot_download
model_dir = snapshot_download('Qwen/Qwen3.5-4B')
print(f"模型已下载到:{model_dir}")
# 方式二:命令行下载
modelscape download --model Qwen/Qwen3.5-4B --local_dir ./models/Qwen3.5-4B
*注意:模型体积约 9.3GB,建议预留足够空间并校验文件完整性。
搭建 LLaMA-Factory 环境
克隆仓库并安装依赖:
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .
pip install -r requirements/metrics.txt
# 如需 DeepSpeed 加速可额外安装
pip install -r requirements/deepspeed.txt
安装完成后执行 llamafactory-cli version 确认环境正常。
数据集构建
数据质量直接决定微调上限。医疗领域建议使用结构清晰的问答对,覆盖内科、外科等常见科室。
LLaMA-Factory 支持 JSON 格式,字段映射如下:
[
{
"instruction": "你是一个专业的医疗助手,请根据患者描述给出建议。",
"input": "我最近总是头痛,尤其是下午的时候,已经持续一周了。",
"output": "持续性头痛需要关注。建议您先排除以下几个常见原因:1)睡眠质量,2)用眼过度,3)颈椎问题。如果休息后仍不缓解,建议到医院神经内科就诊。"
}
]
将处理好的数据放入 data/ 目录,并在 dataset_info.json 中注册配置:
{
"medical_qa": {
"file_name": "medical_qa.json",
"columns": {
"prompt": "instruction",
"query": "input",
"response": "output"
}
}
}
训练配置与执行
配置文件是核心所在。在 examples/train_lora/ 下创建 qwen35_medical_lora.yaml:
### 模型配置 ###
model_name_or_path: ./models/Qwen3.5-4B
trust_remote_code: true
### 微调方法 ###
stage: sft
do_train: true
finetuning_type: lora
lora_rank: 64
lora_alpha: 128
lora_target: all
### 数据集配置 ###
dataset: medical_qa
template: qwen3
cutoff_len: 2048
preprocessing_num_workers: 8
### 训练参数 ###
output_dir: ./output/qwen35_medical_lora
per_device_train_batch_size: 2
gradient_accumulation_steps: 8
learning_rate: 1.0e-4
num_train_epochs: 3.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
logging_steps: 10
save_steps: 500
### 显存优化 ###
bf16: true
gradient_checkpointing: true
关键参数说明:
lora_rank: 64:秩越大表达能力越强,但显存占用增加,可根据资源调整。lora_target: all:对所有线性层应用 LoRA,通常能获得更好的收敛效果。gradient_checkpointing: true:以计算换显存,适合显存紧张的场景。
启动训练命令:
llamafactory-cli train examples/train_lora/qwen35_medical_lora.yaml
训练期间可使用 TensorBoard 监控 Loss 曲线:
tensorboard --logdir=./output/qwen35_medical_lora/runs
在我的测试环境(RTX 4090)上,1 万条数据训练 3 个 epoch 大约耗时 40 分钟。
推理与部署
快速测试
训练完成后,可通过以下命令进行对话测试:
llamafactory-cli chat examples/inference/qwen35_medical_lora.yaml
对应的推理配置文件需指定 Adapter 路径:
model_name_or_path: ./models/Qwen3.5-4B
adapter_name_or_path: ./output/qwen35_medical_lora
template: qwen3
finetuning_type: lora
实测显示,微调后的模型在医疗问答上的专业性有明显提升,能够结合中医属性与现代医学知识进行分析。
权重合并与 API 服务
若效果满意,可将 LoRA 权重合并至基座模型以便部署:
llamafactory-cli export examples/merge_lora/qwen35_medical_merge.yaml
合并配置示例:
model_name_or_path: ./models/Qwen3.5-4B
adapter_name_or_path: ./output/qwen35_medical_lora
template: qwen3
finetuning_type: lora
export_dir: ./models/Qwen35-Medical
export_size: 2
export_device: cuda
export_legacy_format: false
合并后的模型可直接使用 vLLM 或 SGLang 部署为 API 服务:
# vLLM 部署
pip install vllm
vllm serve ./models/Qwen35-Medical --port 8000
# 或使用 LLaMA-Factory 内置 API
API_PORT=8000 llamafactory-cli api examples/inference/qwen35_medical.yaml
常见问题排查
在实际操作中,可能会遇到以下情况:
- 显存不足:调小
per_device_train_batch_size或开启gradient_checkpointing,极端情况下启用 4-bit 量化。 - Loss 不下降:检查
dataset_info.json中的字段映射是否正确,学习率过高也会导致发散,建议尝试 1e-4 至 5e-5。 - 模型能力退化:可能是过拟合导致,适当减少 Epoch 数或在数据集中混入通用对话样本以保持泛化能力。
风险提示:医疗领域的 AI 应用输出仅供参考,不能替代专业医生的诊断。产品落地时需做好免责声明和人工审核机制。
整个流程从环境搭建到模型部署,熟练后半天即可完成。LLaMA-Factory 显著降低了微调门槛,配合高质量的基座模型,普通开发者也能构建出效果不错的垂直领域 AI 助手。当然,若要达到产品级标准,还需在数据清洗、安全合规及持续迭代上投入更多精力。

