)
KTransformers × LLaMA-Factory 集成实战低资源硬件上微调百亿级 MoE 大模型LoRA SFT/DPO 全流程指南【免费下载链接】ktransformersA Flexible Framework for Experiencing Heterogeneous LLM Inference/Fine-tune Optimizations项目地址: https://gitcode.com/GitHub_Trending/ktr/ktransformersKTransformers 提供可插拔的异构推理/微调后端通过将 Attention/MoE 等核心算子卸载到 CPU 并启用 AMX/llamafile 内核配合 GPUCPU 异构协同能够在仅 2–4 张 RTX 4090 与高内存 CPU 的配置下对 DeepSeek-671B 这类超大规模 MoE 模型执行 LoRA 微调与推理。本文以仓库内 KTransformers Fine-Tuning × LLaMA-Factory Integration – User Guide 为主体完整讲解环境搭建、use_kt训练配置、LoRA adapter 的聊天与批量推理、指标评估以及实测性能与显存占用并辅以archive/kt-sft目录下的源码实现细节作为印证。读完本文你将掌握如何在 LLaMA-Factory 的统一编排下切换 KTransformers 后端微调超大规模 MoE 模型如何解读kt_optimize_rule放置策略文件如何加载基座 LoRA adapter进行对话与批量评测。一、方案背景与集成架构从 DeepSeek-V3/R1 到 Qwen3-MoE、Kimi-K2开源大模型的规模与能力持续跃升但动辄数百亿乃至数千亿的参数对 GPU 显存提出了极高要求使许多研究者在有限资源下难以完成微调。该集成方案提出一条可行路径LLaMA-Factory 负责统一编排——数据加载、训练调度、LoRA 注入与推理接口都由它管理KTransformers 作为可插拔的高性能后端在同一套训练配置下接管 Attention/MoE 等核心算子的计算实现高效的 GPUCPU 异构协同。这样资源受限的研究者既可以探索超大规模模型的微调也能快速定制 14B/30B 等中小模型以满足特定场景。在 LLaMA-Factory 中该项目横向对比了HuggingFace、Unsloth与KTransformers三种后端的 LoRA 微调表现原文档给出的结论是KTransformers 是唯一能在 4090 级别显卡上运行 671B 级超大规模 MoE 模型的方案同时在 DeepSeek-14B 这类较小 MoE 模型上吞吐更高、显存占用更低。对比数据见下表来源archive/kt-sft/README.mdUnder LoRA (BF16) NekoQA-10K 风格化对话数据集HuggingFace 后端Unsloth 后端KTransformers 后端14B-DeepSeekV2-Lite LoRA 微调吞吐303.58 token/s455.37 token/s530.38 token/s14B-DeepSeekV2-Lite GPU 显存32.12 GB9.64 GB6.08 GB671B-DeepSeekV3 LoRA 微调吞吐体积过大无法运行不支持40.35 token/s671B-DeepSeekV3 GPU 显存跨卡合计理论上 1400 GB †不支持70 GB ††1400 GB是 FP16 全参数驻留的理论值不可实际运行70 GB是采用 KTransformers 策略Attention 放 GPU MoE 分层卸载到 CPU时的实测峰值。从源码结构看该能力沉淀在仓库 archive/kt-sft/ktransformers/sft/ 目录中lora.py提供了面向 KTransformers 定制的KTrainer与 LoRA 注入逻辑peft_utils/提供了可感知异构放置的 PEFT 适配层metrics.py提供 BLEU/ROUGE 指标计算flops_utils/、metrics_utils/则分别承载性能剖析与指标基础设施。二、微调效果验证风格化对话与领域基准为了验证该方案的实战价值原文档使用三类代表性任务做了前后对比风格化对话CatGirl 语气、西化翻译语气与医疗问答验证个性化适配可在数小时内完成。2.1 风格化对话CatGirl 语气使用 NekoQA-10K 数据集目标是提升风格一致性与辨识度。对比基座模型与微调后模型的回复微调模型能更稳定地保持目标语气与称呼原文中以红框标注验证了风格迁移类微调的有效性。2.2 翻译风格基准Translational-Style-ChatLLM该数据集要求夸张的西化翻译语气属于典型的风格化定制任务。下表为 LoRA 微调前后的自动指标对比BLEU-1/2/3/4 与 ROUGE-1/2/L分数越高越好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.542.3 医疗问答基准AfriMed-QAACL 2025AfriMed-QA 是面向非洲医疗场景的领域数据集包含多项选择与简答两个子任务非常适合垂类微调评估AfriMed-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 的 LoRA 微调也能快速获得可用的任务性能。三、环境搭建一键安装 KTransformers 与 LLaMA-Factory原文档为简化安装为 KTransformers 打包了 wheel 文件以避免本地编译。搭建步骤如下注意请务必保证本机Python 版本、Torch 版本、CUDA 版本与 KTransformers wheel 文件名一一对应# 1. 创建 conda 环境 conda create -n Kllama python3.12 # 可选版本[3.10, 3.11, 3.12, 3.13] conda install -y -c conda-forge libstdcxx-ng gcc_impl_linux-64 # 注意即使你的 CUDA 不是 11.8也不要跳过下面这步 # 否则会报错ImportError: libcudart.so.11.0: cannot open shared object file: No such file or directory. 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 .[torch,metrics] --no-build-isolation # 3. 安装与你 Torch/Python 版本匹配的 KTransformers wheelCUDA 版本可与文件名不同 pip install ktransformers-0.4.1cu128torch27fancy-cp312-cp312-linux_x86_64.whl # 4. 安装 flash-attention按 Python 与 Torch 版本下载对应文件 pip install flash_attn-2.8.3cu12torch2.7cxx11abiTRUE-cp312-cp312-linux_x86_64.whl # abiTrue/False 可这样判断 # import torch # print(torch._C._GLIBCXX_USE_CXX11_ABI) # 5. 可选如需使用 flash_infer否则默认使用 triton git clone https://github.com/kvcache-ai/custom_flashinfer.git pip install custom_flashinfer/使用要点在 LLaMA-Factory 的 YAML 中设置use_kt: true并指定一个kt_optimize_rule文件即可让 KTransformers 接管核心计算其余训练参数仍由 LLaMA-Factory 管理。四、核心功能 1用 KTransformers 后端微调超大规模 MoE 模型启动训练USE_KT1 llamafactory-cli train examples/train_lora/deepseek3_lora_sft_kt.yaml前提必须提供BF16模型。DeepSeek-V3-671B 官方默认发布 FP8 权重需先转换为 BF16。训练配置示例来自 archive/kt-sft/README.md### 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: 8192关键字段说明use_kt: true启用 KTransformers 作为 LoRA SFT 后端这是整个集成的开关kt_optimize_rule指向一个算子放置策略YAML决定哪些层/算子放在 GPU、哪些卸载到 CPU、使用何种内核。仓库中实际存在的规则文件见 archive/kt-sft/ktransformers/optimize/optimize_rules/包括DeepSeek-V3-Chat-sft-amx.yaml、DeepSeek-V3-Chat-sft-amx-multi-gpu.yaml、DeepSeek-V3-Chat-sft-amx-multi-gpu-4.yaml、DeepSeek-V2-Lite-Chat-sft-amx.yaml、Qwen3Moe-sft-amx.yaml等cpu_infer: 32参与 CPU 推理/计算的线程数chunk_size: 8192与预填充/计算分块相关的参数。该方案同样支持使用 KTransformers 后端进行RL DPO 训练详见仓库文档 DPO 教程。4.1 解读kt_optimize_rule命名规则kt_optimize_rule控制放置策略。规则文件的命名遵循以下约定*为通配符命名模式含义DeepSeek-V2-Lite-Chat-*/DeepSeek-V3-Chat-*目标模型变体*-sft-*微调策略其余无-sft-为推理策略*-amx-*CPU 侧使用 AMX 内核否则使用llamafile*-multi-gpu-X在 X 张 GPU 上做模型并行省略 X 时默认为 2 张 GPU例如DeepSeek-V3-Chat-sft-amx-multi-gpu.yaml V3-Chat 微调 AMX 加速 双卡模型并行。4.2 推荐启用 AMX 加速可通过lscpu | grep amx检查 CPU 是否支持 AMX。AMX 支持 BF16/INT8可在规则文件中为 MoE 专家层指定 AMX 内核示例- match: name: ^model\\.layers\\..*\\.mlp\\.experts$ replace: class: ktransformers.operators.experts.KTransformersExperts # custom MoE Kernel with expert parallelism kwargs: prefill_device: cpu prefill_op: KExpertsTorch generate_device: cpu generate_op: KSFTExpertsCPU out_device: cuda backend: AMXInt8 # or AMXBF16 or llamafile (default)即用KTransformersExperts自定义 MoE 内核带专家并行替换原专家层预填充与生成阶段均在 CPU 上执行KExpertsTorch/KSFTExpertsCPU输出回传 CUDAbackend可在AMXInt8、AMXBF16与llamafile默认间切换。4.3 训练产出的适配器与源码视角训练结果输出到output_dir包含safetensors 格式的 LoRA 适配器与适配器元数据adapter_config.json供后续加载使用。从源码实现看archive/kt-sft/ktransformers/sft/lora.py 中的KTrainer针对异构放置做了三处关键定制这些与文档描述的训练行为直接对应跳过设备移动_move_model_to_device直接返回模型并打印提示Due to the placement feature in KTransformers, skip moving model to ...因为层放置由kt_optimize_rule决定不能再由 Trainer 统一搬运不依赖 Accelerator 做设备放置create_accelerator_and_postprocess中显式传入device_placement: False并自定义KAccelerator见同文件KAccelerator类让prepare_model原样返回模型只保存 LoRA 适配器save_model仅调用model.save_pretrained(output_dir)保存适配器含adapter_config.json不保存庞大的基座权重。同一文件中的lora_and_load_adapter展示了 LoRA 的目标模块集合覆盖了 MLA 结构的q_a_proj/q_b_proj/kv_a_proj_with_mqa/kv_b_proj、常规注意力q_proj/o_proj、mlp.gate_proj/up_proj/down_proj以及共享专家shared_experts.*默认r8, lora_alpha32, lora_dropout0.1——这与训练 YAML 中的lora_rank: 8及文档性能测试设置一致。PEFT 侧的注入适配见 archive/kt-sft/ktransformers/sft/peft_utils/mapping.pyget_peft_model与 archive/kt-sft/ktransformers/sft/peft_utils/lora_model.py。五、核心功能 2与微调后的模型对话基座 LoRA adapter启动交互式对话llamafactory-cli chat examples/inference/deepseek3_lora_sft_kt.yaml使用 KT 训练出的 safetensors 适配器进行推理的配置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要点adapter_name_or_path指向训练产出的适配器目录infer_backend必须设为ktransformers才会走 KT 后端同时支持GGUF格式的适配器safetensors 适配器填目录路径GGUF 适配器填文件路径加载过程中LLaMA-Factory 会将层名映射到 KTransformers 的命名体系日志中会出现Loaded adapter weight: XXX - XXX之类的映射记录。六、核心功能 3批量推理与指标评估基座 LoRA adapter启动 API 服务API_PORT8000 llamafactory-cli api examples/inference/deepseek3_lora_sft_kt.yaml配置与对话推理一致infer_backend: ktransformersuse_kt: true。该 API 的调用方式与原生 LLaMA-Factory 保持一致因此可以沿用既有的批量推理脚本对测试集逐条请求预测结果。6.1 离线指标评估pred2metrics批量推理得到prediction/label对后可用仓库自带的离线评测脚本计算 BLEU/ROUGE 指标见 archive/kt-sft/test_adapter/pred2metrics.pypython pred2metrics.py --pred-file preds.json --output-dir metrics_out --tokenizer opensourcerelease/DeepSeek-V3-bf16脚本会读取包含prediction与label字段的 JSON 文件调用ktransformers.sft.metrics.ComputeSimilarity实现见 archive/kt-sft/ktransformers/sft/metrics.py完成评估并输出metrics.json。6.2 指标计算的源码实现ComputeSimilarity的实现细节可以解释第二节各基准表数字的由来它对预测与参考文本分别用jieba分词中文场景ROUGE 系列采用rouge_chinese计算 F1 并乘 100BLEU-1/2/3/4 使用nltk.translate.bleu_score.sentence_bleu并配合SmoothingFunction().method3平滑最终对全部样本取均值见 metrics.py。archive/kt-sft/test_adapter/目录下还提供inspect_adapter.py、data_transfer.py、test_grad.py、time_test_lora_train.py等辅助脚本分别用于检查适配器结构、转换训练数据格式、验证梯度与计时训练可作为二次开发的参考起点。七、KT 微调速度用户侧视角7.1 端到端性能定义step_time一个完整优化 step张量搬运 Attention MoE 其他计算的墙钟时间tokens_per_step GAS × qlentoken/s tokens_per_step / step_time。测试设置GAS16、qlen512即tokens_per_step 8192LoRAr8, alpha32, dropout0.1启用AMXGPU 为 RTX 4090CPU 为 Intel Xeon Platinum 8488C。实测结果来源archive/kt-sft/README.mdDeepSeek-V3-671Bstep_time 203 s→token/s ≈ 8192 / 203 ≈ 40.35DeepSeek-V2-Lite-14Bstep_time 36 s→token/s ≈ 8192 / 36 ≈ 227.67.2 GPU/CPU 内存占用DeepSeek-V3671B61 层含 58 个 MoE 层总 GPU 显存约70 GB多卡合计RAM 约1.2–1.3 TBDeepSeek-V2-Lite14B27 层含 26 个 MoE 层GPU 显存约5.5 GBRAM 约30 GB。可见将专家层等海量权重以 BF16/INT8 形式驻留于大内存 CPU、仅将 Attention 与 LoRA 可训练参数留在 GPU 的放置策略把 671B 级模型的微调显存需求压缩到了消费级显卡可承受的范围。仓库中 archive/kt-sft/ktransformers/sft/flops_utils/custom_profile.py 与 time_test_lora_train.py 等脚本可用于进一步剖析单 step 的耗时构成。八、总结通过将KTransformers LoRA 微调集成进LLaMA-Factory该方案为 MoE 大模型的训练与部署提供了一条低资源路径KTransformers 带来了面向 DeepSeek/Qwen/Kimi 系列、含 AMX 加速内核的前沿优化LoRA 将可训练参数压缩到极低水平从而显著降低 GPU 显存需求LLaMA-Factory 则提供了友好统一的训练/推理接口。三者结合后用户可以在显存受限的消费级硬件上同时获得内存节省、速度提升与易用性既能在 2–4 张 4090 大内存 CPU 上微调 671B 级模型也能对 14B/30B 中小模型快速完成领域定制。后续深入阅读建议训练/推理规则文件对照 archive/kt-sft/ktransformers/optimize/optimize_rules/DPO 训练流程参考 doc/en/SFT/DPO_tutorial.mdLoRA 注入与指标计算实现参考 archive/kt-sft/ktransformers/sft/ 目录下的lora.py、peft_utils/与metrics.py。【免费下载链接】ktransformersA Flexible Framework for Experiencing Heterogeneous LLM Inference/Fine-tune Optimizations项目地址: https://gitcode.com/GitHub_Trending/ktr/ktransformers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考