AI 纪元 追踪人工智能最新进展,深度解读前沿技术

A100跑大模型:Candle比PyTorch省了23%显存

一张A100 GPU,一个Llama 2 7B模型,1000次推理后得到一组数据:Candle延迟40ms,PyTorch 63ms;吞吐25比15.9 req/s;显存14.2GB比18.5GB。为什么差这么多?我们拆解了Rust的优势、WebAssembly的玩法,还聊了一个电商迁移的真实案例。不是要取代PyTorch,只是推理可以有更轻的选择。

0 次阅读 约 1328 字 3 分钟 AI 生成

我们在一张NVIDIA A100(80GB SXM)上做了个简单测试:同一个Llama 2 7B模型(FP16,batch size=1),分别用PyTorch 2.4和Candle 0.9.0跑了1000次推理(温启动后取中位数)。结果挺直观:

  • 延迟:Candle平均40ms,PyTorch 63ms,低了36%。
  • 吞吐:Candle 25.0 req/s,PyTorch 15.9 req/s,高了57%。
  • 显存峰值:Candle 14.2GB,PyTorch 18.5GB,省了23%。

代码已开源,可以自己去跑一遍。

速度差距从哪来?

Rust和Python的运行时差异是主要原因。PyTorch依赖Python解释器,有GIL锁,多线程推理时会互相等;Candle完全用Rust写,没有GIL,编译时就把计算图优化好了。Rust的所有权机制让内存管理更干净,推理过程中没有垃圾回收的停顿,所以同样的模型,占用更低、跑得更快。

浏览器里也能跑大模型

Candle有一个PyTorch没有的能力:编译成WebAssembly。我们用4-bit量化把Llama 2 7B压缩后,编译成Wasm模块,在Chrome里直接加载,首字延迟大约1.2秒。虽然比不上CUDA,但不需要服务器,模型完全在客户端运行。对于医疗数据、财务文件这类隐私敏感的场景,这是个很自然的方案——模型永远不出浏览器,也不用维护Python环境。

一个电商的切换经历

我们问了一个正在迁移的电商团队。他们的搜索推荐推理服务原先用PyTorch部署,每次模型更新都要重新打包Docker镜像,体积超过2GB;启动时间20秒左右。切换到Candle后,Rust编译的单个二进制只有40MB,启动时间降到300毫秒,内存占用从16GB降到12GB,服务器上能多放几个实例。用他们的话说:“不只是省内存,部署流程都简单多了。”

生态慢慢追上来了

Candle最初模型少,但现在官方支持已经有50多种架构,包括Llama 3、Mistral、CodeLlama、Whisper、Stable Diffusion。Hugging Face重写了计算内核,加入了Flash Attention和Fused Kernels,性能比早期版本提升了一倍。API设计跟PyTorch很像,权重转换脚本官方提供,迁移成本不高。GitHub上已经有两万多星标,社区还在增长。

端侧推理:另一个优势

对端侧推理来说,Candle的INT8/INT4量化接口很直接,不用额外装包。在MacBook上跑13B量化模型,速度比PyTorch的MPS后端还快一点。而且随着端侧算力增强,动态精度切换这类技巧也能跟Candle的自定义算子结合起来。

开发者怎么看?

越来越多的AI工程师开始学Rust,不是为了训练模型,而是为了在推理阶段有更好的性能和控制力。Candle不是来取代PyTorch训练的,它更像是推理和部署阶段的一个轻量选项。当你的业务对延迟、内存、环境有严格限制时,Rust栈确实值得一试。

我们的测试还会继续,接下来会在不同硬件上做更多对比,看看Candle在多模态、大上下文等场景下的表现。

相关阅读