跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

Qwen3.5-4B 微调实战:基于 LLaMA-Factory 构建医疗 AI 助手

最近在帮一个医疗创业团队做技术支持,他们想把通用大模型改造成能回答专业医疗问题的智能助手。今天就把整个过程整理出来,希望对有类似需求的朋友有所帮助。 **核心工具链:** LLaMA-Factory + Qwen3.5-4B + 医疗问答数据集 Qwen3.5 是阿里最新发布的千问系列模型,4B 参数量刚好卡在"效果够用 + 显存友好"的甜蜜点;LLaMA-Factory 则是目前开源社区最成熟的…

不羁发布于 2026/4/6更新于 2026/5/2457K 浏览
Qwen3.5-4B 微调实战:基于 LLaMA-Factory 构建医疗 AI 助手

最近在帮一个医疗创业团队做技术支持,他们想把通用大模型改造成能回答专业医疗问题的智能助手。今天就把整个过程整理出来,希望对有类似需求的朋友有所帮助。

核心工具链: LLaMA-Factory + Qwen3.5-4B + 医疗问答数据集

Qwen3.5 是阿里最新发布的千问系列模型,4B 参数量刚好卡在"效果够用 + 显存友好"的甜蜜点;LLaMA-Factory 则是目前开源社区最成熟的微调框架,上手简单,坑也相对少。

准备工作

先说硬件要求。4B 模型用 LoRA 微调的话,一张 12GB 显存的显卡就够了(比如 RTX 4070)。如果手头只有 8GB 显存的卡,可以上 QLoRA 量化方案,牺牲一点精度换显存空间。

微调方式4B 模型显存需求推荐显卡
LoRA (16-bit)~10-12 GBRTX 4070 / RTX 3090
QLoRA (8-bit)~6-8 GBRTX 4060 / RTX 3070
QLoRA (4-bit)~4-6 GBRTX 3060

软件环境这边,建议 Python 3.11+,PyTorch 2.0 以上。CUDA 版本最好 12.x,兼容性更好。

下载 Qwen3.5-4B 模型

模型从魔搭社区下载,国内速度很快:

# 安装 modelscope
pip install modelscope

# 方式一:Python 代码下载
from modelscope import snapshot_download
model_dir = snapshot_download('Qwen/Qwen3.5-4B')
print(f"模型已下载到:{model_dir}")

# 方式二:命令行下载
# modelscope download --model Qwen/Qwen3.5-4B --local_dir ./models/Qwen3.5-4B

💡 小贴士: 模型大约 9.3GB,建议挂个代理或者选择网络好的时间段下载。下载完记得检查一下文件完整性。

搭建 LLaMA-Factory 环境

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

准备医疗数据集

数据集是微调效果的关键。这里用的是开源的中文医疗问答数据,主要来自几个渠道:

数据来源推荐:

GitHub 上有个 llm-medical-data 仓库,整理了几十万条医疗问答数据,覆盖内科、外科、妇产科、儿科等科室。另外 HuggingFace 上的 数据集也不错,格式比较规范。

shibing624/medical

LLaMA-Factory 要求的数据格式是这样的:

[
  {
    "instruction": "你是一个专业的医疗助手,请根据患者描述给出建议。",
    "input": "我最近总是头痛,尤其是下午的时候,已经持续一周了。",
    "output": "持续性头痛需要关注。建议您先排除以下几个常见原因:1)睡眠质量,2)用眼过度,3)颈椎问题。如果休息后仍不缓解,建议到医院神经内科就诊,做个头部 CT 检查。"
  },
  {
    "instruction": "你是一个专业的医疗助手,请根据患者描述给出建议。",
    "input": "孩子 3 岁,发烧 38.5 度,要不要去医院?",
    "output": "38.5 度属于中度发热。可以先在家观察处理:1)物理降温,温水擦拭腋下、腹股沟;2)保持室内通风;3)多喝水。如果体温超过 39 度、持续超过 3 天、或出现精神萎靡、抽搐等情况,需要立即就医。"
  }
]

把处理好的数据放到 data/ 目录下,然后在 data/dataset_info.json 里注册:

{
  "medical_qa": {
    "file_name": "medical_qa.json",
    "columns": {
      "prompt": "instruction",
      "query": "input",
      "response": "output"
    }
  }
}

开始微调

配置文件是整个流程的核心。在 examples/train_lora/ 下创建一个 qwen3.5_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/qwen3.5_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 秩,越大表达能力越强,但显存占用也越大
  • lora_target: all —— 对所有线性层应用 LoRA,效果更好
  • gradient_checkpointing: true —— 用时间换空间,降低显存占用

一切就绪,启动训练:

llamafactory-cli train examples/train_lora/qwen3.5_medical_lora.yaml

训练过程中可以通过 TensorBoard 监控 loss 曲线:

tensorboard --logdir=./output/qwen3.5_medical_lora/runs

在我的测试环境(RTX 4090)上,1 万条数据训练 3 个 epoch 大约需要 40 分钟。

测试效果

训练完成后,先在命令行跑个快速测试:

llamafactory-cli chat examples/inference/qwen3.5_medical_lora.yaml

对应的推理配置文件 qwen3.5_medical_lora.yaml:

model_name_or_path: ./models/Qwen3.5-4B
adapter_name_or_path: ./output/qwen3.5_medical_lora
template: qwen3
finetuning_type: lora

实测下来,微调后的模型在医疗问答上明显比原版更专业。比如问"孕妇能不能吃螃蟹",原版模型可能给个模棱两可的回答,微调后的版本会从中医寒凉属性、现代营养学、个体差异等多个角度分析,更像一个有经验的医生。

导出和部署

如果效果满意,可以把 LoRA 权重合并到基座模型里,方便后续部署:

llamafactory-cli export examples/merge_lora/qwen3.5_medical_merge.yaml

合并配置:

model_name_or_path: ./models/Qwen3.5-4B
adapter_name_or_path: ./output/qwen3.5_medical_lora
template: qwen3
finetuning_type: lora
export_dir: ./models/Qwen3.5-Medical
export_size: 2
export_device: cuda
export_legacy_format: false

合并后的模型可以直接用 vLLM 或者 SGLang 部署成 API 服务:

# vLLM 部署
pip install vllm
vllm serve ./models/Qwen3.5-Medical --port 8000

# 或者 LLaMA-Factory 内置的 API 服务
API_PORT=8000 llamafactory-cli api examples/inference/qwen3.5_medical.yaml

踩坑记录

分享几个我遇到过的问题:

1. 显存不够用

把 per_device_train_batch_size 调小,或者启用 gradient_checkpointing。实在不行就上 4-bit 量化。

2. Loss 不下降

检查数据格式是否正确,尤其是 dataset_info.json 里的字段映射。另外学习率不要设太大,1e-4 到 5e-5 之间比较稳。

3. 微调后模型变傻了

可能是数据质量问题,或者训练轮数太多导致过拟合。适当减少 epoch 数,或者在数据里混入一些通用对话保持泛化能力。

医疗领域的 AI 应用一定要注意:模型输出仅供参考,不能替代专业医生的诊断。在产品设计时要做好免责声明和人工审核机制。

整个流程走下来,从环境搭建到模型部署,熟练的话半天就能搞定。LLaMA-Factory 确实把微调的门槛降低了很多,配合 Qwen3.5 这样的高质量基座模型,普通开发者也能做出效果不错的垂直领域 AI 助手。

当然,真要做成产品级的医疗 AI,还需要在数据质量、安全合规、持续迭代等方面下功夫。但至少,迈出第一步没那么难。

目录

  1. 准备工作
  2. 下载 Qwen3.5-4B 模型
  3. 安装 modelscope
  4. 方式一:Python 代码下载
  5. 方式二:命令行下载
  6. modelscope download --model Qwen/Qwen3.5-4B --local_dir ./models/Qwen3.5-4B
  7. 搭建 LLaMA-Factory 环境
  8. 克隆仓库
  9. 安装依赖
  10. 如果需要 DeepSpeed 加速(可选)
  11. 准备医疗数据集
  12. 开始微调
  13. 模型配置
  14. 微调方法
  15. 数据集配置
  16. 训练参数
  17. 显存优化
  18. 测试效果
  19. 导出和部署
  20. vLLM 部署
  21. 或者 LLaMA-Factory 内置的 API 服务
  22. 踩坑记录
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 安卓案例:利用定时器实现逐帧动画
  • 基于 PySide6 实现 YOLOv8 目标检测可视化 GUI 界面
  • JavaScript 变量声明:var、let、const 核心区别与实战指南
  • 鸿蒙 HarmonyOS 6 混合开发:ArkWeb 加载机制与 Cookie 管理
  • Llama3.1 深度解读:结构、训练与数据合成技术
  • 网络安全行业薪资分析与职业发展路径指南
  • C++ 多态的核心概念与实现原理
  • WebView 并发初始化竞争风险分析
  • 位运算实战:位图与异或消消乐高频算法题解析
  • DeepSeek 与通义万相结合实现 AI 视频高效制作实战
  • SBUS 协议详解:从原理到无人机/航模/机器人实战
  • AI 辅助学术论文写作工具功能解析
  • DataX 二进制与源码部署及 DataX-Web 可视化平台搭建
  • JavaScript 正则表达式详解:定义、语法与实战示例
  • SpringBoot+Vue 校园网上店铺设计与实现
  • 大龄零基础转行网络安全行业的可行性与学习路径
  • C++ STL 手写 String 类及高频易错点解析
  • HarmonyOS6 RcImage 组件核心架构与状态管理机制
  • NestJS 管理员增删改查功能实现
  • 滑动窗口算法专题 (一)

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online