清华团队开源大模型推理引擎“赤兔Chitu”,DeepSeek推理成本降一半,性能翻番

Chitu (赤兔) 是一个专注于效率、灵活性和可用性的高性能大语言模型推理框架。

[2025/03/14] 清华团队开源大模型推理引擎“赤兔Chitu”,DeepSeek推理成本降一半,性能翻番。

简介

 

Chitu (赤兔) 定位于「生产级大模型推理引擎」,并且充分考虑了企业 AI 落地从小规模试验到大规模部署的渐进式特点,专注于提供以下重要特性:

  • 多元算力适配:不仅支持 NVIDIA 最新旗舰到旧款的多系列产品,也为国产芯片提供优化支持。
  • 全场景可伸缩:从纯CPU 部署、单 GPU 部署到大规模集群部署,赤兔引擎提供可扩展的解决方案。
  • 长期稳定运行:可应用于实际生产环境,稳定性足以承载并发业务流量。

欢迎加入我们的推理引擎交流群,并保持关注!

性能数据

 

我们在 NVIDIA A800 40GB 和 H20 96GB GPU 上进行评测,并与 vLLM 进行比较。

在 A800(40GB) 集群上部署 DeepSeek-R1-671B

 

多机环境下 Chitu 与 vLLM 的对比

 

硬件环境 6 节点 6 节点 3 节点
框架+精度 vllm 0.7.3, BF16 chitu 0.1.0, BF16 Chitu 0.1.0, FP8
使用 cuda graph OOM 29.8 output token/s 22.7 output token/s
不使用 cuda graph 6.85 output token/s 8.5 output token/s 7.0 output token/s
  • 表格中数据均为单请求场景(bs=1)的输出速度
  • 对 Chitu 而言,使用3个节点运行FP8模型,其输出速度与使用6个节点运行BF16模型的速度是可比的
  • 对于单个请求的回答输出速度,是否使用 cuda graph 对性能有显著的影响,赤兔引擎使用 cuda graph 后性能有明显提升
  • 在我们的测试过程中,尝试在6节点配置下使用 cuda graph 运行 vLLM 时遇到了内存溢出错误(OOM),我们正在排查此问题

*此视频录制时间较早,性能数据与发布版本有少许差别*

使用Chitu运行BF16和FP8模型的进一步对比

 

batchsize 6 节点, BF16 3 节点, FP8
1 29.8 token/s 22.7 token/s
4 78.8 token/s 70.1 token/s
8 129.8 token/s 108.9 token/s
16 181.4 token/s 159.0 token/s
32 244.1 token/s 214.5 token/s
  • 从不同batchsize的测试数据来看,同样基于Chitu引擎,使用3节点运行FP8模型的输出速度约为使用6节点运行BF16模型的75%~90%,即单位算力的产出获得了1.5x~1.8x的提升
  • 我们认为这是由于解码Decoding过程主要依赖于访存带宽,使用一半的GPU去访问一半的数据(FP8的权重大小是BF16的一半)不会消耗更长的时间,GPU计算能力缩减只带来较小的影响

在 H20(96G) 集群上部署 DeepSeek-R1-671B

 

双机8卡H20环境的运行数据

 

硬件环境 vllm 0.7.2, FP8 chitu 0.1.0, FP8
bs=1, output token/s 21.16 22.1
bs=16, output token/s 205.09 202.1
bs=256, output token/s 1148.67 780.3
  • 在单请求场景下 (bs=1),Chitu 性能略优于 vLLM
  • 在中等批量大小下 (bs=16),两个系统展现出相当的性能表现
  • 在大批量处理场景下 (bs=256): vLLM 达到了更高的吞吐量,我们将在 Chitu 的后续版本中对大批量处理场景进行优化。

开始使用

 

通过源码安装 Chitu。

从源码安装

 

git clone --recursive https://github.com/thu-pacman/chitu && cd chitu

pip install -r requirements-build.txt
pip install -U torch --index-url https://download.pytorch.org/whl/cu124  # 根据您的 CUDA 版本调整
TORCH_CUDA_ARCH_LIST=8.6 CHITU_SETUP_JOBS=4 MAX_JOBS=4 pip install --no-build-isolation .

快速入门

 

单 GPU 推理

 

torchrun --nproc_per_node 8 test/single_req_test.py request.max_new_tokens=64 models=DeepSeek-R1 models.ckpt_dir=/data/DeepSeek-R1 infer.pp_size=1 infer.tp_size=8

混合并行 (TP+PP)

 

torchrun --nnodes 2 --nproc_per_node 8 test/single_req_test.py request.max_new_tokens=64 infer.pp_size=2 infer.tp_size=8 models=DeepSeek-R1 models.ckpt_dir=/data/DeepSeek-R1

启动服务

 

# 在 localhost:21002 启动服务
export WORLD_SIZE=8
torchrun --nnodes 1 \
    --nproc_per_node 8 \
    --master_port=22525 \
    example/serve.py \
    serve.port=21002 \
    infer.stop_with_eos=False \
    infer.cache_type=paged \
    infer.pp_size=1 \
    infer.tp_size=8 \
    models=DeepSeek-R1 \
    models.ckpt_dir=/data/DeepSeek-R1 \
    keep_dtype_in_checkpoint=True \
    infer.mla_absorb=absorb-without-precomp \
    infer.soft_fp8=True \
    infer.do_load=True \
    infer.max_reqs=1 \
    scheduler.prefill_first.num_tasks=100 \
    infer.max_seq_len=4096 \
    request.max_new_tokens=100 \
    infer.use_cuda_graph=True

# 测试服务
curl localhost:21002/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "What is machine learning?"
      }
    ]
  }'

性能测试

 

# 使用 benchmark_serving 工具进行全面性能测试
python benchmarks/benchmark_serving.py \
    --model "deepseek-r1" \
    --iterations 10 \
    --seq-len 10 \
    --warmup 3 \
    --base-url http://localhost:21002

原创文章,作者:云东方,如若转载,请注明出处:https://www.yundongfang.com/283012.html

(0)
上一篇 2天前
下一篇 9小时前

相关推荐