KTransformers × LLaMA-Factory 用户指南:2–4 张 RTX 4090 微调 671B 级 MoE 大模型

发布时间:2026/9/13 18:33:51
KTransformers × LLaMA-Factory 用户指南:2–4 张 RTX 4090 微调 671B 级 MoE 大模型 KTransformers × LLaMA-Factory 用户指南2–4 张 RTX 4090 微调 671B 级 MoE 大模型【免费下载链接】ktransformersA Flexible Framework for Experiencing Heterogeneous LLM Inference/Fine-tune Optimizations项目地址: https://gitcode.com/GitHub_Trending/ktr/ktransformers本文面向资源受限的研究者与开发者讲解 KTransformers 与 LLaMA-Factory 集成后的 LoRA 微调完整工作流从环境搭建到使用 KTransformers 异构GPUCPU后端微调 DeepSeek-V3-671B 等超大规模 MoE 模型再到加载 base LoRA adapter 进行对话、批量推理与指标评测。读完本文后你可以直接复制文中的命令与 YAML 配置在 2–4 张 RTX 4090 大内存 CPU 的机器上跑通训练 → 加载 adapter → 推理评测的全链路。一、方案定位为什么是 LLaMA-Factory KTransformers从 DeepSeek-V3/R1 到 Qwen3-MoE、Kimi-K2每一代开源大模型都在性能和规模上持续跃升但数十亿甚至上千亿参数让在有限资源下微调超大模型成为普遍痛点。本文的方案是用 2–4 张 RTX 4090 加一台高内存 CPU 机器微调 DeepSeek-671B 这一量级的 MoE 模型。分工如下LLaMA-Factory是统一的编排/配置层负责数据处理、训练调度、LoRA 注入和推理接口KTransformers作为可插拔的高性能后端在同一份训练配置下接管 Attention / MoE 等核心算子实现GPU CPU 异构协同Attention 与门控走 GPUExpert 前向/反向下沉到 CPU 侧内核。三个后端的 LoRA 微调对比在 LLaMA-Factory 内官方对比了HuggingFace、Unsloth、KTransformers三种后端的 LoRA 微调能力。KTransformers 是超大 MoE 模型如 671B在 4090 级别硬件上唯一可行的方案并且在小规模 MoE 模型如 14B上也有更高的吞吐与更低的显存占用场景LoRA BF16 NekoQA-10K 风格化对话数据HuggingFace 后端Unsloth 后端KTransformers 后端[14B-DeepSeekV2-Lite] LoRA 微调吞吐303.58 token/s455.37 token/s530.38 token/s[14B-DeepSeekV2-Lite] GPU 显存32.12 GB9.64 GB6.08 GB[671B-DeepSeekV3] LoRA 微调吞吐显存需求过大无法运行不支持40.35 token/s[671B-DeepSeekV3] GPU 显存多卡合计理论 1400 GB †不支持70 GB††1400 GB是 FP16 全参数常驻的理论占用不可运行70 GB是 KT 策略Attention 驻 GPU 分层 MoE offload下的实测峰值。该方案的验证任务覆盖三类代表性场景风格化对话、西化翻译腔调、医疗问答结论是个性化适配可以在数小时内完成。二、微调效果示例原文实测结果风格化对话CatGirl 语气数据集采用 NekoQA-10K 风格化对话语料目标是提升风格一致性与可辨识度。基座模型与微调模型的输出对比显示微调后的模型能更稳定地保持目标语气与称呼方式验证了风格迁移微调的有效性。基准评测翻译腔 医疗问答评测使用两个数据集Translational-Style-ChatLLM要求夸张的西化翻译腔属于清晰、风格化的定制化任务AfriMed-QAACL 2025面向非洲医疗场景的垂直领域数据集含选择题与简答题子任务适合垂直微调评估。下表为 LoRA 微调前后各指标的对比Translational-Style 数据集BLEU-1BLEU-2BLEU-3BLEU-4ROUGE-1ROUGE-2ROUGE-LV2-Lite无 LoRA20.668.334.542.8922.714.5219.19KT-LoRA 微调后 V2-Lite35.4122.4415.4211.1842.0318.3833.10V3 基座无 LoRA8.493.341.620.9615.912.5510.07KT-LoRA 微调后 V337.0223.7016.2111.4943.4318.9634.54AfriMed-QA简答题BLEU-1BLEU-2BLEU-3BLEU-4ROUGE-1ROUGE-2ROUGE-LV2-Lite无 LoRA13.5811.129.107.2322.487.8111.73KT-LoRA 微调后 V2-Lite35.9027.6322.9919.1535.2517.5028.44V3 基座无 LoRA12.7510.278.055.9920.335.6510.11KT-LoRA 微调后 V342.4234.1228.9524.5441.9722.3733.28AfriMed-QA选择题AccuracyV2-Lite无 LoRA0.0645KT-LoRA 微调后 V2-Lite0.4812V3 基座无 LoRA0.5833KT-LoRA 微调后 V30.7930可以看到即便在超大 MoE 模型上KTransformers 支撑的微调也能快速达到较强的任务表现。三、环境搭建同时装好 LLaMA-Factory 与 KTransformers安装时同时部署LLaMA-Factory与KTransformers环境。为简化 KTransformers 的安装流程本指南使用 PyPI 包以避免本地编译。注意请确保本机Python 版本、Torch 版本与 CUDA 版本和所装包兼容。# 1. 创建 conda 环境 conda create -n Kllama python3.12 # 可选版本[3.11, 3.12, 3.13] conda install -y -c conda-forge libstdcxx-ng gcc_impl_linux-64 conda install -y -c nvidia/label/cuda-11.8.0 cuda-runtime # 2. 安装 LLaMA-Factory 环境 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e . # 3. 安装 KTransformers SFT 包[sft] 附加依赖组 pip install ktransformers[sft] # 4. 安装 flash-attention按 Python 与 Torch 版本从 flash-attention 官方 releases 下载对应预编译包 pip install flash-attn --no-build-isolation # abiTrue/False 可通过以下方式确认 # import torch # print(torch._C._GLIBCXX_USE_CXX11_ABI) # 5. 可选如需使用 flash_infer否则默认走 triton # 克隆 kvcache-ai 组织的 custom_flashinfer 仓库后执行 # pip install custom_flashinfer/使用要点在 LLaMA-Factory 的 YAML 中设置use_kt: true并指定kt_optimize_rule文件即可让 KTransformers 接管核心计算。下文三个核心功能各给出一份典型配置。四、核心功能 1用 KTransformers 后端微调超大 MoE 模型4.1 训练命令USE_KT1 ACCELERATE_USE_KTtrue accelerate launch \ --config_file examples/ktransformers/accelerate/fsdp2_kt_bf16.yaml \ -m llamafactory.cli train examples/ktransformers/train_lora/deepseek_v3_lora_sft_kt.yaml注意必须提供BF16权重的模型。DeepSeek-V3-671B 官方默认发布 FP8 版本需先按 DeepSeek-V3 仓库提供的fp8_cast_bf16.py脚本将权重转换为 BF16 再使用。4.2 训练配置 YAML完整版可直接参考### model model_name_or_path: opensourcerelease/DeepSeek-V3-bf16 trust_remote_code: true ### method stage: sft do_train: true finetuning_type: lora lora_rank: 8 lora_target: all ### dataset dataset: identity template: deepseek cutoff_len: 2048 max_samples: 100000 overwrite_cache: true preprocessing_num_workers: 16 dataloader_num_workers: 4 ### output output_dir: saves/Kllama_deepseekV3 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 ### ktransformers use_kt: true # use KTransformers as LoRA sft backend kt_optimize_rule: examples/kt_optimize_rules/DeepSeek-V3-Chat-sft-amx-multi-gpu.yaml cpu_infer: 32 chunk_size: 8192KT 相关参数说明use_kt: true启用 KTransformers 作为 LoRA SFT 后端kt_optimize_rule指定算子放置placement策略文件决定每个模块跑在 GPU/CPU 的哪个算子上cpu_infer: 32CPU 侧推理/计算使用的线程数chunk_size: 8192GPU/CPU 分层传输的块大小。4.3kt_optimize_rule放置策略文件如何命名与解析kt_optimize_rule是放置策略的入口。仓库内提供了一整套规则文件例如 SFT 专用规则 DeepSeek-V3-Chat-sft-amx-multi-gpu.yaml。文件命名约定*为通配符命名模式含义DeepSeek-V2-Lite-Chat-*/DeepSeek-V3-Chat-*目标模型变体*-sft-*微调策略其余为推理策略*-amx-*CPU 侧使用 AMX 加速否则使用llamafile内核*-multi-gpu-X*X 卡模型并行省略 X → 默认 2 卡例如DeepSeek-V3-Chat-sft-amx-multi-gpu.yaml V3-Chat 的微调 AMX 加速 2 卡模型并行。从源码结构看规则文件是一组match/replace条目用正则匹配 HF 模块路径如^model\.layers\..*\.mlp\.experts$再把对应模块替换为 KT 的定制算子并注入设备参数。以仓库中的 SFT 规则文件为例专家模块的替换条目为- match: name: ^model\.layers\..*\.mlp\.experts$ replace: class: ktransformers.operators.experts.KTransformersExperts # 带专家并行的定制 MoE Kernel kwargs: prefill_device: cpu prefill_op: KExpertsTorch generate_device: cpu generate_op: KSFTExpertsCPU out_device: cuda backend: AMXInt8 # 可选 AMXBF16 或 llamafile默认 recursive: False # 不递归注入该模块的子模块要点KTransformersExperts/KSFTExpertsCPU等 SFT 专家算子定义在 experts.py 中prefill_device/generate_device分离了前向填充与生成两种路径的设备out_device指定结果回传位置backend支持AMXInt8、AMXBF16、llamafile默认三种 CPU 内核路径完整的 SFT 规则文件同时覆盖了embed_tokens放 CPU、RotaryEmbedding、Linear走KLinearTorch、MoE/gate/self_attn按层号切分到cuda:0/cuda:1两卡等模块实现Attention/门控在 GPU、Expert 计算在 CPU的异构布局这正是 671B 模型 70 GB 显存峰值的来源。硬件建议在可用情况下优先启用AMX 加速用lscpu | grep amx检测AMX 支持 BF16/INT8。LoRA 权重注入与 SFT 相关的 Python 侧逻辑位于 sft/lora.py 与 sft/ 目录当前仓库将 SFT 内核进一步演进到了 kt-kernel/python/sft/ 下的独立包含 backend、checkpoint、autograd、amx 等模块可结合 开发者技术笔记 深入阅读。4.4 训练产物训练输出写入output_dir本例为saves/Kllama_deepseekV3包含safetensors 格式的 adapter 权重以及供后续加载使用的 adapter 元数据。训练过程中的 loss 曲线与保存行为由plot_loss、save_steps、logging_steps等字段控制。五、核心功能 2与微调后的模型对话base LoRA adapter执行命令llamafactory-cli chat examples/inference/qwen3_lora_sft.yaml即使用 KT 训练出的 safetensors adapter 做推理model_name_or_path: opensourcerelease/DeepSeek-V3-bf16 adapter_name_or_path: saves/Kllama_deepseekV3 template: deepseek infer_backend: ktransformers # choices: [huggingface, vllm, sglang, ktransformers] trust_remote_code: true use_kt: true # use KTransformers as LoRA sft backend to inference kt_optimize_rule: examples/kt_optimize_rules/DeepSeek-V3-Chat-sft-amx-multi-gpu.yaml cpu_infer: 32 chunk_size: 8192注意infer_backend: ktransformers与训练侧的use_kt: true配套kt_optimize_rule/cpu_infer/chunk_size建议与训练时保持一致保证放置策略连贯。GGUF adapter 也受支持adapter_name_or_path对 safetensors 填目录对 GGUF 填文件路径即可。加载阶段LLaMA-Factory 会把 HF 层名映射到 KT 的命名体系日志中会出现形如Loaded adapter weight: XXX - XXX的逐层加载记录可用于核对 adapter 是否正确落位六、核心功能 3批量推理 指标评测base LoRA adapter执行命令API_PORT8000 llamafactory-cli api examples/inference/qwen3_lora_sft.yaml即通过 KT 微调后的 adapter 对外提供 API 服务其余 API 的用法与 LLaMA-Factory 原生方式一致可直接对接批量评测脚本如上文第二节的 BLEU/ROUGE/Accuracy 评测流程。API 模式使用与对话模式相同的配置文件model_name_or_path: opensourcerelease/DeepSeek-V3-bf16 adapter_name_or_path: saves/Kllama_deepseekV3 template: deepseek infer_backend: ktransformers # choices: [huggingface, vllm, sglang, ktransformers] trust_remote_code: true use_kt: true # use KTransformers as LoRA sft backend to inference kt_optimize_rule: examples/kt_optimize_rules/DeepSeek-V3-Chat-sft-amx-multi-gpu.yaml cpu_infer: 32 chunk_size: 8192七、KT 微调速度用户视角的性能与资源占用7.1 端到端吞吐定义step_time一个完整优化步张量搬运 Attention MoE 其他计算的墙钟时间tokens_per_step GAS × qlentoken/s tokens_per_step / step_time。测试设置GAS16、qlen512即tokens_per_step 8192LoRA 超参r8, alpha32, dropout0.1启用AMXGPU 为 RTX 4090CPU 为 Intel Xeon Platinum 8488C。实测结果模型step_time吞吐DeepSeek-V3-671B203 s≈ 8192 / 203 ≈40.35 token/sDeepSeek-V2-Lite-14B36 s≈ 8192 / 36 ≈227.6 token/s7.2 GPU/CPU 内存占用模型结构GPU 显存CPU 内存DeepSeek-V3671B61 层含 58 层 MoE约70 GB多卡合计约1.2–1.3 TBDeepSeek-V2-Lite14B27 层含 26 层 MoE约5.5 GB约30 GB这组数字说明该方案的适用前提GPU 显存只需承载 Attention 与少量常驻权重绝大部分 Expert 权重驻留 CPU 内存因此硬件选择上高内存 CPU 多张中端 GPU比单张高端 GPU更划算同时 CPU 内存至少需要能装下模型全量权重的余量。八、小结将KTransformers LoRA 微调集成进LLaMA-Factory后本方案给出了在 MoE LLM 上做高效训练与部署的完整路径KT 带来面向 DeepSeek / Qwen / Kimi 系列、带 AMX 加速内核的异构优化LoRA 让 GPU 显存占用降到极低水平LLaMA-Factory 则提供友好的统一接口。三者结合类似 Unsloth 的加速思路意味着即便数十亿到上千亿参数的模型也能在消费级硬件上完成微调与低延迟部署——显存节省、速度提升、易用性三者兼得。建议在你下一个 MoE 项目上尝试 LLaMA-Factory KTransformers 组合若想继续深入训练侧实现细节可阅读配套的 Cookbook 与 开发者技术笔记。【免费下载链接】ktransformersA Flexible Framework for Experiencing Heterogeneous LLM Inference/Fine-tune Optimizations项目地址: https://gitcode.com/GitHub_Trending/ktr/ktransformers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考