05-19-2026, 12:26 PM
我手上有一个 4 卡 L20 的服务器,显存容量够跑 DeepSeek V4 Flash. 可惜的是,vLLM 和 SGLang 暂时都只支持 Hopper 和 Blackwell,Ada 的卡还不能用。而 llama.cpp 等其他推理引擎看起来近期也是支持不了了。然后我就想到了 ktransformers, 毕竟这个项目一开始就考虑消费级显卡和 CPU 参与推理的用法。幸运的是,KT 的确可以支持 Ada 的卡跑 DeepSeek V4.
KT 官方跑 DS4 的文档: https://github.com/kvcache-ai/ktransform...4-Flash.md
但是这玩意装起来并不方便。我的服务器在单位的内网里面,所以我只能在外网的机器上把 KT 装好,然后再复制到内网。不过我之前就有经验了,就是在外网的机器上装个相同的系统(docker 也行),把 python venv 配好,把整个 venv 复制到内网就行了。
经过几天的折腾,我基本上搞清楚怎么装了。以下是一些容易出问题的地方。
1. 安装依赖
虽然 kt-kernel 的 install.sh 已经装了依赖,但是不够。你还需要安装 cmake, Rust 编译器和 openssl 头文件。cmake 是 install.sh 提醒你要装的,但是它不会自动安装。这里的 cmake 没有版本要求,用系统软件源的就够了。Rust 编译器和 openssl 头文件是编译 SGLang 的依赖 outlines-core 需要的。Rust 编译器的版本要求比较高,建议用 rustup 安装。openssl 的头文件直接用软件源的就行。
2. 建议用 KT 给的脚本安装
我开始是读了 KT 给的脚本,尝试改用 uv 手动安装,结果总是出问题。把 KT 给的脚本里面的 pip 改成 uv pip 也不太对。最后我还是先 uv pip install pip, 然后跑 KT 的 install.sh 安装,虽然这堆脚本写得有点复杂,而且不知道为什么要重复安装 kt-kernel,但是最后 kt doctor 检查环境都是对的。
3. CPU kernel 编译的问题
下一个问题就是 CPU kernel 编译的问题了,KT 的 DeepSeek V4 支持需要至少 AVX512 指令集,但是外网编译的机器没有。所以要用 install.sh --manual. 这样的话,还需要在编译前设置一些环境变量。对于有 AMX 支持的目标机器,可以设置:
CPUINFER_NATIVE=OFF
CPUINFER_CPU_INSTRUCT=FANCY
CPUINFER_ENABLE_AMX=ON
CPUINFER_ENABLE_AVX512=ON
CPUINFER_ENABLE_AVX512_VNNI=ON
CPUINFER_ENABLE_AVX512_BF16=ON
CPUINFER_ENABLE_AVX512_VBMI=ON
具体可以参考 kt-kernel/setup.py
4. 验证 kt-kernel 是否包含指定 MXFP4 kernel
这是我刚刚遇到的问题。kt doctor 检查环境可以通过,但是启动失败,说找不到 MXFP4 内核。根据源码,可以跑以下代码进行检测:
import kt_kernel
import kt_kernel_ext.moe as _moe_mod
getattr(_moe_mod, "AMXFP4_KGroup_MOE", None)
如果没有输出,即结果是 None,那就是没支持 MXFP4 内核,需要重新安装了。
KT 官方跑 DS4 的文档: https://github.com/kvcache-ai/ktransform...4-Flash.md
但是这玩意装起来并不方便。我的服务器在单位的内网里面,所以我只能在外网的机器上把 KT 装好,然后再复制到内网。不过我之前就有经验了,就是在外网的机器上装个相同的系统(docker 也行),把 python venv 配好,把整个 venv 复制到内网就行了。
经过几天的折腾,我基本上搞清楚怎么装了。以下是一些容易出问题的地方。
1. 安装依赖
虽然 kt-kernel 的 install.sh 已经装了依赖,但是不够。你还需要安装 cmake, Rust 编译器和 openssl 头文件。cmake 是 install.sh 提醒你要装的,但是它不会自动安装。这里的 cmake 没有版本要求,用系统软件源的就够了。Rust 编译器和 openssl 头文件是编译 SGLang 的依赖 outlines-core 需要的。Rust 编译器的版本要求比较高,建议用 rustup 安装。openssl 的头文件直接用软件源的就行。
2. 建议用 KT 给的脚本安装
我开始是读了 KT 给的脚本,尝试改用 uv 手动安装,结果总是出问题。把 KT 给的脚本里面的 pip 改成 uv pip 也不太对。最后我还是先 uv pip install pip, 然后跑 KT 的 install.sh 安装,虽然这堆脚本写得有点复杂,而且不知道为什么要重复安装 kt-kernel,但是最后 kt doctor 检查环境都是对的。
3. CPU kernel 编译的问题
下一个问题就是 CPU kernel 编译的问题了,KT 的 DeepSeek V4 支持需要至少 AVX512 指令集,但是外网编译的机器没有。所以要用 install.sh --manual. 这样的话,还需要在编译前设置一些环境变量。对于有 AMX 支持的目标机器,可以设置:
CPUINFER_NATIVE=OFF
CPUINFER_CPU_INSTRUCT=FANCY
CPUINFER_ENABLE_AMX=ON
CPUINFER_ENABLE_AVX512=ON
CPUINFER_ENABLE_AVX512_VNNI=ON
CPUINFER_ENABLE_AVX512_BF16=ON
CPUINFER_ENABLE_AVX512_VBMI=ON
具体可以参考 kt-kernel/setup.py
4. 验证 kt-kernel 是否包含指定 MXFP4 kernel
这是我刚刚遇到的问题。kt doctor 检查环境可以通过,但是启动失败,说找不到 MXFP4 内核。根据源码,可以跑以下代码进行检测:
import kt_kernel
import kt_kernel_ext.moe as _moe_mod
getattr(_moe_mod, "AMXFP4_KGroup_MOE", None)
如果没有输出,即结果是 None,那就是没支持 MXFP4 内核,需要重新安装了。
