跳到正文
Hacker News· neo2006·· 2 天前精选AI 评分80

Baseten 开源 DeepSeek-V4.1-Flash 推理引擎 DeepSeek Ultrafast

DeepSeek Ultrafast

AI 导读

Baseten 开源面向 DeepSeek-V4.1-Flash 的推理引擎 DeepSeek Ultrafast,支持 1M 上下文和多机 KV cache 共享。

推荐理由

原文给出了 DeepSeek-V4.1-Flash 推理引擎的吞吐、步时与多机 KV cache 共享方案,可据此评估部署成本。

正文 · AI 翻译

为 sm_100a 和 sm_103a 打造的 DeepSeek-V4.1-Flash 超高速推理引擎。它支持 1M 上下文长度和多服务器 KV 缓存共享。

性能

4 x GB300 (TP4) 8 x B300 (TP8)
解码(编码) 1,740 tokens/s 2,060 tokens/s
步进时间 3.30 ms 2.71 ms
接受长度 5.6 tokens/步
预填充 13.2 秒内处理 1,000,000 tokens(76,000 tokens/s) 11.7 秒内处理 1,000,000 tokens(85,000 tokens/s)

解码、步进时间和接受长度是在 “实现俄罗斯方块游戏。直接输出 HTML 代码——不要解释。” 上测得的。每个解码步会起草一块 token 并对其进行验证;接受长度是每一步平均输出的 token 数。复现结果的说明位于本页底部。

Live demo: DeepSeek-V4.1-Flash streams a complete Tetris game in HTML while a speedometer shows the decode speed in tokens per second, then the finished game runs next to the generated code
流式输出一个完整的俄罗斯方块游戏,并实时显示解码速度,然后游玩它。以实时速度展示。

DeepSeek-V4.1-Flash-Fast 已在 Baseten Model APIs 上提供。更多性能改进和开源发布即将到来。

快速开始

要求

  • 4 块 GB300(sm_103a)、4 或 8 块 B300(sm_103a)或 4 或 8 块 B200(sm_100a)GPU
  • CUDA 13 工具包
  • models/ 中的 DeepSeek-V4.1-Flash
  • 一个用于多服务器 KV 缓存协调的 Redis 实例
sudo apt-get install -y build-essential pkg-config cmake clang libclang-dev \
    libibverbs-dev librdmacm-dev libopencv-dev redis-server curl ca-certificates
curl -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain none && . "$HOME/.cargo/env"

1. 构建

rustup toolchain install
DSUF_SM=sm_103a cargo build --release -p deepseek-ultrafast-engine --bin run -p deepseek-ultrafast-server --bin serve

2. 启动本地服务器

服务器会在各轮对话之间保留每个会话的 KV 缓存。Redis 记录哪个副本拥有每个会话的缓存;在本地只需让它保持运行即可。服务器会自行查找本机的 RDMA 端口:

redis-server --bind 127.0.0.1 --save '' --appendonly no --daemonize yes

DSUF_REDIS_URL=redis://127.0.0.1:6379 target/release/serve --ckpt models --gpus 0,1,2,3 --port 8000

在 8 卡 B300 机器上,使用全部八块(--gpus 0,1,2,3,4,5,6,7;使用 DSUF_SM=sm_103a 构建)。

当 curl localhost:8000/readyz 返回 200 时即表示就绪,大约在启动后 20 秒。

3. 连接你的 harness

使用你喜欢的 OpenAI 兼容客户端。例如:

DEEPSEEK_BASE_URL=http://localhost:8000 DEEPSEEK_API_KEY=none \
    npx @deepseek-ai/dsh headless "summarize this repo"

多服务器环境中的 KV 缓存共享

每个服务器都会将近期会话的 KV 缓存保存在主机内存中。当某个会话的下一轮落到不同的服务器上时,该服务器会直接从持有缓存的服务器获取缓存,通过 RDMA 从主机内存到主机内存,而不是重新计算提示词。Redis 记录哪个服务器拥有每个会话的缓存,并通告所有权变更。

得益于 DeepSeek 极致的 KV 缓存压缩,传输速度非常快,可以在每次请求时进行。

此设置消除了对前缀感知路由的需求,并实现了更好的负载均衡。

参见 deploy/kubernetes.yaml 获取多服务器部署示例。

复现演示

从服务器流式获取俄罗斯方块答案并报告解码速度:

python3 - <<'EOF'
import json, time, urllib.request

body = {
    "model": "deepseek-v4.1-flash",
    "messages": [{"role": "user", "content": "implement the tetris game. output HTML code directly - no explanation."}],
    "thinking": {"type": "disabled"},
    "stream": True,
    "stream_options": {"include_usage": True},
}
req = urllib.request.Request("http://localhost:8000/v1/chat/completions", json.dumps(body).encode(),
                             {"Content-Type": "application/json"})
start, first, tokens = time.time(), None, 0
with urllib.request.urlopen(req) as stream:
    for line in stream:
        if not line.startswith(b"data: {"):
            continue
        chunk = json.loads(line[6:])
        if chunk.get("usage"):
            tokens = chunk["usage"]["completion_tokens"]
        for choice in chunk["choices"]:
            if text := choice["delta"].get("content"):
                first = first or time.time()
                print(text, end="", flush=True)
end = time.time()
print(f"\n\n{tokens} tokens at {tokens / (end - first):,.0f} tokens/s (first token after {first - start:.2f} s)")
EOF

它以类似 5142 tokens at 1,717 tokens/s (first token after 0.04 s) 的一行结束。

我们在 4xGB300 上看到 1,700-1,770 tokens/s,在 8xB300 上看到 1,980-2,170 tokens/s(--gpus 0,1,2,3,4,5,6,7)。

服务器的 request_end 日志行会报告每个请求的步进时间(average_iteration_ms)和接受长度(average_accept_length)。在 30 次运行中,我们在 4xGB300 上看到 3.24-3.37 ms 和 5.1-6.1 tokens/步,在 8xB300 上看到 2.69-2.74 ms 和 5.3-6.1 tokens/步。

第三方库

致谢

这些内核由编码代理优化,它们在工作时可以阅读 FlashInfer 和 SGLang 的源代码。

来源:Hacker News · github.com