<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>SGLang | KVCache.ai</title>
    <link>https://kvcache.ai/zh/tag/sglang/</link>
      <atom:link href="https://kvcache.ai/zh/tag/sglang/index.xml" rel="self" type="application/rss+xml" />
    <description>SGLang</description>
    <generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>zh-Hans</language><lastBuildDate>Sat, 01 Nov 2025 00:00:00 +0000</lastBuildDate>
    <image>
      <url>https://kvcache.ai/media/logo.svg</url>
      <title>SGLang</title>
      <link>https://kvcache.ai/zh/tag/sglang/</link>
    </image>
    
    <item>
      <title>KTransformers &#43; LLaMA-Factory &#43; SGLang：低成本本地超大模型微调与推理</title>
      <link>https://kvcache.ai/zh/blog/ktransformers-llamafactory-fine-tuning/</link>
      <pubDate>Sat, 01 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://kvcache.ai/zh/blog/ktransformers-llamafactory-fine-tuning/</guid>
      <description>&lt;p&gt;在本地工作站上做大模型实验，难点往往不在写出训练脚本，而在有限预算下把大规模 MoE 模型接进自己的数据、评测和应用原型里。很多团队只是想验证一个垂直数据集、调一版产品 demo，或跑一轮 benchmark，结果先遇到的是显存不够、CPU/内存该怎么配、整机成本是否扛得住。本文从这个场景出发，展示如何把 KTransformers、LLaMA-Factory 与 SGLang 组合成一条面向低成本、低显存的训推一体化流程：LLaMA-Factory 组织 LoRA 微调，KTransformers 通过 GPU+CPU 异构执行降低显存门槛，SGLang 承接后续推理服务和 benchmark。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://typora-tuchuang-jimmy.oss-cn-beijing.aliyuncs.com/img/20251229170124823.png&#34;
alt=&#34;KTransformers、LLaMA-Factory 与 SGLang 本地微调和推理流水线&#34;
style=&#34;zoom:50%&#34;/&gt;&lt;/p&gt;
&lt;p&gt;在架构上，LLaMA-Factory 位于用户最直接接触的编排层，负责数据、模板、LoRA 配置、checkpoint 输出，以及早期的 chat/API 验证入口。KTransformers 接在更底层，作为 Attention/MoE 算子的 LoRA backend engine，把显存压力最大的 expert 计算放到 GPU+CPU 异构路径里，同时尽量保留 LLaMA-Factory 原有的使用方式。SGLang 则负责推理侧，把训练好的 adapter 接入服务化推理、批量请求和 benchmark。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://typora-tuchuang-jimmy.oss-cn-beijing.aliyuncs.com/img/20260525034705-ktransformers-ft-01-architecture.png&#34;
alt=&#34;KTransformers and LLaMA-Factory integration architecture&#34;
style=&#34;zoom:45%&#34;/&gt;&lt;/p&gt;
&lt;h2 id=&#34;为什么这个集成重要&#34;&gt;为什么这个集成重要&lt;/h2&gt;
&lt;p&gt;在同一套 LLaMA-Factory LoRA 微调流程下，我们对比了 HuggingFace、Unsloth 和 KTransformers 三种后端。KTransformers 的重点不是把所有参数塞进 GPU，而是把 MoE 模型拆到更适合的 CPU/GPU 异构执行路径里；因此在 4090 级硬件上，它可以把更大的 MoE 模型纳入本地实验范围。对 DeepSeek-V2-Lite 这类较小 MoE 模型，它也能带来更高吞吐和更低 GPU 显存占用。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;LoRA BF16 + NekoQA-10K 风格化对话&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;HuggingFace Backend&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;Unsloth Backend&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;KTransformers Backend&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek-V2-Lite 14B LoRA 微调吞吐&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;303.58 token/s&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;455.37 token/s&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;530.38 token/s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek-V2-Lite 14B GPU 显存&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;32.12 GB&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;9.64 GB&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;6.08 GB&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek-V3 671B LoRA 微调吞吐&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;过大，无法运行&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;不支持&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;40.35 token/s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek-V3 671B GPU 显存，跨 GPU 求和&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;理论值 1400 GB&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;不支持&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;70 GB 实测峰值&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这里的 1400 GB 指 FP16 全参数常驻显存的理论需求，并不是一套可运行配置。70 GB 是 KTransformers 策略下的实测峰值：Attention 放在 GPU 上，MoE expert 负载按放置策略转到 CPU 侧执行。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://typora-tuchuang-jimmy.oss-cn-beijing.aliyuncs.com/img/20260525034705-ktransformers-ft-02-backend-comparison.png&#34;
alt=&#34;Backend comparison by model scale&#34;
style=&#34;zoom:42%&#34;/&gt;&lt;/p&gt;
&lt;h2 id=&#34;微调效果&#34;&gt;微调效果&lt;/h2&gt;
&lt;p&gt;我们用三个代表性任务观察微调后的变化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;风格化对话：基于 NekoQA-10K，让模型更一致地保持目标人格和称呼方式。&lt;/li&gt;
&lt;li&gt;翻译风格生成：使用夸张的 Westernized translation tone，观察模型是否能学到特定写作风格。&lt;/li&gt;
&lt;li&gt;医疗问答：使用 AfriMed-QA 的短答案与选择题任务，观察垂直领域微调后的指标变化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在风格化对话任务中，微调后的模型比 base model 更容易保持目标语气和称呼习惯。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://typora-tuchuang-jimmy.oss-cn-beijing.aliyuncs.com/img/20260525034705-ktransformers-ft-03-stylized-dialogue.png&#34;
alt=&#34;Base model and fine-tuned model stylized dialogue comparison&#34;
style=&#34;zoom:45%&#34;/&gt;&lt;/p&gt;
&lt;p&gt;在 Translational-Style 任务上，DeepSeek-V2-Lite 和 DeepSeek-V3 经过 KT-LoRA 微调后，指标都有明显提升。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Translational-Style dataset&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;BLEU-1&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;BLEU-2&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;BLEU-3&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;BLEU-4&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;ROUGE-1&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;ROUGE-2&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;ROUGE-L&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;V2-Lite，no LoRA&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;20.66&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;8.33&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;4.54&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;2.89&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;22.71&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;4.52&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;19.19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KT-LoRA fine-tuned V2-Lite&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;35.41&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;22.44&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;15.42&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;11.18&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;42.03&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;18.38&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;33.10&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;V3 base，no LoRA&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;8.49&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;3.34&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;1.62&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;0.96&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;15.91&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;2.55&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;10.07&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KT-LoRA fine-tuned V3&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;37.02&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;23.70&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;16.21&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;11.49&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;43.43&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;18.96&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;34.54&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;在 AfriMed-QA 上，KT-LoRA 也提升了短答案生成指标和选择题准确率。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;AfriMed-QA short answer&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;BLEU-1&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;BLEU-2&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;BLEU-3&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;BLEU-4&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;ROUGE-1&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;ROUGE-2&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;ROUGE-L&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;V2-Lite，no LoRA&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;13.58&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;11.12&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;9.10&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;7.23&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;22.48&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;7.81&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;11.73&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KT-LoRA fine-tuned V2-Lite&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;35.90&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;27.63&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;22.99&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;19.15&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;35.25&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;17.50&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;28.44&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;V3 base，no LoRA&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;12.75&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;10.27&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;8.05&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;5.99&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;20.33&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;5.65&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;10.11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KT-LoRA fine-tuned V3&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;42.42&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;34.12&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;28.95&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;24.54&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;41.97&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;22.37&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;33.28&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;AfriMed-QA multiple choice&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;Accuracy&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;V2-Lite，no LoRA&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;0.0645&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KT-LoRA fine-tuned V2-Lite&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;0.4812&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;V3 base，no LoRA&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;0.5833&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KT-LoRA fine-tuned V3&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;0.7930&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这些结果来自小规模代表性评测，不是完整的 scaling law 研究。它们主要说明：在 LLaMA-Factory 这套大家熟悉的训练入口里，KTransformers 可以把一部分原本超出工作站 GPU 显存范围的 MoE 模型纳入 LoRA 适配流程。&lt;/p&gt;
&lt;h2 id=&#34;快速开始-may-be-outdated-please-refer-to-the-newest-blog&#34;&gt;快速开始 [May be outdated, please refer to the newest blog]&lt;/h2&gt;
&lt;p&gt;如果只关心推理，可以看 1、2、5；如果要把 LoRA 微调和后续推理一起跑通，请按 1 到 5 依次配置。&lt;/p&gt;
&lt;h3 id=&#34;1-硬件要求&#34;&gt;1. 硬件要求&lt;/h3&gt;
&lt;p&gt;可以先按任务目标估算资源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只做推理时，CPU 要求相对低一些，但内存决定能不能放下模型权重和上下文。&lt;/li&gt;
&lt;li&gt;做 KT LoRA 微调时，CPU 必须支持 Intel AMX。可用 &lt;code&gt;lscpu | grep -i amx || true&lt;/code&gt; 检查。&lt;/li&gt;
&lt;li&gt;GPU 显存决定能放多少 GPU experts 来提速。KTransformers 的价值，是把“显存不够”这个硬限制，拆成内存、CPU 算力和放置策略可以一起调的问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;KT 推理，粗略起步配置&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;KT 微调参考&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek-V2-Lite-14B&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;3 GB 显存 + 15 GB 内存&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;6 GB 显存 + 30 GB 内存&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3-30B-A3B&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;3 GB 显存 + 30 GB 内存&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;5 GB 显存 + 60 GB 内存&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3-235B-A22B&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;9 GB 显存 + 225 GB 内存&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;18 GB 显存 + 450 GB 内存&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek-V3-671B&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;35 GB 显存 + 0.65 TB 内存&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;70 GB 显存 + 1.3 TB 内存&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;2-环境安装与模型准备&#34;&gt;2. 环境安装与模型准备&lt;/h3&gt;
&lt;p&gt;这条流程会用到三层组件：KTransformers 负责异构执行，SGLang 负责服务化推理，LLaMA-Factory 负责把微调配置组织成清晰的训练配方。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# KTransformers 推理内核路径。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/kvcache-ai/ktransformers.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ktransformers
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; kt-kernel
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./install.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 与 KTransformers 配套使用的 SGLang。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/kvcache-ai/sglang.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; sglang
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;python[all]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# LLaMA-Factory。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/hiyouga/LLaMA-Factory.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; LLaMA-Factory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;.[torch,metrics]&amp;#34;&lt;/span&gt; --no-build-isolation
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# KTransformers 微调依赖。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda install -y -c conda-forge libstdcxx-ng gcc_impl_linux-64
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda install -y -c nvidia/label/cuda-11.8.0 cuda-runtime
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 为避免本地编译，优先使用与 Python、PyTorch、CUDA、ABI 匹配的 whl。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install ktransformers-0.4.2+cu128torch27fancy-cp311-cp311-linux_x86_64.whl
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install flash_attn-2.8.3+cu12torch2.7cxx11abiTRUE-cp311-cp311-linux_x86_64.whl
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;nv&#34;&gt;transformers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;4.56.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;KT 微调需要 BF16 模型权重。以 DeepSeek-V3-671B 为例，公开权重经常以 FP8 形式发布；训练前需要直接下载 BF16 checkpoint，或者先把 FP8 权重转成 BF16。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -U &lt;span class=&#34;nv&#34;&gt;huggingface_hub&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;0.34.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;huggingface-cli download --resume-download &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  Qwen/Qwen3-235B-A22B-Instruct-2507 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --local-dir /path/to/Qwen3-235B-A22B-Instruct-2507-BF16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;3-使用-ktransformers-进行-lora-微调&#34;&gt;3. 使用 KTransformers 进行 LoRA 微调&lt;/h3&gt;
&lt;p&gt;训练命令本身很短，真正会随实验变化的部分主要写在 LLaMA-Factory 的 YAML 里。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; LLaMA-Factory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;USE_KT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; llamafactory-cli train examples/train_lora/qwen3moe_lora_sft_kt.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;YAML 里最关键的 KT 字段是 &lt;code&gt;use_kt&lt;/code&gt;、&lt;code&gt;kt_optimize_rule&lt;/code&gt;、&lt;code&gt;cpu_infer&lt;/code&gt; 和 &lt;code&gt;chunk_size&lt;/code&gt;。&lt;code&gt;kt_optimize_rule&lt;/code&gt; 要根据模型、CPU backend 和 GPU 数选择对应的 &lt;code&gt;*-sft-*&lt;/code&gt; 规则文件。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;### model&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;model_name_or_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/path/to/Qwen3-235B-A22B-Instruct-2507-BF16&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;trust_remote_code&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;template&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;qwen3&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;### method&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;stage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;sft&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;do_train&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;finetuning_type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;lora&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;lora_rank&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;lora_alpha&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;32&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;lora_dropout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;lora_target&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;all&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;### dataset&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dataset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;identity, alpaca_en_demo&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cutoff_len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2048&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;max_samples&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;100000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;overwrite_cache&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;preprocessing_num_workers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;dataloader_num_workers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;### output&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;saves/qwen3moe_lora_sft_kt&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;logging_steps&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;save_steps&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;500&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;plot_loss&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;overwrite_output_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;save_only_model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;report_to&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;none&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;### train&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;per_device_train_batch_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;gradient_accumulation_steps&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;learning_rate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1.0e-4&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;num_train_epochs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3.0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;lr_scheduler_type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;cosine&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;warmup_ratio&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;bf16&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ddp_timeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;180000000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;### ktransformers&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;use_kt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;kt_optimize_rule&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;examples/kt_optimize_rules/&amp;lt;model&amp;gt;-sft-amx-&amp;lt;gpu-count&amp;gt;.yaml&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cpu_infer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;64&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;chunk_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2048&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;训练结果会写入 &lt;code&gt;output_dir&lt;/code&gt;，通常包括 safetensors adapter 权重和 adapter metadata。后面的推理步骤会继续使用这个目录。&lt;/p&gt;
&lt;h3 id=&#34;4-用-llama-factory-快速验证&#34;&gt;4. 用 LLaMA-Factory 快速验证&lt;/h3&gt;
&lt;p&gt;微调刚结束时，建议先用 LLaMA-Factory 做一次快速交互验证：确认 adapter 能正常加载，也看看目标风格或能力是否已经出现。这一步只是训推链路里的轻量检查，不追求最高吞吐。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; LLaMA-Factory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llamafactory-cli chat examples/inference/qwen3moe_lora_sft_kt.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;推理 YAML 需要同时指向 base model 和 adapter 目录，设置 &lt;code&gt;infer_backend: ktransformers&lt;/code&gt;，并让 &lt;code&gt;kt_optimize_rule&lt;/code&gt; 与训练时使用的 KT 路径匹配。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model_name_or_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/path/to/Qwen3-235B-A22B-Instruct-2507-BF16&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;adapter_name_or_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;saves/qwen3moe_lora_sft_kt&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;template&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;qwen3&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;infer_backend&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;ktransformers&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;trust_remote_code&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;use_kt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;kt_optimize_rule&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;examples/kt_optimize_rules/&amp;lt;model&amp;gt;-infer-amx-&amp;lt;gpu-count&amp;gt;.yaml&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cpu_infer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;64&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;chunk_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2048&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果还想继续用 LLaMA-Factory 做批量评测，也可以用同一份配置启动 API：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;API_PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8000&lt;/span&gt; llamafactory-cli api examples/inference/qwen3moe_lora_sft_kt.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;5-用-sglang-做推理与-benchmark&#34;&gt;5. 用 SGLang 做推理与 Benchmark&lt;/h3&gt;
&lt;p&gt;如果要跑更大规模的 benchmark，或者把模型接成应用 API，建议使用 SGLang 服务。流程分三步：先转换 LoRA adapter，再按需要量化 CPU 侧权重，最后在 &lt;code&gt;launch_server&lt;/code&gt; 里打开 KT 和 LoRA。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; sglang
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python convert_lora.py &amp;lt;YOUR_LORA_ADAPTER_PATH&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ktransformers/kt-kernel
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/convert_cpu_weights.py &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --input-path &amp;lt;PATH_TO&amp;gt;/Qwen3-30B-A3B-Instruct-2507 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --input-type bf16 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --output &amp;lt;PATH_TO&amp;gt;/Qwen3-30B-A3B-Instruct-2507-INT8 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --quant-method int8
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m sglang.launch_server &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --host 0.0.0.0 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --port &lt;span class=&#34;m&#34;&gt;10103&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --model &amp;lt;PATH_TO&amp;gt;/Qwen3-30B-A3B-Instruct-2507 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --mem-fraction-static 0.7 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --chunked-prefill-size &lt;span class=&#34;m&#34;&gt;2048&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --served-model-name Qwen3-30B-A3B-Instruct-2507 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --tensor-parallel-size &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --kt-method AMXINT8 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --kt-weight-path &amp;lt;PATH_TO&amp;gt;/Qwen3-30B-A3B-Instruct-2507-INT8 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --kt-cpuinfer &lt;span class=&#34;m&#34;&gt;64&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --kt-threadpool-count &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --kt-num-gpu-experts &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --enable-lora &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --lora-paths &lt;span class=&#34;nv&#34;&gt;lora0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;YOUR_ADAPTER_PATH&amp;gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --max-loras-per-batch &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  --lora-backend triton
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果只推理 base model，删掉最后几行 LoRA 参数即可。Kimi K2、MiniMax M2/M2.1 等新模型涉及 FP8 或 INT4 原精度推理时，请同步参考 KTransformers V0.5.0 及后续版本说明。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://typora-tuchuang-jimmy.oss-cn-beijing.aliyuncs.com/img/20251224165610619.png&#34;
alt=&#34;SGLang server running with KTransformers&#34;
style=&#34;zoom:50%&#34;/&gt;&lt;/p&gt;
&lt;p&gt;服务启动后，可以用兼容 OpenAI 的 API 调用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;openai&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;OpenAI&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;OpenAI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;base_url&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:10103/v1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;EMPTY&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;resp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;completions&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Qwen3-30B-A3B-Instruct-2507&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;使用 C++、Python 和 Rust 写一个快速排序。&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;max_tokens&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;256&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;choices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;kt-调参入口&#34;&gt;KT 调参入口&lt;/h3&gt;
&lt;p&gt;微调侧优先看 &lt;code&gt;kt_optimize_rule&lt;/code&gt;。规则文件名通常会写明模型族、是否用于 SFT、CPU backend（如 AMX）以及 GPU 数。在 LLaMA-Factory YAML 里，用户一般只需要关注 &lt;code&gt;use_kt&lt;/code&gt;、&lt;code&gt;kt_optimize_rule&lt;/code&gt;、&lt;code&gt;cpu_infer&lt;/code&gt;、&lt;code&gt;chunk_size&lt;/code&gt; 这四个 KT 字段。&lt;/p&gt;
&lt;p&gt;SGLang 服务侧可以按这个顺序排查显存压力：prefill OOM 先调小 &lt;code&gt;--chunked-prefill-size&lt;/code&gt;，decode OOM 先降低 &lt;code&gt;--max-running-requests&lt;/code&gt;，GPU experts 常驻过高时减少 &lt;code&gt;--kt-num-gpu-experts&lt;/code&gt;，CPU 内存或带宽吃紧时把 CPU 权重量化为 INT8，最后再根据压测目标微调 &lt;code&gt;--mem-fraction-static&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;性能与内存&#34;&gt;性能与内存&lt;/h2&gt;
&lt;p&gt;报告实验中设置了 &lt;code&gt;GAS=16&lt;/code&gt;、&lt;code&gt;qlen=512&lt;/code&gt;，所以每个 optimization step 会处理 8192 tokens。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;Step time&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;Tokens per step&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;Throughput&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek-V3 671B&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;203 s&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;8192&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;40.35 token/s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek-V2-Lite 14B&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;36 s&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;8192&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;&lt;strong&gt;227.6 token/s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;对应的实测内存占用如下：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;GPU memory&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;Host memory&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek-V3 671B，61 层中 58 层为 MoE&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;跨 GPU 合计约 &lt;strong&gt;70 GB&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;约 &lt;strong&gt;1.2-1.3 TB&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek-V2-Lite 14B，27 层中 26 层为 MoE&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;约 &lt;strong&gt;5.5 GB&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;约 &lt;strong&gt;150 GB&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;技术说明&#34;&gt;技术说明&lt;/h2&gt;
&lt;p&gt;本节压缩整理自原 Developer Technical Notes。凡标注 &lt;strong&gt;Deprecated in V2 Current&lt;/strong&gt; 的内容，都来自早期技术说明，只保留为历史实现背景。&lt;/p&gt;
&lt;h3 id=&#34;attention-with-lora&#34;&gt;Attention with LoRA&lt;/h3&gt;
&lt;p&gt;KTransformers 提供 operator injection，也就是 &lt;code&gt;BaseInjectedModule&lt;/code&gt;；PEFT 提供 LoRA layer insertion。为了让二者一起工作，原技术说明中设计了 &lt;code&gt;KTransformersLinearLora&lt;/code&gt;，它同时继承 &lt;code&gt;KTransformersLinear&lt;/code&gt; 和 &lt;code&gt;LoraLayer&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这样一来，&lt;code&gt;prefill_linear&lt;/code&gt; / &lt;code&gt;generate_linear&lt;/code&gt; 这类 KT 高性能路径可以继续使用，同时也能接入 LoRA 参数 &lt;code&gt;lora_A&lt;/code&gt; / &lt;code&gt;lora_B&lt;/code&gt;。准备阶段会把原始 &lt;code&gt;KTransformersLinear&lt;/code&gt; 层替换为 &lt;code&gt;KTransformersLinearLora&lt;/code&gt;，让 Q/K/V/O linear transforms 仍走 KT 优化路径，并具备 LoRA 可训练性。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://typora-tuchuang-jimmy.oss-cn-beijing.aliyuncs.com/img/20260525034705-ktransformers-ft-06-attention-lora.png&#34;
alt=&#34;Attention LoRA replacement in KTransformers&#34;
style=&#34;zoom:45%&#34;/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://typora-tuchuang-jimmy.oss-cn-beijing.aliyuncs.com/img/20260525034705-ktransformers-ft-07-linear-lora.png&#34;
alt=&#34;KTransformersLinearLora structure&#34;
style=&#34;zoom:45%&#34;/&gt;&lt;/p&gt;
&lt;h3 id=&#34;moe-as-a-differentiable-backend-operator&#34;&gt;MoE as a Differentiable Backend Operator&lt;/h3&gt;
&lt;p&gt;MoE 参数量大、计算又是稀疏的。原技术说明把 expert computation 封装成一个 differentiable black-box operator：对上游 PyTorch graph 来说，它只是一个 compact autograd node；对下游 backend 来说，Autograd Function 内部再通过 pybind11 调用 C++ extensions 完成 forward/backward。&lt;/p&gt;
&lt;p&gt;后端可以通过 YAML 切换。原评测路径覆盖 AMX BF16/INT8，也包括 llamafile-style CPU kernels。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://typora-tuchuang-jimmy.oss-cn-beijing.aliyuncs.com/img/20260525034705-ktransformers-ft-08-moe-autograd.png&#34;
alt=&#34;MoE autograd encapsulation&#34;
style=&#34;zoom:45%&#34;/&gt;&lt;/p&gt;
&lt;h3 id=&#34;moe-backward-cpu-deprecated-in-v2-current&#34;&gt;MoE Backward (CPU) (Deprecated in V2 Current)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Deprecated in V2 Current.&lt;/strong&gt; 原技术说明提到，MoE backward 经常需要转置权重 $W^\top$。为了避免运行时反复 transpose，早期实现会在 load time 预先计算并缓存 $W^\top$。这种“额外保存一份转置矩阵 copy”的实现细节在 V2 current 中已经过时，本段仅作为历史背景保留。&lt;/p&gt;
&lt;p&gt;原技术说明还提到，会缓存必要的中间激活，例如 expert projections，供 backward 复用，减少 recomputation。除非重新对照当前 V2 实现验证，否则这一小节都应按历史说明理解。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://typora-tuchuang-jimmy.oss-cn-beijing.aliyuncs.com/img/20260525034705-ktransformers-ft-09-moe-backward-cache.png&#34;
alt=&#34;MoE backward cache and transposed weights&#34;
style=&#34;zoom:45%&#34;/&gt;&lt;/p&gt;
&lt;h3 id=&#34;multi-gpu-loadingtraining-placement-strategy-instead-of-dataparallel-deprecated-in-v2-current&#34;&gt;Multi-GPU Loading/Training: Placement Strategy Instead of DataParallel (Deprecated in V2 Current)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Deprecated in V2 Current.&lt;/strong&gt; 本小节里的 &lt;code&gt;KTrainer&lt;/code&gt;、explicit placement 和 DataParallel avoidance 细节来自原 Developer Technical Notes，不代表当前 V2 行为。这里保留它们，只是为了交代早期设计背景。&lt;/p&gt;
&lt;p&gt;在原技术说明中，多 GPU strategy 依赖 explicit placement 加 model parallelism：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deprecated in V2 Current:&lt;/strong&gt; &lt;code&gt;KTrainer&lt;/code&gt; 接管 &lt;code&gt;.to(device)&lt;/code&gt;，避免把整个模型搬到单张 GPU 上。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deprecated in V2 Current:&lt;/strong&gt; 使用 KT optimize-rule YAML，让每一层声明 &lt;code&gt;device: cuda:0/cuda:1/...&lt;/code&gt;，并直接在目标 GPU 上构造。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deprecated in V2 Current:&lt;/strong&gt; 当 &lt;code&gt;USE_KT=1&lt;/code&gt; 时，禁用 LLaMA-Factory/HF Trainer 的 automatic DataParallel wrappers，避免整模型复制。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deprecated in V2 Current:&lt;/strong&gt; gradients reduce 到 &lt;code&gt;cuda:0&lt;/code&gt;；intermediate activations 尽量留在本地，只传必要 tensors。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Deprecated in V2 Current.&lt;/strong&gt; 原技术说明把 DeepSeek-671B 的典型方案描述为：KV/attention parts 放在 GPU 上，MoE experts 在 CPU 上 sharding，并由多张 GPU 分担工作量，从而降低 per-GPU memory peak。这个具体的 placement/trainer 描述在 V2 current 中已经过时。&lt;/p&gt;
&lt;h2 id=&#34;局限性&#34;&gt;局限性&lt;/h2&gt;
&lt;p&gt;目前多数测试仍集中在单一数据集和小规模数据上，通常不超过 20k examples。本文主要说明 KT-LoRA 微调系统能够跑通并带来可观察的效果，而不是给出关于泛化能力、scaling law、多 seed 方差或多语言鲁棒性的完整算法结论。&lt;/p&gt;
&lt;p&gt;我们欢迎社区补充更多测试结果，尤其是同时提供 KT config、dataset examples、training/evaluation YAML、GPU memory、CPU memory、CPU 型号和 backend 细节。这类信息更方便横向比较，也更有社区参考价值。&lt;/p&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论&lt;/h2&gt;
&lt;p&gt;KTransformers、LLaMA-Factory 与 SGLang 组合起来，为超大 MoE 模型提供了一条低成本、低显存的训推端到端路径：LLaMA-Factory 统一训练配方，LoRA 降低定制成本，KTransformers 提供异构 placement 与 Attention/MoE operator 优化，SGLang 承接 benchmark 和应用推理。&lt;/p&gt;
&lt;p&gt;对较小 MoE 模型，这条路径可以降低 GPU 显存并提升吞吐；对 671B 级超大 MoE 模型，它提供了默认全 GPU 训练之外的另一种选择。&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
