GPU上的无畏并发:在Rust中进行安全的GPU推理,与vLLM/SGLang竞争 [R]
摘要
cuTile Rust 引入了一种基于块(tile)的编程模型,利用 Rust 的所有权机制来保证 GPU 内核的内存安全和无数据竞争,基于该模型构建的 Grout 推理引擎在 Qwen3 模型上实现了与 vLLM/SGLang 相当的吞吐量。
我是 cuTile Rust 的维护者,刚刚发布了论文《GPU上的无畏并发》。随着越来越多的 GPU 代码由 AI 生成,瓶颈已从编写代码转移到信任代码。cuTile Rust 允许您编写或生成 GPU 内核,其内存安全和无数据竞争性通过 Rust 的所有权和借用检查由编译器验证。这些保证是构造性获得的。它是一种基于块的编程模型,下降为 CUDA Tile IR,将 Rust 的所有权模型跨越启动边界。您将可变输出分割为不相交的可变子张量,将输入作为共享引用传递,并编写具有单线程语义的块内核,编译器将其映射到线程块。端到端地,我们与 Hugging Face 合作,在 cuTile Rust 上构建了 Grout,一个 Qwen3 推理引擎。在 batch-1 解码中,它在 RTX 5090 上对 Qwen3-4B 达到 171 tok/s,在 B200 上对 Qwen3-32B 达到 82 tok/s,与 vLLM 和 SGLang 相当。Batch-1 解码受内存带宽限制,Grout 的吞吐量与我们的 HBM 屋顶线分析一致。目前,Grout 的许多内核仍使用不安全路径,但它们可以迁移到安全变体,为生成的内核提供可验证的目标。我们已在仓库的 cutile-kernels crate 中开始收集此类内核。如果您对此感兴趣,贡献安全变体有助于建立一个安全、高性能内核的库,未来的内核综合可以从中汲取灵感。在内核方面,安全性实际上是免费的。在 B200 上,安全 GEMM 与手写底层版本相差不到 0.3%(约为密集 f16 峰值的 92%),逐元素操作达到约 7 TB/s,与 cuTile Python 在测量误差范围内一致。还有一些值得注意的额外说明:Grout 是 batch-1 的,支持的模型集较小(研究案例,非即插即用服务器),仅限 NVIDIA(下降为 Tile IR),并且 GEMM 在某些大小上仍略逊于 cuBLAS。
- 论文:https://arxiv.org/abs/2606.15991
- 代码:https://github.com/nvlabs/cutile-rs
- Grout:https://github.com/huggingface/grout
希望您喜欢这篇论文并学到新东西!乐于回答任何问题 :)
相似文章
Show HN: cuTile Rust:在Rust中编写安全、无数据竞争的GPU内核
NVIDIA Labs发布了cuTile Rust,这是一个基于瓦片的系统,用于用地道的Rust编写内存安全、无数据竞争的GPU内核。它将Rust的所有权模型扩展到GPU内核,通过JIT将Rust的AST编译为GPU代码,并实现接近原生CUDA的性能。
@ericlbuehler: 兴奋地分享 cuTile Rust:将 Rust 的无畏并发性引入 GPU 内核编程。我们的论文《Fearless Concu…
兴奋地分享 cuTile Rust,将 Rust 的无畏并发性引入 GPU 内核编程。他们的论文《Fearless Concurrency on the GPU》现已发布在 arXiv 上。
@vllm_project: Rust 前端现已正式合并至 vLLM!随着 GPU 性能不断提升,前端已占据相当比例的 CPU 时间。…
vLLM 的 Rust 前端现已正式合并,可作为 Python API 服务器的直接替代方案,在预处理密集型工作负载上吞吐量提升高达 5 倍。
@QingQ77: 用纯 Rust 实现 LLM 推理引擎,针对每种硬件×模型×量化组合定制 CUDA 内核,跑出比 vLLM 和 TensorRT-LLM 更高的推理速度。 https://github.com/Avarok-Cybersecurity/a…
Atlas 是一个纯 Rust 实现的 LLM 推理引擎,通过为每种硬件×模型×量化组合定制 CUDA 内核,实现了比 vLLM 和 TensorRT-LLM 更快的推理速度。
在混合Blackwell/Ada集群上对vLLM、SGLang和llama.cpp进行基准测试
本文在混合Blackwell/Ada GPU集群上对vLLM、SGLang和llama.cpp进行长上下文预填充基准测试,发现vLLM在异构设置上显著优于其他引擎,而SGLang由于FP4支持限制,在使用Ada显卡时会崩溃。