Llamafactory的使用(3)

在(1)中我们也提到了,llamafactory中有很多的yaml文件,现在就对其进行详细讲解

一、示例

所有示例训练方式

  1. qwen3_lora_dpo.yaml

    • 含义 :基于 Qwen3 模型,使用 LoRA 技术进行 DPO 训练的配置。

    • 技术点:DPO(Direct Preference Optimization)是一种对齐技术,让模型学会人类的偏好(比如回答得更友好、更真实)。这个配置文件是用于让模型变得"更听话"。

  2. qwen3_lora_kto.yaml

    • 含义 :基于 Qwen3 模型,使用 LoRA 技术进行 KTO 训练的配置。

    • 技术点:KTO(Knowledge Transfer Optimization)也是一种对齐算法,类似于 DPO,旨在通过偏好数据优化模型输出。

  3. qwen3_lora_pretrain.yaml

    • 含义 :基于 Qwen3 模型,使用 LoRA 技术进行 预训练 的配置。

    • 技术点:这通常用于让模型学习新知识或新语言,而不是微调回答风格。

  4. qwen3_lora_reward.yaml

    • 含义 :基于 Qwen3 模型,使用 LoRA 技术训练 奖励模型 的配置。

    • 技术点:奖励模型(Reward Model)不直接回答问题,而是给其他模型的回答打分(好评/差评),用于后续的强化学习(RLHF)。

  5. qwen3_lora_sft_ds3.yaml

    • 含义 :基于 Qwen3 模型,使用 LoRA 技术进行 SFT 训练,且使用了 DeepSpeed Stage 3 的配置。

    • 技术点 :SFT(Supervised Fine-Tuning,监督微调)是让模型学会具体任务(如写代码、写文案)。ds3 代表使用了 DeepSpeed 的第三级优化,这意味着该配置是为了在显存有限的情况下训练非常大的模型。

  6. qwen3_lora_sft_ray.yaml

    • 含义 :基于 Qwen3 模型,使用 LoRA 技术进行 SFT 训练,且使用了 Ray 框架的配置。

    • 技术点:Ray 是一个用于分布式计算的框架。这个配置文件意味着训练任务被分布到了多台机器或多个节点上进行。

  7. qwen3_lora_sft_ray.sh

    • 含义 :启动上述 qwen3_lora_sft_ray.yaml 配置的 Shell 脚本

    • 技术点 :当你想运行分布式训练时,通常会执行这个 .sh 文件。

  8. qwen3_lora_sft.yaml

    • 含义 :基于 Qwen3 模型,使用 LoRA 技术进行 SFT 训练的标准配置。

    • 技术点:这是最常规的微调配置,不涉及复杂的分布式框架(如 Ray)或显存优化(如 DeepSpeed)。

  9. qwen3_preprocess.yaml

    • 含义数据预处理 配置。

    • 技术点:在训练开始前,需要对原始数据进行清洗、分词、格式转换。这个文件定义了数据处理的规则。

  10. qwen3vl_lora_dpo.yaml

    • 含义 :基于 Qwen3VL 模型,使用 LoRA 技术进行 DPO 训练的配置。

    • 技术点VL 代表 Vision-Language(视觉语言)。这说明该配置是用于多模态模型(能看懂图片的模型)的训练。

  11. qwen3vl_lora_sft.yaml

    • 含义 :基于 Qwen3VL 模型,使用 LoRA 技术进行 SFT 训练的配置。

    • 技术点:这是多模态模型的标准微调配置。

二、量化

什么是模型量化?

模型量化是一种模型压缩技术,其核心思想是将模型参数(如权重和激活值)从高精度数据类型(通常是 FP16 或 BF16,占用 16 位)转换为低精度数据类型(如 INT4 或 INT8,占用 4 位或 8 位)。

  • 原理:类似于将高清图片压缩成低分辨率图片,虽然会有微小的信息损失,但整体效果依然可用。

  • 目的:大幅减少模型所需的显存(VRAM)和内存(RAM),同时通常能提升推理速度。

  • 效果:一个典型的 7B(70亿参数)模型,原生 FP16 格式可能需要约 14GB 显存,而经过 INT4 量化后,显存占用可降至约 4-6GB,使得在消费级显卡(如 RTX 3060/4060)上运行大模型成为可能。

LlamaFactory 支持的量化方法?

LlamaFactory 主要支持两大类量化方法:后训练量化(PTQ)和量化感知训练(QAT)。在实际应用中,PTQ 更为常见,因为它不需要重新训练模型。

后训练量化

PTQ 是在模型预训练完成后进行的量化。LlamaFactory 集成了目前主流的 PTQ 算法:

  1. GPTQ

    • 原理:一种基于逐块(per-channel)的权重量化方法。它通过最小化量化前后权重的差异来优化量化参数。

    • 特点:精度损失较小,兼容性较好,是目前应用最广泛的量化方法之一。

    • 适用场景:适用于大多数需要快速部署且对精度有一定要求的场景。

  2. AWQ

    • 原理:激活感知权重量化。它不仅考虑权重,还考虑激活值的分布,通过保护重要的权重通道来减少精度损失。

    • 特点:相比 GPTQ,AWQ 在低比特(如 2-bit 或 3-bit)量化时表现更优,推理速度通常更快,且对硬件的兼容性要求较低。

    • 适用场景:追求极致推理速度和极低显存占用的场景。

  3. AQLM

    • 原理:一种更先进的量化方法,结合了矢量量化和标量量化的优势。

    • 特点:在极低比特下(如 2-bit)能保持较好的性能,但计算开销可能略高。

量化感知训练?

QAT 是在模型微调(SFT)过程中引入量化模拟。LlamaFactory 支持 QLoRA。

  • QLoRA:将 LoRA(低秩适应)微调与量化结合。它在微调时使用量化模型,但更新的是 LoRA 适配器的参数。

  • 优势:可以在极低显存占用下(例如仅需 6GB 显存)对大模型进行微调,训练完成后可以合并 LoRA 权重并导出为纯量化模型。

LlamaFactory 中的量化配置?

在 LlamaFactory 中,用户可以通过命令行参数或配置文件轻松启用量化。常见的配置选项包括:

  • --quantization_bit :指定量化的比特数。常见值有 0(不量化)、4(INT4)、8(INT8)。

  • --quantization_method :指定量化算法。常见值有 gptqawqaqlm

  • --template :根据不同的量化模型,可能需要指定相应的对话模板(如 qwenllama2 等),以确保输入格式正确。

量化带来的收益与权衡

收益

  • 显存占用大幅降低:这是最直接的好处,使得在低端硬件上运行大模型成为可能。

  • 推理速度提升:低精度计算通常比高精度计算更快,尤其是在支持 INT4 指令的现代 GPU(如 NVIDIA 的 Tensor Core)上。

  • 部署成本降低:可以使用更便宜的硬件进行模型推理服务。

什么是模型量化

模型量化是一种模型压缩技术,其核心思想是将模型参数(如权重和激活值)从高精度数据类型(通常是 FP16 或 BF16,占用 16 位)转换为低精度数据类型(如 INT4 或 INT8,占用 4 位或 8 位)。

  • 原理:类似于将高清图片压缩成低分辨率图片,虽然会有微小的信息损失,但整体效果依然可用。

  • 目的:大幅减少模型所需的显存(VRAM)和内存(RAM),同时通常能提升推理速度。

  • 效果:一个典型的 7B(70亿参数)模型,原生 FP16 格式可能需要约 14GB 显存,而经过 INT4 量化后,显存占用可降至约 4-6GB,使得在消费级显卡(如 RTX 3060/4060)上运行大模型成为可能。

LlamaFactory 支持的量化方法

LlamaFactory 主要支持两大类量化方法:后训练量化(PTQ)和量化感知训练(QAT)。在实际应用中,PTQ 更为常见,因为它不需要重新训练模型。

后训练量化

PTQ 是在模型预训练完成后进行的量化。LlamaFactory 集成了目前主流的 PTQ 算法:

  1. GPTQ

    • 原理:一种基于逐块(per-channel)的权重量化方法。它通过最小化量化前后权重的差异来优化量化参数。

    • 特点:精度损失较小,兼容性较好,是目前应用最广泛的量化方法之一。

    • 适用场景:适用于大多数需要快速部署且对精度有一定要求的场景。

  2. AWQ

    • 原理:激活感知权重量化。它不仅考虑权重,还考虑激活值的分布,通过保护重要的权重通道来减少精度损失。

    • 特点:相比 GPTQ,AWQ 在低比特(如 2-bit 或 3-bit)量化时表现更优,推理速度通常更快,且对硬件的兼容性要求较低。

    • 适用场景:追求极致推理速度和极低显存占用的场景。

  3. AQLM

    • 原理:一种更先进的量化方法,结合了矢量量化和标量量化的优势。

    • 特点:在极低比特下(如 2-bit)能保持较好的性能,但计算开销可能略高。

量化感知训练

QAT 是在模型微调(SFT)过程中引入量化模拟。LlamaFactory 支持 QLoRA。

  • QLoRA:将 LoRA(低秩适应)微调与量化结合。它在微调时使用量化模型,但更新的是 LoRA 适配器的参数。

  • 优势:可以在极低显存占用下(例如仅需 6GB 显存)对大模型进行微调,训练完成后可以合并 LoRA 权重并导出为纯量化模型。

LlamaFactory 中的量化配置

在 LlamaFactory 中,用户可以通过命令行参数或配置文件轻松启用量化。常见的配置选项包括:

  • --quantization_bit :指定量化的比特数。常见值有 0(不量化)、4(INT4)、8(INT8)。

  • --quantization_method :指定量化算法。常见值有 gptqawqaqlm

  • --template :根据不同的量化模型,可能需要指定相应的对话模板(如 qwenllama2 等),以确保输入格式正确。

量化带来的收益与权衡

收益

  • 显存占用大幅降低:这是最直接的好处,使得在低端硬件上运行大模型成为可能。

  • 推理速度提升:低精度计算通常比高精度计算更快,尤其是在支持 INT4 指令的现代 GPU(如 NVIDIA 的 Tensor Core)上。

  • 部署成本降低:可以使用更便宜的硬件进行模型推理服务。

权衡

  • 精度损失:量化不可避免地会带来模型性能的下降。一般来说,比特数越低,精度损失越大。但在 INT4 级别,大多数模型的性能下降是可以接受的。

  • 兼容性问题:不同的量化方法(如 GPTQ 和 AWQ)生成的模型文件格式不同,可能需要特定的推理后端(如 AutoGPTQ、AutoAWQ)才能加载。