十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

KTransformers SGLang 混合推理服务启动 OOM 时如何降低 GPU 显存占用?

KTransformers SGLang 混合推理服务启动 OOM 时如何降低 GPU 显存占用? KTransformers SGLang 混合推理服务启动 OOM 时如何降低 GPU 显存占用【免费下载链接】ktransformersA Flexible Framework for Experiencing Heterogeneous LLM Inference/Fine-tune Optimizations项目地址: https://gitcode.com/GitHub_Trending/ktr/ktransformers在 KTransformers 的 SGLang KT-Kernel CPU-GPU 混合推理部署中启动python -m sglang.launch_server服务时如果显存不够进程会直接 OOM 退出。官方文档在多篇教程的 Troubleshooting 章节给出了明确的降显存参数表显存占用主要来自三块——MoE 专家权重放在 GPU 上的专家越多占用越大、prefill 阶段的额外分配、KV cache另外--mem-fraction-static还控制整体预留比例。本文按照文档给出的参数逐项说明如何降低 GPU 显存占用以及如何验证调整后的配置不再 OOM。前提服务是如何启动的适用对象是通过 KT-Kernel 与 SGLangkvcache-ai fork集成的混合推理服务典型启动命令如下取自 Qwen3-Coder-Next 教程 的 FP8 示例其中/path/to/需替换为你的实际模型存储路径文档原文如此注明python -m sglang.launch_server \ --host 0.0.0.0 \ --port 30000 \ --model /path/to/Qwen3-Coder-Next-FP8 \ --kt-weight-path /path/to/Qwen3-Coder-Next-FP8 \ --kt-cpuinfer 96 \ --kt-threadpool-count 2 \ --kt-num-gpu-experts 100 \ --kt-method FP8 \ --kt-gpu-prefill-token-threshold 2048 \ --attention-backend triton \ --trust-remote-code \ --mem-fraction-static 0.80 \ --chunked-prefill-size 16384 \ --max-running-requests 4 \ --max-total-tokens 256000 \ --served-model-name Qwen3-Coder-Next \ --enable-mixed-chunk \ --tensor-parallel-size 1 \ --enable-p2p-check \ --disable-shared-experts-fusion \ --tool-call-parser qwen3_coder \ --kt-enable-dynamic-expert-update如果还没装好环境前置条件是同教程 Prerequisites 部分# SGLangkvcache-ai fork二选一 ./install.sh # 在 ktransformers 根目录下的一键安装 pip install sglang-kt # 或 pip 安装 # Hugging Face CLI下载模型权重用 pip install -U huggingface-hubKT-Kernel 本身按 kt-kernel/README.md 安装后可用kt version验证 CLI 是否可用CUDA 建议 12.0 以上。启动 OOM 时调整哪些参数experts-sched-Tutorial.md 和 Qwen3-Coder-Next-Tutorial.md 的 OOM 小节给出的调整项如下两者合并后共四项参数对显存的影响文档原文--kt-num-gpu-experts/--kt-gpu-experts-ratioReduces expert weight VRAM usage降低专家权重显存占用--chunked-prefill-sizeReduces prefill extra VRAM allocation降低 prefill 额外显存分配--max-total-tokensReduces KV cache VRAM usage降低 KV cache 显存占用--mem-fraction-staticLower values reserve more VRAM headroom调低可预留更多显存余量默认 0.80此项见于 Qwen3-Coder-Next 教程几个使用上的细节均来自 kt-kernel/README.md 的 KT-Kernel Parameters 一节GPU 专家数量的取舍文档明确 More GPU experts lower latency but higher GPU memory usage (May cause OOM)即专家数放低能省显存但代价是延迟上升。--kt-num-gpu-experts是每层 MoE 放在 GPU 上的专家数--kt-gpu-experts-ratio是比例0.0–1.0两者同时给出时 ratio 优先生效。--max-total-tokens表示 KV cache 允许的最大总 token 数调低即缩小 KV cache 的显存预算。--mem-fraction-static默认 0.80教程建议遇到 OOM 时调低以预留更多余量。prefill 阶段的额外显存--kt-gpu-prefill-token-threshold如果你的启动参数里带了--kt-gpu-prefill-token-threshold且--kt-method为FP8或RAWINT4还有一个容易忽略的显存因素。README 说明prefill 长度≤ 阈值使用 hybrid CPUGPU prefill不需要额外显存但随 token 数增长性能下降较慢prefill 长度 阈值使用 layerwise GPU prefill性能更好但需要一个 MoE 层的额外显存文档给出的量级示例Kimi-K2-Thinking 约 9GBMiniMax-M2.1 约 3.6GB。也就是说长 prefill 触发的 layerwise GPU prefill 会带来一次性显存峰值这也是文档把测试输入长度等于chunked-prefill-size列为 OOM 验证手段的原因。调整后的启动与验证把上述参数按你的显存规模调低后重新拉起服务例如把 GPU 专家数从 100 降到 60、prefill 分块与 KV cache 同步收紧具体数值按你的卡显存决定文档未给出统一推荐值python -m sglang.launch_server \ --model /path/to/Qwen3-Coder-Next-FP8 \ --kt-weight-path /path/to/Qwen3-Coder-Next-FP8 \ --kt-cpuinfer 96 \ --kt-threadpool-count 2 \ --kt-num-gpu-experts 60 \ --kt-method FP8 \ --kt-gpu-prefill-token-threshold 2048 \ --trust-remote-code \ --mem-fraction-static 0.70 \ --chunked-prefill-size 8192 \ --max-total-tokens 128000 \ --tensor-parallel-size 1 \ --kt-enable-dynamic-expert-update注意上面命令中60、0.70、8192、128000是我按降低方向给出的示例值文档没有规定必须取这些数请按实际显存自行替换其余参数名与含义均与教程一致。验证分两步均为文档中给出的方式prefill 是否会 OOMQwen3-Coder-Next 教程的 Tip 明确建议——用一条长度等于chunked-prefill-size的输入发一次请求确认该配置在 prefill 阶段不会 OOM。服务是否正常工作服务默认监听http://localhost:30000可用kt chat进入交互对话或调用 OpenAI 兼容接口curl http://localhost:30000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: Qwen3-Coder-Next, messages: [{role: user, content: Hello!}], stream: true }能正常收到流式输出即说明新配置下服务已可运行。限制与取舍降显存与吞吐/延迟是同一组参数上的权衡文档的基准测试experts-sched-Tutorial.md 的 Performance 表显示 GPU expert 占比从 0% 升到 100% 时吞吐从约 53 tokens/s 升到约 112 tokens/s4 x RTX 4090、Qwen3-Next-80B-A3B-Instruct-FP8、ShareGPT 数据集的文档示例数据放低专家数省显存的同时也要接受更低的吞吐。专家数、prefill 分块、KV cache 大小三项分别对应权重、prefill 临时分配、KV cache 三类显存文档没有说明可以只调其中一项而完全规避其他项按文档给出的顺序逐项收紧即可。--kt-gpu-prefill-token-threshold的 layerwise prefill 额外显存说明仅针对FP8与RAWINT4后端其他--kt-method取值不适用该说明。更多参数细节可查阅 KT-Kernel 参数说明 与 专家调度教程。【免费下载链接】ktransformersA Flexible Framework for Experiencing Heterogeneous LLM Inference/Fine-tune Optimizations项目地址: https://gitcode.com/GitHub_Trending/ktr/ktransformers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表