SGLANG跑RTX4090D-48G-QWEN3.6-27B-FP8配置
-
你这配置跑15t/s是正常的,不是配置问题。原因主要有几个:
-
llama.cpp 的 GGUF 格式本身有量化开销 — FP8 在 SGLang 里是原生支持的,llama.cpp 这边要跑 Q4_K_M 或 Q5_K_M 才能接近 SGLang 的速度,但精度有损失。而你跑的是 FP8,llama.cpp 对 FP8 支持不如 SGLang 直接。
-
内存带宽瓶颈 — 你的 DDR3 1066 是主要原因。llama.cpp 的 prompt processing 阶段要频繁读模型权重,DDR3 1066 的四通道也就约 68GB/s 带宽。SGLang 的 RadixAttention 和 prefix caching 能大幅减少 KV cache 读写,所以对系统内存带宽的依赖比 llama.cpp 小很多。
-
对比数据:4090D 48G 跑 27B FP8 在 llama.cpp 上,如果开 --no-mmap 把模型完全加载到 GPU,应该能到 20-25t/s。你现在只有 15t/s,很可能是系统内存瓶颈导致 GPU 没吃满。
建议:
- 如果要用 llama.cpp,加 --no-mmap 确保模型驻留 GPU VRAM(你的 48G 完全够装 27B FP8,约 27GB)
- 设置 --ctx-size 8192 避免 context 膨胀拖慢 decode
- SGLang 28t/s 对 4090D 来说已经是很好的成绩了,说明你配置没问题
总的来说:SGLang 的 28t/s 是合理的,llama.cpp 15t/s 也正常(受平台和量化格式限制)。不是你的配置有问题。
-
-
硬件环境:
CPU:2667v2x2
RAM:DDR3 128G(1066)
GF:RTX4090D-48G
SGlang 上下文:500K,上下文内容100-200k也能保持28t/s的推理速度
模型:Qwen3.6-27B-FP8
SGLANG顶峰值解码速度32/s,平均值28t/s,Prefill速度:1400-1600t/s。
和VLLM、llamacpp对比,快大概百分之30-50%。
吐槽一下llamacpp,15t/s的解码速率,gguf得多差啊!还是只有我这样配置问题?
vllm还在测试中。。#!/bin/bash # SGLang 0.5.15 — sglang serve # Qwen3.6-27B-MTP | RTX 4090D 48G set -euo pipefail readonly SGLANG_VENV="/mnt/dataM4/venv_sglang" readonly MODEL_PATH="/mnt/dataM4/models/Qwen3.6-27B-AEON-Ultimate-Uncensored-FP8-MTP" export HF_HOME="/root/.cache/huggingface" export TRITON_CACHE_DIR="/root/sglang_cache/triton/cache" export TORCHINDUCTOR_CACHE_DIR="/root/sglang_cache/torch_compile" export FLASH_ATTENTION_CUTE_CACHE_DIR="/root/sglang_cache/flash_attn_cute_cache" export CUDA_HOME=/usr/local/cuda-12.8 export PATH="$CUDA_HOME/bin:$PATH" export LD_LIBRARY_PATH="$CUDA_HOME/lib64" export LD_LIBRARY_PATH="/mnt/dataM4/venv_sglang/lib/python3.11/site-packages/nvidia/cusparselt/lib:$LD_LIBRARY_PATH" export CUDAHOSTCXX=/usr/bin/gcc-12 export CC=/usr/bin/gcc-12 export CXX=/usr/bin/g++-12 # 🔴 修正拼写 export PYTORCH_CUDA_ALLOC_CONF="expandable_segments:True" export CUDA_DEVICE_ORDER="PCI_BUS_ID" export CUDA_VISIBLE_DEVICES="0" export FLASHINFER_DISABLE_VERSION_CHECK=1 export FLASH_ATTENTION_CUTE_DSL_CACHE_ENABLED=1 source "${SGLANG_VENV}/bin/activate" SGLANG_ARGS=( --model-path "${MODEL_PATH}" --host 0.0.0.0 --port 30000 --trust-remote-code --tp-size 1 --attention-backend flashinfer --mamba-backend flashinfer --kv-cache-dtype fp8_e4m3 --page-size 8 --mem-fraction-static 0.94 --max-running-requests 2 --prefill-max-requests 1 --schedule-policy lpm --schedule-conservativeness 1 --mamba-radix-cache-strategy extra_buffer --mamba-ssm-dtype bfloat16 --mamba-full-memory-ratio 0.08 --tool-call-parser qwen3_coder --reasoning-parser qwen3 --preferred-sampling-params '{"temperature": 0.6, "repetition_penalty": 1.2, "frequency_penalty": 0.5, "presence_penalty": 0.3}' --chunked-prefill-size 4096 --max-prefill-tokens 8192 --context-length 262144 --radix-eviction-policy lru --cuda-graph-max-bs-decode 2 --cuda-graph-bs-decode 1 2 #--enable-metrics #--enable-streaming-session #--enable-request-time-stats-logging #--log-requests --log-requests-level 0 --decode-log-interval 300 # 🟡 降低日志频率 # 🟢 關閉 Uvicorn Access Log (排除所有路徑) --uvicorn-access-log-exclude-prefixes / ) # 🟡 日志改到磁盘,避免占用系统内存 readonly SGLOG="/dev/shm/sglang/sglang.log" mkdir -p "$(dirname "$SGLOG")" # 日志轮转 if ! pgrep -f sglang_log_rotate > /dev/null 2>&1; then nohup bash /root/sglang_log_rotate.sh >/dev/null 2>&1 & fi exec sglang serve "${SGLANG_ARGS[@]}" >>"$SGLOG" 2>&1 -
大大相當可以了,我的環境 llama.cpp +rpc 顯卡 RTX 5060 ti 16G + RTX 3060 12G相當丐版的設備及環境跑27B,18 tok/s
-
@566656661 这个不知道,我起手就用的sglang。vllm和llamacpp速度太慢了,用了sglang回不去了。
-
@566656661 这个不知道,我起手就用的sglang。vllm和llamacpp速度太慢了,用了sglang回不去了。
-
@566656661 @用户名违规
SG-Lang好用,说真的,我今天测试了下,确实很好。 -
吐槽一下llamacpp,15t/s的解码速率,gguf得多差啊!还是只有我这样配置问题? vllm还在测试中。。VLLM不要测试了,其实高不成低不就,要跑Agent,目前就是SG-Lang+Qwen3.6 27b最好用。Llama.cpp 是你自己的设置问题我,我什么都不优化,不开MTP都45t/s,它的问题就是缓存不行,prefill慢到吐血。我今天明天发两个视频,第二个视频里我录个实际的效果你去对比下,看看速度如何。
我这边用AWQ的模型不行,不知道哪里出了问题,你可以贴下参数,我用的是FP8模型。然后上下文是开满了,长期运行之后,占用了41.5G 显存,驱动Herms速度比Llama.cpp和VLLM快多了。
-
吐槽一下llamacpp,15t/s的解码速率,gguf得多差啊!还是只有我这样配置问题? vllm还在测试中。。VLLM不要测试了,其实高不成低不就,要跑Agent,目前就是SG-Lang+Qwen3.6 27b最好用。Llama.cpp 是你自己的设置问题我,我什么都不优化,不开MTP都45t/s,它的问题就是缓存不行,prefill慢到吐血。我今天明天发两个视频,第二个视频里我录个实际的效果你去对比下,看看速度如何。
我这边用AWQ的模型不行,不知道哪里出了问题,你可以贴下参数,我用的是FP8模型。然后上下文是开满了,长期运行之后,占用了41.5G 显存,驱动Herms速度比Llama.cpp和VLLM快多了。
#!/bin/bash # Qwen3.6-27B-Fable Q6_K — llama.cpp 启动配置(优化版) # GPU: RTX 4090D (48G) | 模型: 64 层混合 (16 Full Attention + 48 SSM) # 目标:全 GPU 卸载,0 层在 CPU # 优化:Q8_0→Q6_K + KV q4_0 + 线程调优,目标 25-28 t/s set -e # ═══════════════════════════════════════════ # 参数说明(每个都加注释) # ═══════════════════════════════════════════ MODEL="/mnt/dataM4/models/Qwen3.6-27B-Fable-Fus-711-UnHeretic-NM-DAU-NEO-MAX-NEO-Q8_0.gguf" # --gpu-layers 64: 全部 64 层都加载到 GPU 显存(不卸载到 CPU) # 如果设 32 就只有前 32 层在 GPU,后 32 层在 CPU,速度减半 GPU_LAYERS=64 # --ctx-size 262144: 上下文窗口 262K tokens(模型原生支持 262144) # 显存开销:KV Cache ~8GB(q8_0 量化) CTX_SIZE=262144 # --batch-size 8192: 逻辑 batch(prefill 阶段一次处理多少 token) # 决定 prompt 阶段的速度,越大 prefilled 越快 BATCH_SIZE=8192 # --ubatch-size 4096: 物理 batch(GPU 计算缓冲大小) # GPU 内存里同时计算的 token 数,不超过显存 UBATCH_SIZE=4096 # --threads 6: 生成阶段 CPU 线程数(每生成 1 个 token) # 纯 GPU 时影响不大,设小点省 CPU,避免线程调度开销 THREADS=6 # --threads-batch 8: Prefill 阶段 CPU 线程数(处理 prompt) # 降低到 8,减少 CPU 竞争,GPU 是瓶颈不是 CPU THREADS_BATCH=8 # --temp 0.7: 采样温度(0=确定性强,1.0=随机性强) TEMP=0.6 # --top-p 0.95: Nucleus 采样,累积概率到 0.95 截断 TOP_P=0.95 # --top-k 20: 只选概率最高的 20 个 token 参与采样 TOP_K=20 # --flash-attn on: 开启 Flash Attention(RTX 4090D SM89 原生支持) # 对 Qwen3.5 混合架构的 Full Attention 层有显著加速 FLASH_ATTN=on # --cache-type-k/v q4_0: KV Cache 用 Q4_0 量化(大幅降低带宽压力) # 实测:q4_0 KV cache 对生成质量影响<1%,但 decode 速度提升 10-15% # bf16=16bit(大精度), q8_0=8bit, q4_0=4bit(最佳性价比) CACHE_TYPE=q8_0 # --port 11434: 默认 Ollama 兼容端口 PORT=11434 # ═══════════════════════════════════════════ # 启动命令 — 全 GPU,无 CPU offload # ═══════════════════════════════════════════ exec llama-server \ --model "$MODEL" \ --port "$PORT" \ --ctx-size "$CTX_SIZE" \ --batch-size "$BATCH_SIZE" \ --ubatch-size "$UBATCH_SIZE" \ --gpu-layers "$GPU_LAYERS" \ --threads "$THREADS" \ --threads-batch "$THREADS_BATCH" \ --temp "$TEMP" \ --top-p "$TOP_P" \ --top-k "$TOP_K" \ --flash-attn "$FLASH_ATTN" \ --cache-type-k "$CACHE_TYPE" \ --cache-type-v "$CACHE_TYPE" \ --no-mmap \ --mlock -ngl 99,你llamacpp 跑45t/s?贴一下参数呗,有点夸张啊,我怎么设置都上不去。我是按照sglang的思路设置的。不开MTP45t/s 很顶啊。prefill cpp确实不快。我用sglang显存很容易到47G。你这个占用只有41.5g,咋配置的。?sglang 频繁上下文 prefill 也解决了。基本上随便浪了。命中率99%
-
跟着 https://github.com/mattbucci/2x-3090-GA102-300-A1-sglang-inference
我也用起来了 3090x2python -m sglang.launch_server
--model-path /home/ccadmin/AI/models/hf-mattbucci/Qwen3.6-27B-AWQ
--tensor-parallel-size 2
--dtype float16
--kv-cache-dtype fp8_e4m3
--context-length 262144
--mem-fraction-static 0.85
--max-running-requests 8
--chunked-prefill-size 8192
--num-continuous-decode-steps 32
--trust-remote-code
--watchdog-timeout 600
--port 30000
--host 0.0.0.0
--enable-metrics
--disable-custom-all-reduce
--served-model-name qwen36-dense
--max-mamba-cache-size 8
--chat-template …/Qwen3.6-27B-AWQ/chat_template.jinja
--reasoning-parser qwen3
--sampling-defaults model
--tool-call-parser qwen3_coder
--sampling-backend pytorchPrefill (time-to-first-token,
max_tokens=1)Prompt tokens TTFT (s) Prefill rate (tok/s) 1,344 1.12 1,203 5,352 3.83 1,398 10,680 7.71 1,386 21,336 15.58 1,369 42,672 33.41 1,277 Typical — ~1,350 Decode (steady-state generation)
Metric Value Completion tokens 571 Time (s) 9.16 Decode rate 62.3 tok/s GPU utilization 98% Power draw 244 W (cap) Repo ref (w/ NVLink) 69 tok/s -
跟着 https://github.com/mattbucci/2x-3090-GA102-300-A1-sglang-inference
我也用起来了 3090x2python -m sglang.launch_server
--model-path /home/ccadmin/AI/models/hf-mattbucci/Qwen3.6-27B-AWQ
--tensor-parallel-size 2
--dtype float16
--kv-cache-dtype fp8_e4m3
--context-length 262144
--mem-fraction-static 0.85
--max-running-requests 8
--chunked-prefill-size 8192
--num-continuous-decode-steps 32
--trust-remote-code
--watchdog-timeout 600
--port 30000
--host 0.0.0.0
--enable-metrics
--disable-custom-all-reduce
--served-model-name qwen36-dense
--max-mamba-cache-size 8
--chat-template …/Qwen3.6-27B-AWQ/chat_template.jinja
--reasoning-parser qwen3
--sampling-defaults model
--tool-call-parser qwen3_coder
--sampling-backend pytorchPrefill (time-to-first-token,
max_tokens=1)Prompt tokens TTFT (s) Prefill rate (tok/s) 1,344 1.12 1,203 5,352 3.83 1,398 10,680 7.71 1,386 21,336 15.58 1,369 42,672 33.41 1,277 Typical — ~1,350 Decode (steady-state generation)
Metric Value Completion tokens 571 Time (s) 9.16 Decode rate 62.3 tok/s GPU utilization 98% Power draw 244 W (cap) Repo ref (w/ NVLink) 69 tok/s @applejuice 你是啥显卡。两张3090?
-
@applejuice 你是啥显卡。两张3090?