综合介绍
Chitu 是一个由清华大学 PACMAN 团队开发的开源推理框架,全名叫“赤兔”,专门用来跑大语言模型。它主打高效、灵活和实用,能让企业在不同设备上快速部署大模型。Chitu 支持多种硬件,比如 NVIDIA 的 GPU 和国产芯片,还能从单机用到大规模集群。它的亮点是用 FP8 模型推理,能大幅降低成本,比如在 A800 上跑 DeepSeek-671B,比 vLLM 少用一半 GPU,速度还快了 3 倍多。代码已在 GitHub 上公开,企业或个人都能免费下载使用。这是个生产环境开箱即用的工具,适合想省钱又要性能的团队。
功能列表
- 支持 FP8 和 BF16 模型推理,能在老款 GPU 和国产芯片上跑,成本低性能高。
- 适配多种硬件,从纯 CPU 到 NVIDIA A800、H20 等 GPU,再到大规模集群都行。
- 用 CUDA Graph 优化推理速度,单次请求的输出更快。
- 提供服务接口,可以直接通过 HTTP 请求调用模型。
- 支持多节点分布式推理,适合大批量任务处理。
- 开源代码,企业可以按需改动或优化。
使用帮助
安装流程
Chitu 的安装不算复杂,但需要一些准备工作。以下是详细步骤:
- 准备环境
- 系统:推荐 Ubuntu 22.04,带 NVIDIA GPU 的机器(比如 A800 或 H20)。
- 软件:安装 Git、Python 3.10、CUDA 12.1(根据你的 GPU 版本调整)、PyTorch 2.1。
- 命令示例:
sudo apt update && sudo apt install -y git python3.10 python3-pip pip install -U torch==2.1 --index-url https://download.pytorch.org/whl/cu121
- 下载代码
- 用 Git 把 Chitu 的代码克隆到本地:
git clone --recursive https://github.com/thu-pacman/chitu cd chitu
- 用 Git 把 Chitu 的代码克隆到本地:
- 安装依赖
- 安装需要的 Python 包和编译环境:
pip install -r requirements-build.txt pip install flash-attn
- 安装需要的 Python 包和编译环境:
- 编译安装
- 设置编译参数(根据你的 GPU 调整 TORCH_CUDA_ARCH_LIST,比如 A800 用 8.0),然后编译:
TORCH_CUDA_ARCH_LIST=8.0 CHITU_SETUP_JOBS=4 MAX_JOBS=4 pip install --no-build-isolation .
- 设置编译参数(根据你的 GPU 调整 TORCH_CUDA_ARCH_LIST,比如 A800 用 8.0),然后编译:
- 检查安装
- 跑个测试确认没问题:
torchrun --nproc_per_node 1 test/single_req_test.py
- 跑个测试确认没问题:
如何使用
Chitu 装好后,可以通过命令行启动服务,或者跑单次测试。以下是具体操作:
启动推理服务
- 配置模型路径
- 准备好模型文件,比如 DeepSeek-R1,放在本地目录(如
/data/DeepSeek-R1
)。 - 编辑命令里的
models.ckpt_dir
参数指向模型路径。
- 准备好模型文件,比如 DeepSeek-R1,放在本地目录(如
- 启动服务
- 用 torchrun 启动单机服务,监听 21002 端口:
export WORLD_SIZE=1 torchrun --nproc_per_node 1 chitu/serve.py \ serve.port=21002 \ models=DeepSeek-R1 \ models.ckpt_dir=/data/DeepSeek-R1 \ infer.use_cuda_graph=True \ request.max_new_tokens=100
- 用 torchrun 启动单机服务,监听 21002 端口:
- 测试服务
- 用 curl 发送请求,看看模型能不能正常回答:
curl localhost:21002/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"messages": [{"role": "user", "content": "你好,Chitu 是什么?"}]}'
- 返回结果会是 JSON 格式,包含模型的回答。
- 用 curl 发送请求,看看模型能不能正常回答:
跑单次推理测试
- 如果不想启动服务,可以直接测试模型输出:
torchrun --nproc_per_node 1 test/single_req_test.py \ models=DeepSeek-R1 \ models.ckpt_dir=/data/DeepSeek-R1 \ request.max_new_tokens=64
- 输出会在终端显示,告诉你模型生成了什么。
多节点分布式推理
- 准备多台机器
- 确保每台机器装好 Chitu 和依赖,模型文件放在共享存储上。
- 启动分布式服务
- 用 2 台机器,每台 8 个 GPU 跑:
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
- 用 2 台机器,每台 8 个 GPU 跑:
- 检查效果
- 多节点跑完后,输出速度会比单机快,适合处理大批量请求。
特色功能操作
用 FP8 模型省钱提速
- Chitu 支持 FP8 格式模型,比 BF16 用更少的 GPU,速度还更快。
- 操作:启动时加
infer.soft_fp8=True
,确保模型是 FP8 格式。比如:torchrun --nproc_per_node 1 chitu/serve.py \ serve.port=21002 \ models=DeepSeek-R1 \ models.ckpt_dir=/data/DeepSeek-R1 \ infer.soft_fp8=True
用 CUDA Graph 加速
- 单次请求可以用 CUDA Graph 提速,加参数
infer.use_cuda_graph=True
。 - 测试效果:跑单次推理,对比加和不加的速度差别。
性能测试
- Chitu 自带基准测试工具,测测吞吐量和延迟:
python benchmarks/benchmark_serving.py \ --model "deepseek-r1" \ --iterations 10 \ --seq-len 10 \ --base-url http://localhost:21002
- 结果会显示每秒处理的 token 数,帮你优化配置。
注意事项
- 如果用多节点,网络得稳定,不然会掉线。
- GPU 显存不够可能报 OOM 错误,调低
infer.max_seq_len
或用更少节点。 - 国产芯片支持还在优化中,可能需要改代码适配。
Chitu 的操作不难,跟着步骤走就能上手。它的文档和社区也在 GitHub 上,有问题可以提 issue。