LoRA 微调实战:基于 LLaMA-Factory 定制你的专属医疗大模型

LoRA 微调实战:基于 LLaMA-Factory 定制你的专属医疗大模型

从理论到实践,手把手教你使用 LoRA 技术高效微调 Qwen3-4B 模型

一、为什么需要 LoRA 微调?

大语言模型(LLM)在通用领域表现出色,但在特定专业领域(如医疗、法律、金融)往往力不从心。全量微调(Full Fine-tuning)虽然效果好,但需要巨大的计算资源和存储空间。

LoRA(Low-Rank Adaptation) 提供了一种参数高效微调方案:

  • 显存友好:只训练少量参数(通常 <1% 的总参数量)
  • 训练快速:显著减少训练时间和计算成本
  • 效果可佳:在特定任务上接近全量微调效果
  • 部署灵活:支持多 LoRA 动态切换,一个基座模型服务多个场景

二、LoRA 核心原理

2.1 基本思想

LoRA 的核心思想是不改变原始预训练权重,通过引入可训练的低秩分解矩阵来调整模型行为,使其适应特定任务。

2.2 工作机制

  1. 冻结基座模型:原始权重 W 保持不动
  2. 引入旁路矩阵:添加低秩矩阵 A 和 B ,其中 A 负责降维,B 负责升维
  3. 前向传播修改:h=Wx+BAx (原始输出 + 旁路输出)

2.3 初始化技巧

  • 矩阵 B 初始化为 全 0,确保训练开始时偏移为 0,维持网络原有输出
  • 矩阵 A 采用高斯初始化,保证开始学习后能够正常收敛

三、实战环境准备

3.1 硬件配置参考

配置单卡 A100 40GB双卡 4090
训练时间19 分 15 秒8 分 12 秒
显存占用~16GB~8GB/卡
训练参数单卡 batch=1, 梯度累积=8双卡 batch=1, 梯度累积=8

💡 结论:双卡训练不仅更快,而且单卡显存压力更小,性价比更高

3.2 环境搭建

# 创建 Python 3.11 环境 conda create -n lora python=3.11 -y conda activate lora # 安装核心依赖(注意版本匹配) pip install torch==2.7.1 pip install transformers==4.57.1 pip install datasets==4.0.0 pip install peft==0.17.0 pip install accelerate==1.11.0 pip install deepspeed==0.18.2 pip install bitsandbytes==0.48.2 pip install vllm==0.10.0 pip install trl==0.18.0 pip install modelscope # 国内下载模型必备

3.3 下载 Qwen3-4B 模型

# download.py from modelscope import snapshot_download model_dir = snapshot_download( "Qwen/Qwen3-4B", cache_dir="./Qwen3-4B" ) print('model_dir:', model_dir)

3.4 安装 LLaMA-Factory 框架

git clone -b v0.9.4 --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install --no-deps -e .

验证安装:

llamafactory-cli version # 输出:Welcome to LLaMAFactory, version 0.9.4

🍎安装成功会显示如下信息:

(Lora_py311) root@feadc3bc4205:/workspace/LLaMA-Factory# llamafactory-cli version ---------------------------------------------------------- | Welcome to LLaMA Factory, version 0.9.4 | | | | Project page: https://github.com/hiyouga/LLaMA-Factory | ----------------------------------------------------------

四、数据准备:医疗问答数据集

4.1 数据格式规范

LLaMA-Factory 使用 Alpaca 格式,每个样本包含 instructioninputoutput 三个字段:

[ { "instruction": "现在你是一个颅咽管瘤医生,请根据患者的问题给出建议:", "input": "颅咽管瘤手术成功率到底有多少?在川医手术切除后1个月之久,总是未见好转...", "output": "可以手术,但是成功率很小。可以做放射治疗。" }, { "instruction": "现在你是一个前列腺癌医生,请根据患者的问题给出建议:", "input": "男性如何预防前列腺癌疾病?", "output": "前列腺癌的发生,是环境污染、遇事心态、诸多不良的生活习惯..." } ]

4.2 数据预处理

如果你的原始数据是 JSONL 格式,需要先转换:

import json output = [] with open('train_medical.json', 'r', encoding='utf-8') as f: for line in f.readlines(): line = line.strip() data = json.loads(line) output.append(data) print(f"总样本数: {len(output)}") with open('alpaca_zh_medical.json', 'w', encoding='utf-8') as f: json.dump(output, f, ensure_ascii=False, indent=2)

4.3 注册数据集

修改 data/dataset_info.json,添加你的数据集:

{ "alpaca_zh_medical": { "file_name": "alpaca_zh_medical.json" } }

五、配置 LoRA 微调参数

5.1 核心配置文件 qwen3_lora_sft.yaml

### model 模型配置 model_name_or_path: /workspace/Qwen3-4B/Qwen/Qwen3-4B # 本地模型路径 trust_remote_code: true ### method 训练方法配置 stage: sft # 监督微调阶段 do_train: true finetuning_type: lora # 使用 LoRA 微调 lora_rank: 8 # LoRA 秩,通常 4-64 lora_target: all # 应用到所有线性层(q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj) ### dataset 数据集配置 dataset: alpaca_zh_medical # 使用我们准备的医疗数据集 template: qwen3_nothink # Qwen3 模板,无思考链模式 cutoff_len: 2048 # 最大序列长度 max_samples: 1000 # 训练样本数限制 preprocessing_num_workers: 16 # 数据预处理进程数 ### output 输出配置 output_dir: saves/qwen3-4b/lora/sft logging_steps: 10 # 每 10 步记录日志 save_steps: 500 # 每 500 步保存检查点 plot_loss: true # 绘制损失曲线 overwrite_output_dir: true ### train 训练参数 per_device_train_batch_size: 1 # 单卡 batch size gradient_accumulation_steps: 8 # 梯度累积,等效 batch size = 8 learning_rate: 1.0e-4 # 学习率 num_train_epochs: 3.0 # 训练轮数 lr_scheduler_type: cosine # 余弦退火调度 warmup_ratio: 0.1 # 预热比例 bf16: true # 使用 bfloat16 混合精度 ddp_timeout: 180000000 # 分布式训练超时时间

5.2 关键参数解析

参数说明建议值
lora_rank低秩矩阵的秩,越大表达能力越强4-64,医疗任务建议 8-16
lora_target目标模块all 或指定具体投影层
learning_rateLoRA 层学习率1e-4 ~ 5e-4,比全量微调大
gradient_accumulation_steps梯度累积步数根据显存调整,保持有效 batch size ≥ 8

六、启动训练

6.1 单卡训练(A100)

llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml

训练日志关键信息

trainable params: 16,515,072 || all params: 4,038,983,168 || trainable%: 0.4089 Num examples = 1,000 Num Epochs = 3 Total optimization steps = 375 Training completed. train_loss = 2.4426 train_runtime = 1155.54 seconds (19分15秒)

🎯 观察点:仅 0.41% 的参数参与训练,却能让模型掌握医疗领域知识!

完整训练日志如下:

(lora) ➜ LLaMA-Factory git:(v0.9.4) ✗ llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml /root/.pyenv/versions/3.11.1/lib/python3.11/site-packages/jieba/_compat.py:18: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81. import pkg_resources [INFO|2026-02-04 06:06:31] llamafactory.hparams.parser:465 >> Process rank: 0, world size: 1, device: cuda:0, distributed training: False, compute dtype: torch.bfloat16 [INFO|tokenization_utils_base.py:2093] 2026-02-04 06:06:31,695 >> loading file vocab.json [INFO|tokenization_utils_base.py:2093] 2026-02-04 06:06:31,695 >> loading file merges.txt [INFO|tokenization_utils_base.py:2093] 2026-02-04 06:06:31,695 >> loading file tokenizer.json [INFO|tokenization_utils_base.py:2093] 2026-02-04 06:06:31,695 >> loading file added_tokens.json [INFO|tokenization_utils_base.py:2093] 2026-02-04 06:06:31,695 >> loading file special_tokens_map.json [INFO|tokenization_utils_base.py:2093] 2026-02-04 06:06:31,695 >> loading file tokenizer_config.json [INFO|tokenization_utils_base.py:2093] 2026-02-04 06:06:31,695 >> loading file chat_template.jinja [INFO|tokenization_utils_base.py:2364] 2026-02-04 06:06:32,030 >> Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained. [INFO|configuration_utils.py:763] 2026-02-04 06:06:32,031 >> loading configuration file /workspace/Qwen3-4B/Qwen/Qwen3-4B/config.json [INFO|configuration_utils.py:839] 2026-02-04 06:06:32,033 >> Model config Qwen3Config { "architectures": [ "Qwen3ForCausalLM" ], "attention_bias": false, "attention_dropout": 0.0, "bos_token_id": 151643, "dtype": "bfloat16", "eos_token_id": 151645, "head_dim": 128, "hidden_act": "silu", "hidden_size": 2560, "initializer_range": 0.02, "intermediate_size": 9728, "layer_types": [ "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", "full_attention", 

Read more

LlamaFactory模型微调

一.整体概述 LlamaFactory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LlamaFactory,我们可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调。 二.数据处理 LlamaFactory训练所需要的所有数据,都集中存放在了该项目所在的data目录下。data目录中主要是包含了用于定义和管理数据集配置信息的dataset_info.json文件,以及其他各种格式的训练数据文件。 dataset_info.json dataset_info.json文件是用于定义和管理数据集的配置信息,这些配置信息主要包括了数据集的名称和路径、数据集格式、样本数量、列名绑定等元数据。 dataset_info.json包含了所有经过预处理的本地数据集和在线数据集。本地数据集主要是LLaMAFactory所提供的一些demo样例数据集以及我们自定义的数据集。而在线数据集主要是Hugging Face和ModelScope所提供的数据集。 dataset_info.json的格式模板如下: "数据集名称

知网AIGC检测多少钱?各渠道价格对比和省钱攻略

知网AIGC检测多少钱?各渠道价格对比和省钱攻略

知网AIGC检测多少钱?各渠道价格对比和省钱攻略 毕业季一到,论文查重和查AI就成了绕不开的两座山。查重大家都比较熟悉了,但知网AIGC检测是这两年才铺开的新项目,很多同学对它的价格体系还不太清楚。 我去年帮几个学弟学妹查过知网AIGC,踩了不少坑,也摸索出了一些省钱的路子。今天把这些经验整理出来,希望能帮大家少花点冤枉钱。 知网AIGC检测的官方定价是多少? 先说结论:知网AIGC检测并没有一个面向个人用户的统一公开售价。 这和知网查重类似——知网的检测服务主要是面向机构(高校、期刊社)提供的,个人用户想用知网检测,通常需要通过第三方渠道。不同渠道的定价差异不小,这也是很多同学踩坑的原因。 目前市面上能查到的知网AIGC检测价格,大致分布在这个区间: 渠道类型价格区间(单篇)可靠性备注学校图书馆免费(限次)最高部分学校提供1-2次免费机会知网官方合作渠道80-150元高需确认是否为正规授权淘宝/拼多多店铺30-80元参差不齐低价店铺有报告造假风险第三方检测网站50-120元中等需辨别是否真的调用知网接口 学校免费次数用完了怎么办? 很多学校会给毕业生提供

[AI工具箱] Vheer:免费、免登录,一键解锁AI绘画、视频生成和智能编辑

[AI工具箱] Vheer:免费、免登录,一键解锁AI绘画、视频生成和智能编辑

项目简介 今天偶然发现了个堪称“赛博活佛”的AI网站,名叫Vheer。它的作风相当大方,里面绝大部分功能都直接免费敞开用,就问你服不服。 文生图、图生视频、智能修图这些主流AI功能一个不落。点开就能用。而且非常的大气,比如抠图,别的网站按张收费,它直接让你一口气传20张照片自动处理,完全免费,甚至你去花时间不需要注册。 它几乎移除了所有上手障碍。网站首页清晰地排列着各种功能,没有晦涩的术语。你想把文字变成图片,或者让静态照片动起来,点开对应的按钮,输入你的想法,结果很快就能呈现在你面前。整个过程简单得就像在用一款普通的手机APP。 食用指南 访问地址 传送地址 官网的免费会员上面写的几个非常吸引人的地方,第一没有任何水印,第二生成图片视频这些是没有任何数量上的限制,只有高级别的模型和高速通道不能使用(但是实测下来,生成的速度也是相当不错)。 网站也提供了一些订阅模式,可以使用更高级的模型,但是这些高级模型需要消耗算力点。根据自己的需要看是否订阅。 由于功能实在太多了,强烈建议亲手测试一下 操作与体验——文生图 官网光一个文生图的功能就折腾出来了40多个功能,除了