安装LLaMA Factorygitclone--depth1https://github.com/hiyouga/LlamaFactory.gitcdLlamaFactory pipinstall-e.pipinstall-rrequirements/metrics.txt安装监控显卡工具pipinstallnvitop pipinstallnvidia-ml-py-Unvitop-mauto nvitop-mcompact nvitop-mfull快速开始下面三行命令分别对 Qwen3-4B-Instruct 模型进行 LoRA微调、推理和合并。llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml llamafactory-cli chat examples/inference/qwen3_lora_sft.yaml llamafactory-cli export examples/merge_lora/qwen3_lora_sft.yaml下载模型https://modelscope.cn/models/Qwen/Qwen3-4B-Instruct-2507关键文件介绍这三个文件是 LLaMA-Factory 工作流中最核心的“三驾马车”。它们分别对应了大模型微调项目的三个关键阶段训练、体验和部署。简单来说这是一个从“教模型”到“考模型”再到“带模型出门”的完整闭环。以下是详细的介绍1. 训练阶段examples/train_lora/qwen3_lora_sft.yaml对应命令llamafactory-cli train ...核心作用“教模型”。这是整个流程的起点。这个文件定义了怎么学。关键配置### model model_name_or_path: Qwen/Qwen3-4B-Instruct-2507 trust_remote_code: true ### method stage: sft do_train: true finetuning_type: lora lora_rank: 8 lora_target: all ### dataset dataset: identity,alpaca_en_demo template: qwen3_nothink cutoff_len: 2048 max_samples: 1000 preprocessing_num_workers: 16 dataloader_num_workers: 4 ### output output_dir: saves/qwen3-4b/lora/sft logging_steps: 10 save_steps: 500 plot_loss: true overwrite_output_dir: true save_only_model: false report_to: none # choices: [none, wandb, tensorboard, swanlab, mlflow] ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 bf16: true ddp_timeout: 180000000 resume_from_checkpoint: null ### eval # eval_dataset: alpaca_en_demo # val_size: 0.1 # per_device_eval_batch_size: 1 # eval_strategy: steps # eval_steps: 500学什么指定数据集dataset: sft_data和对话模板template: qwen3。怎么学设定学习率learning_rate、训练轮数num_train_epochs、批次大小per_device_train_batch_size。学多少配置 LoRA 的参数比如秩lora_rank: 8和目标模块lora_target: all。产出运行后你会得到一个新的文件夹通常在saves/目录下里面包含训练好的LoRA 权重文件adapter_model.bin。2. 体验/验证阶段examples/inference/qwen3_lora_sft.yaml对应命令llamafactory-cli chat ...核心作用“考模型”。训练完后你不需要把模型部署到服务器而是想先在命令行里跟它聊聊天看看效果好不好。这个文件定义了怎么聊。关键配置model_name_or_path: Qwen/Qwen3-4B-Instruct-2507 adapter_name_or_path: saves/qwen3-4b/lora/sft template: qwen3_nothink infer_backend: huggingface # choices: [huggingface, vllm, sglang, ktransformers] trust_remote_code: true加载谁它需要同时指定基础模型model_name_or_path和刚才训练出来的LoRA 权重adapter_name_or_path。用什么引擎这里就是你刚才问到的infer_backend: huggingface或vllm。格式必须保持和训练时一样的对话模板template: qwen3否则模型会听不懂人话。产出一个交互式的命令行界面你可以输入问题模型实时回答。3. 部署/导出阶段examples/merge_lora/qwen3_lora_sft.yaml对应命令llamafactory-cli export ...核心作用“打包模型”。LoRA 权重只是一个“补丁”不能独立运行。如果你要把模型发给别人或者部署到生产环境通常希望它是一个独立的、完整的模型文件。这个文件定义了怎么合。关键配置### Note: DO NOT use quantized model or quantization_bit when merging lora adapters ### model model_name_or_path: Qwen/Qwen3-4B-Instruct-2507 adapter_name_or_path: saves/qwen3-4b/lora/sft template: qwen3_nothink trust_remote_code: true ### export export_dir: saves/qwen3_sft_merged export_size: 5 export_device: cpu # choices: [cpu, auto] export_legacy_format: false源文件指定基础模型路径和 LoRA 权重路径。去向指定合并后的模型保存路径export_dir。注意这里通常要求基础模型必须是 FP16/BF16 格式不能是量化过的如 INT4/INT8否则合并会失败或精度受损。产出一个全新的、独立的模型文件夹。这个文件夹里包含了所有权重不再依赖 LoRA 插件可以直接被任何支持该架构的工具加载。文件名关键词角色动作你的操作train老师训练修改它来调整学习策略跑完得到“补丁包”。inference考官测试修改它来加载“补丁包”跑完进行对话测试。merge打包员合并修改它来指定输出位置跑完得到“完整版模型”。参数介绍safetesnsors 是什么Safetensors 是一种用于安全存储张量如模型权重的新型文件格式由Hugging Face团队开发旨在解决传统格式如.pth或.bin在安全性和加载效率上的不足。它不包含可执行代码仅存储张量数据因此在加载来自不可信来源的模型时更安全且支持零拷贝加载速度极快。使用方法!pipinstallsafetensors from safetensorsimportsafe_open with safe_open(adapter_model.safetensors,frameworkpt,device0)as f:forkeyinf.keys(): tensorf.get_tensor(key)# 处理 tensor查看print(tensor)interence参数介绍infer_backend: huggingface # choices: [huggingface, vllm, sglang, ktransformers]指定模型在推理运行/对话时底层使用哪个“引擎”来驱动。选项特点描述适用场景huggingface默认选项。兼容性最强几乎支持所有模型无需额外安装复杂依赖source_group_web_4。但推理速度相对较慢显存利用率一般。调试、开发、快速验证。vllm高性能。通过 PagedAttention 技术极大提升吞吐量推理速度极快显存占用更低source_group_web_6。生产环境、批量处理。sglang极速/新架构。比 vLLM 更新针对复杂提示词如多轮对话、Agent有专门优化速度往往更快source_group_web_8。追求极致速度、复杂 Agent 应用。适合对延迟极其敏感的场景。ktransformers特定优化。通常指针对特定硬件或架构优化的内核版本较少见视具体版本而定。特定硬件优化场景。使用API进行批量推理准备 API 配置文件api_config.yaml用于告诉服务加载哪个模型、使用哪个推理后端以及端口是多少。### model# 这里填入你的本地绝对路径model_name_or_path: /mnt/workspace/.cache/modelscope/models/Qwen/Qwen3-4B-Instruct-2507# 如果有 LoRA 权重也填入路径如果是合并模型则留空或注释掉# adapter_name_or_path: saves/qwen3-4b/lora/sfttemplate: qwen3_nothink trust_remote_code:trueinfer_backend: vllm# 推荐使用 vllm 以获得更快的推理速度在根目录下使用命令行启动使用脚本进行批量推理 bash from openai import OpenAI # 初始化客户端 client OpenAI( api_key0, base_urlhttp://localhost:8000/v1 ) # 1. 定义批量问题列表 questions [ 你好请介绍一下你自己, 量子力学是什么, 如何用 Python 写一个冒泡排序 ] print(f开始批量推理共 {len(questions)} 个问题...\n -*30) # 2. 循环发送请求 for i, question in enumerate(questions): try: response client.chat.completions.create( modelQwen3-4B, messages[ {role: user, content: question} ], temperature0.7 ) # 获取回答内容 answer response.choices[0].message.content # 打印结果 print(f[问题 {i1}]: {question}) print(f[回答]: {answer}) print(- * 30) except Exception as e: print(f请求 {i1} 失败: {e}) print(所有推理完成)训练轮数怎么计算的总轮数 (Total Steps) (数据集总样本数 × 训练轮次) / (单卡批次大小 × 梯度累积步数)对于这一份yaml文件### model model_name_or_path: /mnt/workspace/.cache/modelscope/models/Qwen/Qwen3-4B-Instruct-2507 trust_remote_code: true ### method stage: sft do_train: true finetuning_type: lora lora_rank: 8 lora_target: all ### dataset dataset: identity,alpaca_en_demo template: qwen3_nothink cutoff_len: 2048 max_samples: 1000 preprocessing_num_workers: 16 dataloader_num_workers: 4 ### output output_dir: saves/qwen3-4b/lora/sft logging_steps: 10 save_steps: 500 plot_loss: true overwrite_output_dir: true save_only_model: false report_to: none # choices: [none, wandb, tensorboard, swanlab, mlflow] ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 1.0e-4 num_train_epochs: 1.0 lr_scheduler_type: cosine warmup_ratio: 0.1 bf16: true ddp_timeout: 180000000 resume_from_checkpoint: null ## eval # eval_dataset: alpaca_en_demo val_size: 0.1 per_device_eval_batch_size: 1 eval_strategy: steps eval_steps: 500计算过程确定关键参数数据集总样本数*** 您在配置中设置了max_samples: 1000因此用于训练的样本总数为 1000 个。训练轮次 (Epochs):num_train_epochs: 1.0表示整个数据集会训练 1 遍。单卡批次大小 (Batch Size):per_device_train_batch_size: 1表示每张卡每次处理 1 个样本。梯度累积步数 (Gradient Accumulation Steps):gradient_accumulation_steps: 8表示每累积 8 个批次后才进行一次参数更新。代入公式计算总轮数 (1000 × 1.0) / (1 × 8)总轮数 1000 / 8总轮数 125三种微调方式在大模型微调中通常所说的“三种微调方式”主要指全量微调、LoRA微调和QLoRA微调。它们的核心区别在于更新参数量、资源消耗尤其是显存和适用场景。你可以把它们想象成对一辆汽车进行改装全量微调如同重装整个引擎和所有系统。效果最彻底但成本极高。LoRA微调如同加装一个高性能外挂。不改动原车核心成本低效果显著还能随时拆下。QLoRA微调如同在压缩过的引擎上再装外挂。成本最低让普通用户也能玩得起大模型。下面是这三种方式的详细对比微调方式更新参数量显存需求适用场景全量微调100% 所有参数极高 (约4倍模型大小)资源充足的巨头追求极致性能LoRA微调极少 (0.1%-1%)中等 (约1.2倍模型大小)绝大多数应用场景个人开发者QLoRA微调极少 (0.1%-1%)很低 (约0.3倍模型大小)资源有限的个人或小团队1. 全量微调 (Full Fine-tuning)这是最传统、最彻底的微调方式。原理在训练过程中更新模型的全部参数。模型的所有权重都会根据你的新数据进行调整。优点理论上能达到最好的效果因为模型可以完全适应新任务。缺点资源消耗巨大。训练一个70亿7B参数的模型可能需要80GB甚至更多的显存对硬件要求极高训练速度也慢。2. LoRA微调 (Low-Rank Adaptation)这是一种“参数高效微调”PEFT技术是目前最主流的微调方法。原理冻结原始模型的所有参数只在模型的特定层旁边注入并训练一些非常小的“适配器”矩阵即LoRA模块。训练时只更新这些小模块的参数。优点显存占用低只需训练极少量参数通常不到原模型的1%大大降低了显存需求。训练速度快因为要计算的参数少训练效率非常高。灵活切换可以为不同任务训练多个LoRA模块使用时像“插件”一样按需加载非常灵活。缺点性能上限理论上略低于全量微调但在绝大多数任务中效果已经非常接近。3. QLoRA微调 (Quantized LoRA)这是在LoRA基础上的进一步创新旨在将资源消耗降到最低。原理QLoRA 量化 LoRA量化首先将原始模型的精度从16位FP16压缩到4位NF4这能让模型体积缩小约75%。LoRA然后在这个被压缩的模型上再进行LoRA微调。优点显存需求极低。它使得在单张消费级显卡如24GB显存的RTX 4090上微调一个巨大的70B模型成为可能。缺点由于引入了量化会带来微小的精度损失通常小于1%但换取的是巨大的资源节省。所有示例训练方式qwen3_lora_dpo.yaml含义基于 Qwen3 模型使用 LoRA 技术进行DPO训练的配置。技术点DPODirect Preference Optimization是一种对齐技术让模型学会人类的偏好比如回答得更友好、更真实。这个配置文件是用于让模型变得“更听话”。qwen3_lora_kto.yaml含义基于 Qwen3 模型使用 LoRA 技术进行KTO训练的配置。技术点KTOKnowledge Transfer Optimization也是一种对齐算法类似于 DPO旨在通过偏好数据优化模型输出。qwen3_lora_pretrain.yaml含义基于 Qwen3 模型使用 LoRA 技术进行预训练的配置。技术点这通常用于让模型学习新知识或新语言而不是微调回答风格。qwen3_lora_reward.yaml含义基于 Qwen3 模型使用 LoRA 技术训练奖励模型的配置。技术点奖励模型Reward Model不直接回答问题而是给其他模型的回答打分好评/差评用于后续的强化学习RLHF。qwen3_lora_sft_ds3.yaml含义基于 Qwen3 模型使用 LoRA 技术进行SFT训练且使用了DeepSpeed Stage 3的配置。技术点SFTSupervised Fine-Tuning监督微调是让模型学会具体任务如写代码、写文案。ds3代表使用了 DeepSpeed 的第三级优化这意味着该配置是为了在显存有限的情况下训练非常大的模型。qwen3_lora_sft_ray.yaml含义基于 Qwen3 模型使用 LoRA 技术进行SFT训练且使用了Ray框架的配置。技术点Ray 是一个用于分布式计算的框架。这个配置文件意味着训练任务被分布到了多台机器或多个节点上进行。qwen3_lora_sft_ray.sh含义启动上述qwen3_lora_sft_ray.yaml配置的Shell 脚本。技术点当你想运行分布式训练时通常会执行这个.sh文件。qwen3_lora_sft.yaml含义基于 Qwen3 模型使用 LoRA 技术进行SFT训练的标准配置。技术点这是最常规的微调配置不涉及复杂的分布式框架如 Ray或显存优化如 DeepSpeed。qwen3_preprocess.yaml含义数据预处理配置。技术点在训练开始前需要对原始数据进行清洗、分词、格式转换。这个文件定义了数据处理的规则。qwen3vl_lora_dpo.yaml含义基于Qwen3VL模型使用 LoRA 技术进行DPO训练的配置。技术点VL代表 Vision-Language视觉语言。这说明该配置是用于多模态模型能看懂图片的模型的训练。qwen3vl_lora_sft.yaml含义基于Qwen3VL模型使用 LoRA 技术进行SFT训练的配置。技术点这是多模态模型的标准微调配置。量化什么是模型量化模型量化是一种模型压缩技术其核心思想是将模型参数如权重和激活值从高精度数据类型通常是 FP16 或 BF16占用 16 位转换为低精度数据类型如 INT4 或 INT8占用 4 位或 8 位。原理类似于将高清图片压缩成低分辨率图片虽然会有微小的信息损失但整体效果依然可用。目的大幅减少模型所需的显存VRAM和内存RAM同时通常能提升推理速度。效果一个典型的 7B70亿参数模型原生 FP16 格式可能需要约 14GB 显存而经过 INT4 量化后显存占用可降至约 4-6GB使得在消费级显卡如 RTX 3060/4060上运行大模型成为可能。LlamaFactory 支持的量化方法LlamaFactory 主要支持两大类量化方法后训练量化PTQ和量化感知训练QAT。在实际应用中PTQ 更为常见因为它不需要重新训练模型。后训练量化PTQ 是在模型预训练完成后进行的量化。LlamaFactory 集成了目前主流的 PTQ 算法GPTQ原理一种基于逐块per-channel的权重量化方法。它通过最小化量化前后权重的差异来优化量化参数。特点精度损失较小兼容性较好是目前应用最广泛的量化方法之一。适用场景适用于大多数需要快速部署且对精度有一定要求的场景。AWQ原理激活感知权重量化。它不仅考虑权重还考虑激活值的分布通过保护重要的权重通道来减少精度损失。特点相比 GPTQAWQ 在低比特如 2-bit 或 3-bit量化时表现更优推理速度通常更快且对硬件的兼容性要求较低。适用场景追求极致推理速度和极低显存占用的场景。AQLM原理一种更先进的量化方法结合了矢量量化和标量量化的优势。特点在极低比特下如 2-bit能保持较好的性能但计算开销可能略高。量化感知训练QAT 是在模型微调SFT过程中引入量化模拟。LlamaFactory 支持 QLoRA。QLoRA将 LoRA低秩适应微调与量化结合。它在微调时使用量化模型但更新的是 LoRA 适配器的参数。优势可以在极低显存占用下例如仅需 6GB 显存对大模型进行微调训练完成后可以合并 LoRA 权重并导出为纯量化模型。LlamaFactory 中的量化配置在 LlamaFactory 中用户可以通过命令行参数或配置文件轻松启用量化。常见的配置选项包括--quantization_bit指定量化的比特数。常见值有0不量化、4INT4、8INT8。--quantization_method指定量化算法。常见值有gptq、awq、aqlm。--template根据不同的量化模型可能需要指定相应的对话模板如qwen、llama2等以确保输入格式正确。量化带来的收益与权衡收益显存占用大幅降低这是最直接的好处使得在低端硬件上运行大模型成为可能。推理速度提升低精度计算通常比高精度计算更快尤其是在支持 INT4 指令的现代 GPU如 NVIDIA 的 Tensor Core上。部署成本降低可以使用更便宜的硬件进行模型推理服务。什么是模型量化模型量化是一种模型压缩技术其核心思想是将模型参数如权重和激活值从高精度数据类型通常是 FP16 或 BF16占用 16 位转换为低精度数据类型如 INT4 或 INT8占用 4 位或 8 位。原理类似于将高清图片压缩成低分辨率图片虽然会有微小的信息损失但整体效果依然可用。目的大幅减少模型所需的显存VRAM和内存RAM同时通常能提升推理速度。效果一个典型的 7B70亿参数模型原生 FP16 格式可能需要约 14GB 显存而经过 INT4 量化后显存占用可降至约 4-6GB使得在消费级显卡如 RTX 3060/4060上运行大模型成为可能。LlamaFactory 支持的量化方法LlamaFactory 主要支持两大类量化方法后训练量化PTQ和量化感知训练QAT。在实际应用中PTQ 更为常见因为它不需要重新训练模型。后训练量化PTQ 是在模型预训练完成后进行的量化。LlamaFactory 集成了目前主流的 PTQ 算法GPTQ原理一种基于逐块per-channel的权重量化方法。它通过最小化量化前后权重的差异来优化量化参数。特点精度损失较小兼容性较好是目前应用最广泛的量化方法之一。适用场景适用于大多数需要快速部署且对精度有一定要求的场景。AWQ原理激活感知权重量化。它不仅考虑权重还考虑激活值的分布通过保护重要的权重通道来减少精度损失。特点相比 GPTQAWQ 在低比特如 2-bit 或 3-bit量化时表现更优推理速度通常更快且对硬件的兼容性要求较低。适用场景追求极致推理速度和极低显存占用的场景。AQLM原理一种更先进的量化方法结合了矢量量化和标量量化的优势。特点在极低比特下如 2-bit能保持较好的性能但计算开销可能略高。量化感知训练QAT 是在模型微调SFT过程中引入量化模拟。LlamaFactory 支持 QLoRA。QLoRA将 LoRA低秩适应微调与量化结合。它在微调时使用量化模型但更新的是 LoRA 适配器的参数。优势可以在极低显存占用下例如仅需 6GB 显存对大模型进行微调训练完成后可以合并 LoRA 权重并导出为纯量化模型。LlamaFactory 中的量化配置在 LlamaFactory 中用户可以通过命令行参数或配置文件轻松启用量化。常见的配置选项包括--quantization_bit指定量化的比特数。常见值有0不量化、4INT4、8INT8。--quantization_method指定量化算法。常见值有gptq、awq、aqlm。--template根据不同的量化模型可能需要指定相应的对话模板如qwen、llama2等以确保输入格式正确。量化带来的收益与权衡收益显存占用大幅降低这是最直接的好处使得在低端硬件上运行大模型成为可能。推理速度提升低精度计算通常比高精度计算更快尤其是在支持 INT4 指令的现代 GPU如 NVIDIA 的 Tensor Core上。部署成本降低可以使用更便宜的硬件进行模型推理服务。权衡精度损失量化不可避免地会带来模型性能的下降。一般来说比特数越低精度损失越大。但在 INT4 级别大多数模型的性能下降是可以接受的。兼容性问题不同的量化方法如 GPTQ 和 AWQ生成的模型文件格式不同可能需要特定的推理后端如 AutoGPTQ、AutoAWQ才能加载。的比特数。常见值有0不量化、4INT4、8INT8。--quantization_method指定量化算法。常见值有gptq、awq、aqlm。--template根据不同的量化模型可能需要指定相应的对话模板如qwen、llama2等以确保输入格式正确。量化带来的收益与权衡收益显存占用大幅降低这是最直接的好处使得在低端硬件上运行大模型成为可能。推理速度提升低精度计算通常比高精度计算更快尤其是在支持 INT4 指令的现代 GPU如 NVIDIA 的 Tensor Core上。部署成本降低可以使用更便宜的硬件进行模型推理服务。权衡精度损失量化不可避免地会带来模型性能的下降。一般来说比特数越低精度损失越大。但在 INT4 级别大多数模型的性能下降是可以接受的。兼容性问题不同的量化方法如 GPTQ 和 AWQ生成的模型文件格式不同可能需要特定的推理后端如 AutoGPTQ、AutoAWQ才能加载。
Llamafactory的使用
安装LLaMA Factorygitclone--depth1https://github.com/hiyouga/LlamaFactory.gitcdLlamaFactory pipinstall-e.pipinstall-rrequirements/metrics.txt安装监控显卡工具pipinstallnvitop pipinstallnvidia-ml-py-Unvitop-mauto nvitop-mcompact nvitop-mfull快速开始下面三行命令分别对 Qwen3-4B-Instruct 模型进行 LoRA微调、推理和合并。llamafactory-cli train examples/train_lora/qwen3_lora_sft.yaml llamafactory-cli chat examples/inference/qwen3_lora_sft.yaml llamafactory-cli export examples/merge_lora/qwen3_lora_sft.yaml下载模型https://modelscope.cn/models/Qwen/Qwen3-4B-Instruct-2507关键文件介绍这三个文件是 LLaMA-Factory 工作流中最核心的“三驾马车”。它们分别对应了大模型微调项目的三个关键阶段训练、体验和部署。简单来说这是一个从“教模型”到“考模型”再到“带模型出门”的完整闭环。以下是详细的介绍1. 训练阶段examples/train_lora/qwen3_lora_sft.yaml对应命令llamafactory-cli train ...核心作用“教模型”。这是整个流程的起点。这个文件定义了怎么学。关键配置### model model_name_or_path: Qwen/Qwen3-4B-Instruct-2507 trust_remote_code: true ### method stage: sft do_train: true finetuning_type: lora lora_rank: 8 lora_target: all ### dataset dataset: identity,alpaca_en_demo template: qwen3_nothink cutoff_len: 2048 max_samples: 1000 preprocessing_num_workers: 16 dataloader_num_workers: 4 ### output output_dir: saves/qwen3-4b/lora/sft logging_steps: 10 save_steps: 500 plot_loss: true overwrite_output_dir: true save_only_model: false report_to: none # choices: [none, wandb, tensorboard, swanlab, mlflow] ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 bf16: true ddp_timeout: 180000000 resume_from_checkpoint: null ### eval # eval_dataset: alpaca_en_demo # val_size: 0.1 # per_device_eval_batch_size: 1 # eval_strategy: steps # eval_steps: 500学什么指定数据集dataset: sft_data和对话模板template: qwen3。怎么学设定学习率learning_rate、训练轮数num_train_epochs、批次大小per_device_train_batch_size。学多少配置 LoRA 的参数比如秩lora_rank: 8和目标模块lora_target: all。产出运行后你会得到一个新的文件夹通常在saves/目录下里面包含训练好的LoRA 权重文件adapter_model.bin。2. 体验/验证阶段examples/inference/qwen3_lora_sft.yaml对应命令llamafactory-cli chat ...核心作用“考模型”。训练完后你不需要把模型部署到服务器而是想先在命令行里跟它聊聊天看看效果好不好。这个文件定义了怎么聊。关键配置model_name_or_path: Qwen/Qwen3-4B-Instruct-2507 adapter_name_or_path: saves/qwen3-4b/lora/sft template: qwen3_nothink infer_backend: huggingface # choices: [huggingface, vllm, sglang, ktransformers] trust_remote_code: true加载谁它需要同时指定基础模型model_name_or_path和刚才训练出来的LoRA 权重adapter_name_or_path。用什么引擎这里就是你刚才问到的infer_backend: huggingface或vllm。格式必须保持和训练时一样的对话模板template: qwen3否则模型会听不懂人话。产出一个交互式的命令行界面你可以输入问题模型实时回答。3. 部署/导出阶段examples/merge_lora/qwen3_lora_sft.yaml对应命令llamafactory-cli export ...核心作用“打包模型”。LoRA 权重只是一个“补丁”不能独立运行。如果你要把模型发给别人或者部署到生产环境通常希望它是一个独立的、完整的模型文件。这个文件定义了怎么合。关键配置### Note: DO NOT use quantized model or quantization_bit when merging lora adapters ### model model_name_or_path: Qwen/Qwen3-4B-Instruct-2507 adapter_name_or_path: saves/qwen3-4b/lora/sft template: qwen3_nothink trust_remote_code: true ### export export_dir: saves/qwen3_sft_merged export_size: 5 export_device: cpu # choices: [cpu, auto] export_legacy_format: false源文件指定基础模型路径和 LoRA 权重路径。去向指定合并后的模型保存路径export_dir。注意这里通常要求基础模型必须是 FP16/BF16 格式不能是量化过的如 INT4/INT8否则合并会失败或精度受损。产出一个全新的、独立的模型文件夹。这个文件夹里包含了所有权重不再依赖 LoRA 插件可以直接被任何支持该架构的工具加载。文件名关键词角色动作你的操作train老师训练修改它来调整学习策略跑完得到“补丁包”。inference考官测试修改它来加载“补丁包”跑完进行对话测试。merge打包员合并修改它来指定输出位置跑完得到“完整版模型”。参数介绍safetesnsors 是什么Safetensors 是一种用于安全存储张量如模型权重的新型文件格式由Hugging Face团队开发旨在解决传统格式如.pth或.bin在安全性和加载效率上的不足。它不包含可执行代码仅存储张量数据因此在加载来自不可信来源的模型时更安全且支持零拷贝加载速度极快。使用方法!pipinstallsafetensors from safetensorsimportsafe_open with safe_open(adapter_model.safetensors,frameworkpt,device0)as f:forkeyinf.keys(): tensorf.get_tensor(key)# 处理 tensor查看print(tensor)interence参数介绍infer_backend: huggingface # choices: [huggingface, vllm, sglang, ktransformers]指定模型在推理运行/对话时底层使用哪个“引擎”来驱动。选项特点描述适用场景huggingface默认选项。兼容性最强几乎支持所有模型无需额外安装复杂依赖source_group_web_4。但推理速度相对较慢显存利用率一般。调试、开发、快速验证。vllm高性能。通过 PagedAttention 技术极大提升吞吐量推理速度极快显存占用更低source_group_web_6。生产环境、批量处理。sglang极速/新架构。比 vLLM 更新针对复杂提示词如多轮对话、Agent有专门优化速度往往更快source_group_web_8。追求极致速度、复杂 Agent 应用。适合对延迟极其敏感的场景。ktransformers特定优化。通常指针对特定硬件或架构优化的内核版本较少见视具体版本而定。特定硬件优化场景。使用API进行批量推理准备 API 配置文件api_config.yaml用于告诉服务加载哪个模型、使用哪个推理后端以及端口是多少。### model# 这里填入你的本地绝对路径model_name_or_path: /mnt/workspace/.cache/modelscope/models/Qwen/Qwen3-4B-Instruct-2507# 如果有 LoRA 权重也填入路径如果是合并模型则留空或注释掉# adapter_name_or_path: saves/qwen3-4b/lora/sfttemplate: qwen3_nothink trust_remote_code:trueinfer_backend: vllm# 推荐使用 vllm 以获得更快的推理速度在根目录下使用命令行启动使用脚本进行批量推理 bash from openai import OpenAI # 初始化客户端 client OpenAI( api_key0, base_urlhttp://localhost:8000/v1 ) # 1. 定义批量问题列表 questions [ 你好请介绍一下你自己, 量子力学是什么, 如何用 Python 写一个冒泡排序 ] print(f开始批量推理共 {len(questions)} 个问题...\n -*30) # 2. 循环发送请求 for i, question in enumerate(questions): try: response client.chat.completions.create( modelQwen3-4B, messages[ {role: user, content: question} ], temperature0.7 ) # 获取回答内容 answer response.choices[0].message.content # 打印结果 print(f[问题 {i1}]: {question}) print(f[回答]: {answer}) print(- * 30) except Exception as e: print(f请求 {i1} 失败: {e}) print(所有推理完成)训练轮数怎么计算的总轮数 (Total Steps) (数据集总样本数 × 训练轮次) / (单卡批次大小 × 梯度累积步数)对于这一份yaml文件### model model_name_or_path: /mnt/workspace/.cache/modelscope/models/Qwen/Qwen3-4B-Instruct-2507 trust_remote_code: true ### method stage: sft do_train: true finetuning_type: lora lora_rank: 8 lora_target: all ### dataset dataset: identity,alpaca_en_demo template: qwen3_nothink cutoff_len: 2048 max_samples: 1000 preprocessing_num_workers: 16 dataloader_num_workers: 4 ### output output_dir: saves/qwen3-4b/lora/sft logging_steps: 10 save_steps: 500 plot_loss: true overwrite_output_dir: true save_only_model: false report_to: none # choices: [none, wandb, tensorboard, swanlab, mlflow] ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 1.0e-4 num_train_epochs: 1.0 lr_scheduler_type: cosine warmup_ratio: 0.1 bf16: true ddp_timeout: 180000000 resume_from_checkpoint: null ## eval # eval_dataset: alpaca_en_demo val_size: 0.1 per_device_eval_batch_size: 1 eval_strategy: steps eval_steps: 500计算过程确定关键参数数据集总样本数*** 您在配置中设置了max_samples: 1000因此用于训练的样本总数为 1000 个。训练轮次 (Epochs):num_train_epochs: 1.0表示整个数据集会训练 1 遍。单卡批次大小 (Batch Size):per_device_train_batch_size: 1表示每张卡每次处理 1 个样本。梯度累积步数 (Gradient Accumulation Steps):gradient_accumulation_steps: 8表示每累积 8 个批次后才进行一次参数更新。代入公式计算总轮数 (1000 × 1.0) / (1 × 8)总轮数 1000 / 8总轮数 125三种微调方式在大模型微调中通常所说的“三种微调方式”主要指全量微调、LoRA微调和QLoRA微调。它们的核心区别在于更新参数量、资源消耗尤其是显存和适用场景。你可以把它们想象成对一辆汽车进行改装全量微调如同重装整个引擎和所有系统。效果最彻底但成本极高。LoRA微调如同加装一个高性能外挂。不改动原车核心成本低效果显著还能随时拆下。QLoRA微调如同在压缩过的引擎上再装外挂。成本最低让普通用户也能玩得起大模型。下面是这三种方式的详细对比微调方式更新参数量显存需求适用场景全量微调100% 所有参数极高 (约4倍模型大小)资源充足的巨头追求极致性能LoRA微调极少 (0.1%-1%)中等 (约1.2倍模型大小)绝大多数应用场景个人开发者QLoRA微调极少 (0.1%-1%)很低 (约0.3倍模型大小)资源有限的个人或小团队1. 全量微调 (Full Fine-tuning)这是最传统、最彻底的微调方式。原理在训练过程中更新模型的全部参数。模型的所有权重都会根据你的新数据进行调整。优点理论上能达到最好的效果因为模型可以完全适应新任务。缺点资源消耗巨大。训练一个70亿7B参数的模型可能需要80GB甚至更多的显存对硬件要求极高训练速度也慢。2. LoRA微调 (Low-Rank Adaptation)这是一种“参数高效微调”PEFT技术是目前最主流的微调方法。原理冻结原始模型的所有参数只在模型的特定层旁边注入并训练一些非常小的“适配器”矩阵即LoRA模块。训练时只更新这些小模块的参数。优点显存占用低只需训练极少量参数通常不到原模型的1%大大降低了显存需求。训练速度快因为要计算的参数少训练效率非常高。灵活切换可以为不同任务训练多个LoRA模块使用时像“插件”一样按需加载非常灵活。缺点性能上限理论上略低于全量微调但在绝大多数任务中效果已经非常接近。3. QLoRA微调 (Quantized LoRA)这是在LoRA基础上的进一步创新旨在将资源消耗降到最低。原理QLoRA 量化 LoRA量化首先将原始模型的精度从16位FP16压缩到4位NF4这能让模型体积缩小约75%。LoRA然后在这个被压缩的模型上再进行LoRA微调。优点显存需求极低。它使得在单张消费级显卡如24GB显存的RTX 4090上微调一个巨大的70B模型成为可能。缺点由于引入了量化会带来微小的精度损失通常小于1%但换取的是巨大的资源节省。所有示例训练方式qwen3_lora_dpo.yaml含义基于 Qwen3 模型使用 LoRA 技术进行DPO训练的配置。技术点DPODirect Preference Optimization是一种对齐技术让模型学会人类的偏好比如回答得更友好、更真实。这个配置文件是用于让模型变得“更听话”。qwen3_lora_kto.yaml含义基于 Qwen3 模型使用 LoRA 技术进行KTO训练的配置。技术点KTOKnowledge Transfer Optimization也是一种对齐算法类似于 DPO旨在通过偏好数据优化模型输出。qwen3_lora_pretrain.yaml含义基于 Qwen3 模型使用 LoRA 技术进行预训练的配置。技术点这通常用于让模型学习新知识或新语言而不是微调回答风格。qwen3_lora_reward.yaml含义基于 Qwen3 模型使用 LoRA 技术训练奖励模型的配置。技术点奖励模型Reward Model不直接回答问题而是给其他模型的回答打分好评/差评用于后续的强化学习RLHF。qwen3_lora_sft_ds3.yaml含义基于 Qwen3 模型使用 LoRA 技术进行SFT训练且使用了DeepSpeed Stage 3的配置。技术点SFTSupervised Fine-Tuning监督微调是让模型学会具体任务如写代码、写文案。ds3代表使用了 DeepSpeed 的第三级优化这意味着该配置是为了在显存有限的情况下训练非常大的模型。qwen3_lora_sft_ray.yaml含义基于 Qwen3 模型使用 LoRA 技术进行SFT训练且使用了Ray框架的配置。技术点Ray 是一个用于分布式计算的框架。这个配置文件意味着训练任务被分布到了多台机器或多个节点上进行。qwen3_lora_sft_ray.sh含义启动上述qwen3_lora_sft_ray.yaml配置的Shell 脚本。技术点当你想运行分布式训练时通常会执行这个.sh文件。qwen3_lora_sft.yaml含义基于 Qwen3 模型使用 LoRA 技术进行SFT训练的标准配置。技术点这是最常规的微调配置不涉及复杂的分布式框架如 Ray或显存优化如 DeepSpeed。qwen3_preprocess.yaml含义数据预处理配置。技术点在训练开始前需要对原始数据进行清洗、分词、格式转换。这个文件定义了数据处理的规则。qwen3vl_lora_dpo.yaml含义基于Qwen3VL模型使用 LoRA 技术进行DPO训练的配置。技术点VL代表 Vision-Language视觉语言。这说明该配置是用于多模态模型能看懂图片的模型的训练。qwen3vl_lora_sft.yaml含义基于Qwen3VL模型使用 LoRA 技术进行SFT训练的配置。技术点这是多模态模型的标准微调配置。量化什么是模型量化模型量化是一种模型压缩技术其核心思想是将模型参数如权重和激活值从高精度数据类型通常是 FP16 或 BF16占用 16 位转换为低精度数据类型如 INT4 或 INT8占用 4 位或 8 位。原理类似于将高清图片压缩成低分辨率图片虽然会有微小的信息损失但整体效果依然可用。目的大幅减少模型所需的显存VRAM和内存RAM同时通常能提升推理速度。效果一个典型的 7B70亿参数模型原生 FP16 格式可能需要约 14GB 显存而经过 INT4 量化后显存占用可降至约 4-6GB使得在消费级显卡如 RTX 3060/4060上运行大模型成为可能。LlamaFactory 支持的量化方法LlamaFactory 主要支持两大类量化方法后训练量化PTQ和量化感知训练QAT。在实际应用中PTQ 更为常见因为它不需要重新训练模型。后训练量化PTQ 是在模型预训练完成后进行的量化。LlamaFactory 集成了目前主流的 PTQ 算法GPTQ原理一种基于逐块per-channel的权重量化方法。它通过最小化量化前后权重的差异来优化量化参数。特点精度损失较小兼容性较好是目前应用最广泛的量化方法之一。适用场景适用于大多数需要快速部署且对精度有一定要求的场景。AWQ原理激活感知权重量化。它不仅考虑权重还考虑激活值的分布通过保护重要的权重通道来减少精度损失。特点相比 GPTQAWQ 在低比特如 2-bit 或 3-bit量化时表现更优推理速度通常更快且对硬件的兼容性要求较低。适用场景追求极致推理速度和极低显存占用的场景。AQLM原理一种更先进的量化方法结合了矢量量化和标量量化的优势。特点在极低比特下如 2-bit能保持较好的性能但计算开销可能略高。量化感知训练QAT 是在模型微调SFT过程中引入量化模拟。LlamaFactory 支持 QLoRA。QLoRA将 LoRA低秩适应微调与量化结合。它在微调时使用量化模型但更新的是 LoRA 适配器的参数。优势可以在极低显存占用下例如仅需 6GB 显存对大模型进行微调训练完成后可以合并 LoRA 权重并导出为纯量化模型。LlamaFactory 中的量化配置在 LlamaFactory 中用户可以通过命令行参数或配置文件轻松启用量化。常见的配置选项包括--quantization_bit指定量化的比特数。常见值有0不量化、4INT4、8INT8。--quantization_method指定量化算法。常见值有gptq、awq、aqlm。--template根据不同的量化模型可能需要指定相应的对话模板如qwen、llama2等以确保输入格式正确。量化带来的收益与权衡收益显存占用大幅降低这是最直接的好处使得在低端硬件上运行大模型成为可能。推理速度提升低精度计算通常比高精度计算更快尤其是在支持 INT4 指令的现代 GPU如 NVIDIA 的 Tensor Core上。部署成本降低可以使用更便宜的硬件进行模型推理服务。什么是模型量化模型量化是一种模型压缩技术其核心思想是将模型参数如权重和激活值从高精度数据类型通常是 FP16 或 BF16占用 16 位转换为低精度数据类型如 INT4 或 INT8占用 4 位或 8 位。原理类似于将高清图片压缩成低分辨率图片虽然会有微小的信息损失但整体效果依然可用。目的大幅减少模型所需的显存VRAM和内存RAM同时通常能提升推理速度。效果一个典型的 7B70亿参数模型原生 FP16 格式可能需要约 14GB 显存而经过 INT4 量化后显存占用可降至约 4-6GB使得在消费级显卡如 RTX 3060/4060上运行大模型成为可能。LlamaFactory 支持的量化方法LlamaFactory 主要支持两大类量化方法后训练量化PTQ和量化感知训练QAT。在实际应用中PTQ 更为常见因为它不需要重新训练模型。后训练量化PTQ 是在模型预训练完成后进行的量化。LlamaFactory 集成了目前主流的 PTQ 算法GPTQ原理一种基于逐块per-channel的权重量化方法。它通过最小化量化前后权重的差异来优化量化参数。特点精度损失较小兼容性较好是目前应用最广泛的量化方法之一。适用场景适用于大多数需要快速部署且对精度有一定要求的场景。AWQ原理激活感知权重量化。它不仅考虑权重还考虑激活值的分布通过保护重要的权重通道来减少精度损失。特点相比 GPTQAWQ 在低比特如 2-bit 或 3-bit量化时表现更优推理速度通常更快且对硬件的兼容性要求较低。适用场景追求极致推理速度和极低显存占用的场景。AQLM原理一种更先进的量化方法结合了矢量量化和标量量化的优势。特点在极低比特下如 2-bit能保持较好的性能但计算开销可能略高。量化感知训练QAT 是在模型微调SFT过程中引入量化模拟。LlamaFactory 支持 QLoRA。QLoRA将 LoRA低秩适应微调与量化结合。它在微调时使用量化模型但更新的是 LoRA 适配器的参数。优势可以在极低显存占用下例如仅需 6GB 显存对大模型进行微调训练完成后可以合并 LoRA 权重并导出为纯量化模型。LlamaFactory 中的量化配置在 LlamaFactory 中用户可以通过命令行参数或配置文件轻松启用量化。常见的配置选项包括--quantization_bit指定量化的比特数。常见值有0不量化、4INT4、8INT8。--quantization_method指定量化算法。常见值有gptq、awq、aqlm。--template根据不同的量化模型可能需要指定相应的对话模板如qwen、llama2等以确保输入格式正确。量化带来的收益与权衡收益显存占用大幅降低这是最直接的好处使得在低端硬件上运行大模型成为可能。推理速度提升低精度计算通常比高精度计算更快尤其是在支持 INT4 指令的现代 GPU如 NVIDIA 的 Tensor Core上。部署成本降低可以使用更便宜的硬件进行模型推理服务。权衡精度损失量化不可避免地会带来模型性能的下降。一般来说比特数越低精度损失越大。但在 INT4 级别大多数模型的性能下降是可以接受的。兼容性问题不同的量化方法如 GPTQ 和 AWQ生成的模型文件格式不同可能需要特定的推理后端如 AutoGPTQ、AutoAWQ才能加载。的比特数。常见值有0不量化、4INT4、8INT8。--quantization_method指定量化算法。常见值有gptq、awq、aqlm。--template根据不同的量化模型可能需要指定相应的对话模板如qwen、llama2等以确保输入格式正确。量化带来的收益与权衡收益显存占用大幅降低这是最直接的好处使得在低端硬件上运行大模型成为可能。推理速度提升低精度计算通常比高精度计算更快尤其是在支持 INT4 指令的现代 GPU如 NVIDIA 的 Tensor Core上。部署成本降低可以使用更便宜的硬件进行模型推理服务。权衡精度损失量化不可避免地会带来模型性能的下降。一般来说比特数越低精度损失越大。但在 INT4 级别大多数模型的性能下降是可以接受的。兼容性问题不同的量化方法如 GPTQ 和 AWQ生成的模型文件格式不同可能需要特定的推理后端如 AutoGPTQ、AutoAWQ才能加载。