【保姆级教程】RTX 4090 部署 DeepSeek-V4-Flash 全攻略(INT4 量化 + 128K 上下文)
前言
模型说明:DeepSeek-V4-Flash 官方原生支持 1M(104 万 token)上下文,本文通过参数限制为 128K 降低显存压力。
硬件限制:RTX 4090 24G 仅支持INT4 量化,FP8/FP16 显存不足,且 4090 无原生 FP8 硬件加速,INT4 是唯一可行方案,显卡不足建议部署采用Q4_K_M 量化模型。
部署引擎:全量GPU部署显存压力过大,要求5090以上显卡配置。且vLLM不支持内存卸载,推荐使用ktransformers推理引擎部署。内存卸载方案建议内存256G,至少128G。
性能预期:INT4至少2张 4090 起步,显卡不足可考虑Q2、Q3模型,4 卡部署兼顾性能和成本,部署更稳定。
一、环境准备
基础环境及版本要求如下:
组件 | 版本 | 说明 |
ktransformers | ≥ 0.6.2 | v0.6.2 首次原生支持 DeepSeek-V4-Flash(PR #1970:kt-kernel MXFP4 MoE + sglang hybrid inference) |
Python | 3.10 / 3.11 | |
CUDA | ≥ 12.8 | 官方文档要求 12.8+(含 4090) |
NVIDIA 驱动 | ≥550(CUDA 12.8 兼容) | |
transformers | == 4.57.1(必须钉版) | 5.x 会让 DeepSeekV4Config 报 TypeError,必须手动钉 4.57.1 |
flashinfer | ≥ 0.6.9(flashinfer-python + flashinfer-cubin 同版本) | V4-Flash 的 MXFP4 MoE 模块需要 0.6.9 才有的 mxfp8_quantize 等 API |
tilelang | == 0.1.8 | 4090 必装——NSA sparse-MLA indexer 在非 Hopper GPU 上走 tilelang 路径 |
sglang | kvcache-ai fork(ktransformers 内置 submodule) | 不是上游 sglang,是 KT 专用 fork |
1. 基础环境配置
推荐使用 Ubuntu 22.04 系统,搭配 CUDA 12.4+,NVIDIA 驱动 ≥ 550,python ≥ 3.10, ktransformers ≥ 0.6.2:
# 创建并激活虚拟环境 conda create -n deepseek python=3.11 -y conda activate deepseek2. 安装 ktransformers 与依赖
# 1. 克隆 ktransformers(含全部 submodule) git clone https://github.com/kvcache-ai/ktransformers.git cd ktransformers git submodule update --init --recursive # 2. 编译 KT-Kernel(C++/CUDA 扩展,10-20 分钟) cd kt-kernel && ./install.sh && cd .. # 3. 安装 SGLang(kvcache-ai 专用 fork,不是上游 sglang) ./install.sh # 4. 关键依赖(三个必须钉版/版本) pip install --upgrade flashinfer-python flashinfer-cubin # ≥0.6.9,两个包同版本 pip install "transformers==4.57.1" # 必须!5.x 会报 TypeError pip install tilelang==0.1.8 # 4090 必装!NSA sparse-MLA 路径 # 5. 验证 python -c "import ktransformers; print(ktransformers.__version__)" # 期望 ≥0.6.2二、下载 DeepSeek-V4-Flash 模型
1.下载路径
国内用户优先使用魔搭社区(ModelScope)下载,速度更快:
| 优先级 | 地址 |
|---|---|
| 首选 | DeepSeek-V4-Flash-GGUF |
| 备选 | DeepSeek-V4-Flash-GGUF |
| 官方原版(取 config) | DeepSeek-V4-Flash |
2.模型选择
首选Unsloth 这个仓库,推荐下载UD-Q4_K_XL
| 量化方案 | 位宽 | 文件大小 | 你这套机器的评价 |
|---|---|---|---|
| UD-Q4_K_XL | 4-bit | 155 GB | ✅首选——Unsloth 自家推荐,跟标准 Q4_K_M 效果对齐,200GB 内存宽宽松松 |
| UD-IQ4_NL / UD-IQ4_XS | 4-bit iMatrix | 138 GB | ✅备选——重要性加权 4-bit,部分基准反而略好;想留更多内存余量时选这个 |
| UD-Q3_K_M / UD-Q3_K_XL | 3-bit | 129 GB | ⚠️ 仅在你实际只有 192GB、想跑更长上下文时考虑,质量会降 |
| UD-IQ3_S | 3-bit iMatrix | 117 GB | 同上,但要 3-bit 时比 Q3_K_M 更值 |
| UD-Q8_K_XL | 8-bit | 162 GB | ❌ 你这套机器跑没意义——只有 4 卡 24G,仍需卸载,不如直接用 Q4 |
| UD-Q2_K_XL / UD-IQ2_* | 2-bit | 91–97 GB | ❌ V4-Flash 量化损失过大,长链推理会瞎 |
| UD-IQ1_S / UD-IQ1_M | 1-bit | 83–87 GB | ❌ 极端压损,不适合生产 |
三、RTX 4090 部署核心配置
1. 启动服务
cd /path/to/ktransformers # ========== 4090 专属环境变量 ========== export CUDA_VISIBLE_DEVICES=0,1,2,3 export FLASHINFER_CUDA_ARCH_LIST=8.9a # SM_89 = RTX 4090 export TORCH_CUDA_ARCH_LIST="8.9+PTX" export SGLANG_DSV4_MODE=2604 # V4-Flash 必须 export SGLANG_DSV4_2604_SUBMODE=2604B # V4-Flash 必须,缺失会报 swiglu_limit 断言 # ========== 启动 SGLang + KT-Kernel 服务 ========== numactl --interleave=all python -m sglang.launch_server \ --host 0.0.0.0 \ --port 8000 \ --model /data/models/DeepSeek-V4-Flash \ --kt-weight-path /data/models/DeepSeek-V4-Flash \ --kt-method MXFP4 \ --kt-num-gpu-experts 20 \ --kt-cpuinfer 56 \ --kt-threadpool-count 2 \ --kt-gpu-prefill-token-threshold 4096 \ --kt-enable-dynamic-expert-update \ --tensor-parallel-size 4 \ --context-length 32768 \ --attention-backend flashinfer \ --mem-fraction-static 0.85 \ --chunked-prefill-size 2048 \ --max-prefill-tokens 2048 \ --max-running-requests 2 \ --watchdog-timeout 1200 \ --disable-shared-experts-fusion \ --trust-remote-code \ --cuda-graph-bs 1 \ --cuda-graph-max-bs 1 \ --disable-radix-cache \ --skip-server-warmup关键参数说明
参数 | 说明 | 4×4090 调优 |
| CPU 专家用 MXFP4 精度计算(官方 FP4 原版权重直接用) | 默认 |
| 放在 GPU 上的路由专家数量 | 4 卡 96GB 可放 20–30 个(每个约 0.5GB),单卡 5090 官方示例是 10 |
| CPU 推理线程数 | ≈ 物理核心数(留几个给系统) |
| CPU 线程池数 | 双路 CPU 可设 2–4 |
| 4 卡张量并行 | = 4090 数量 |
| 上下文长度 | 200GB 内存建议 16K–32K 起步,有余量再加 |
| 静态显存占用比例 | 0.85–0.90 |
| 最大并发请求数 | 4090 offload 方案建议 1–2 |
| V4-Flash 必须设置 | 缺失会报 swiglu_limit assertion error |
| 4090 专属,告诉 flashinfer JIT 编译 SM_89 kernel | 5090 是 12.0a |
首次启动耗时 4–10 分钟(权重加载 + MXFP4 swizzling + CUDA Graph 捕获)。
2.服务化与验证
健康检查:
# 模型列表 curl http://192.168.x.x:8000/v1/models # 对话测试(官方推荐 temperature=1.0, top_p=1.0) curl http://192.168.x.x:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-ai/DeepSeek-V4-Flash", "messages": [{"role": "user", "content": "你好,介绍一下你自己"}], "temperature": 1.0, "top_p": 1.0, "max_tokens": 256 }'客户端接入:
Dify / Chatbox / Cherry Studio / OpenAI SDK 填:
base_url:http://192.168.x.x:8000/v1api_key: 任意值(SGLang 默认不校验,可加 nginx 前置鉴权)model:deepseek-ai/DeepSeek-V4-Flash
四、部署成功后测试
1. OpenAI 兼容 API 调用
部署成功后,服务默认运行在http://localhost:8000/v1,兼容 OpenAI 接口格式,可直接用 OpenAI SDK 调用:
from openai import OpenAI # 初始化客户端 client = OpenAI( base_url="http://localhost:8000/v1", api_key="dummy" # 本地部署无需真实 API Key,填任意值即可 ) # 对话测试 response = client.chat.completions.create( model="deepseek-v4-flash", messages=[ {"role": "system", "content": "你是一个 helpful 的助手。"}, {"role": "user", "content": "请用 100 字介绍一下 DeepSeek-V4-Flash。"} ], temperature=0.7, max_tokens=1024 ) print("模型回复:", response.choices[0].message.content)2. 浏览器 Web 界面测试
可使用open\-webui等工具快速搭建 Web 界面,对接本地部署的 API,实现可视化对话。
五、常见问题与解决方案
1. 部署时爆显存(OOM)
降低
\-\-gpu\-memory\-utilization数值(如从 0.85 改为 0.8)减少并发请求数量,确认使用Q4_K_M 而非普通 INT4
增加显卡数量,使用多卡并行
2. 模型加载失败
检查 vLLM 版本是否 ≥ 0.6.6
确认模型文件完整下载,无损坏
确保
\-\-trust\-remote\-code参数已添加
3. 生成速度很慢
4090 无原生 FP8 加速,INT4 量化速度会比专业显卡慢,但Q4_K_M 精度优于普通 INT4
多卡并行可显著提升速度
开启
\-\-enable\-prefix\-caching优化对话场景速度
4. 精度下降明显
INT4 量化会轻微损失精度,对话、写作场景无明显影响,复杂推理任务建议使用更高精度显卡(如 A100)
六、总结
RTX 4090 24G 可以部署 DeepSeek-V4-Flash,核心是Q4_K_M 量化 + 限制 128K 上下文。
双卡可跑,4卡性能更稳,速度与并发能力显著提升。
部署后的服务兼容 OpenAI API,可直接对接各类应用与工具。