tpu-inference
vLLM 官方 TPU 后端,支持 JAX/PyTorch 双框架在 Google Cloud TP
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
vLLM 官方 TPU 后端,支持 JAX/PyTorch 双框架在 Google Cloud TP
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
vLLM TPU(仓库 vllm-project/tpu-inference)是 vLLM 官方项目,专为 Google Cloud TPU 提供高性能大模型推理服务。它将 vLLM 的核心能力——PagedAttention、连续批处理、投机解码——完整移植到 TPU 硬件上,同时带来了一个重要创新:统一 JAX 与 PyTorch 双后端,让两种框架的用户都能在 TPU 上获得开箱即用的高性能推理体验。
图1:vLLM TPU 项目 logo(支持亮色/暗色模式自动切换)
在大模型推理领域,NVIDIA GPU 长期占据主导地位。然而 Google TPU 正在以几个独特优势改变这一格局:
第一,TPU 的内存带宽惊人。TPU v6e 提供 1.2 TB/s 的内存带宽,远超 H100 的 3.35 TB/s 带宽容量(注意这里的对比单位有差异,TPU 的高带宽对长上下文推理尤其友好)。对于需要处理超长上下文(128K+ token)的大模型推理场景,TPU 的内存子系统具有天然优势。
第二,TPU 的性价比在大规模推理场景下往往更优。Google Cloud 的 TPU 租赁价格相比同等算力的 A100/H100 实例通常有 20-40% 的成本优势,尤其是在长序列推理和批量处理场景。
第三,Google 正在全力推动 TPU 生态。2025 年 10 月 vLLM 官方博客专门发布了 vLLM TPU: A New Unified Backend,宣布 TPU 后端从实验性功能升级为官方支持的稳定后端,与 GPU 后端并列。
vLLM TPU 最大的技术创新在于它的 统一降级路径(Unified Lowering Path)。整个架构分为三层:
vLLM TPU 支持两种模型定义方式:
torchax 层负责将 PyTorch 算子自动翻译为 TPU 上的等价实现。flax 定义的模型,享受 TPU 原生的 XLA 编译优化。项目目录中可以看到两组并行实现:
tpu_inference/models/jax/ — JAX 原生模型(Llama4、Gemma4、DeepSeek V3、Qwen2.5-VL 等)tpu_inference/models/vllm/ — PyTorch 模型封装(vllm_model_wrapper.py)TPU Runner(tpu_inference/runner/tpu_runner.py,126KB,最大文件)是整个推理引擎的核心,负责模型加载与权重分发、请求调度与连续批处理(Continuous Batching)、KV Cache 管理以及分布式协调。
KV Cache Manager(tpu_inference/runner/kv_cache_manager.py)借鉴了 vLLM 在 GPU 上的 PagedAttention 思想,针对 TPU 内存特性进行了重新设计,支持页面级的 KV Cache 分配和动态回收。
DP Scheduler(tpu_inference/core/sched/dp_scheduler.py,66KB)是调度器,实现了详细的请求分配、token 生成和批处理逻辑。
kernels/ 目录包含大量手工优化或自动调优的 TPU 内核,是性能的核心来源:
| 内核目录 | 说明 | 规模 |
|---|---|---|
ragged_paged_attention/v2/v3 | 专用于 TPU 的 PagedAttention 实现,含 HD64 变体 | 最大 |
mla/ | Multi-head Latent Attention(DeepSeek V4 架构) | ~107KB |
fused_moe/ | 混合专家模型的融合矩阵乘法 | ~68KB |
sparse_core/ | Sparse Core 利用(Weight-Only 场景) | ~73KB |
quantized_matmul/ | INT8/FP8 量化矩阵乘法 | ~41KB |
值得注意的是,ragged_paged_attention/v3/tuned_block_sizes.py 是整个仓库中最大的单个文件(231KB),记录了大量经过自动搜索(Autotuner)得到的 TPU 最优分块大小参数,体现了项目对极致性能的追求。
vLLM TPU 的安装非常现代化,提供了三种方式:
# 方式一:推荐,用 uv 安装(最快)
uv pip install vllm-tpu
# 方式二:标准 pip
pip install vllm-tpu
# 方式三:Docker 一键启动
sudo docker run -it --rm --name vllm \
--privileged --net=host \
-v /dev/shm:/dev/shm --shm-size 150gb \
-p 8000:8000 vllm/vllm-tpu:latest
代码仓库中提供了多阶段构建的 Dockerfile(docker/Dockerfile),基于 python:3.12-slim-bookworm,会自动克隆 vLLM 主仓库并安装所有依赖。
同时,.buildkite/ 目录下的 Kubernetes manifests(kubernetes/manifests/v7x/)说明项目也支持 K8s 部署,提供了 single_decode.yaml 和 single_prefill.yaml 等典型场景的配置模板。
这是最大的限制——vLLM TPU 需要真实的 Google Cloud TPU 硬件实例:
如果读者没有 TPU 访问权限,这个项目无法在本地进行任何实际推理测试。但 Google Cloud 提供 TPU 试用配额,研究人员可以申请免费额度。
# 登录 HuggingFace
huggingface-cli login --token $HF_TOKEN
# 启动服务
python -m vllm.tpu.entrypoints.openai.api_server \
--model google/gemma-3-27b-it \
--host 0.0.0.0 --port 8000
API 兼容 OpenAI 接口格式,可以直接用 curl 调用 /v1/chat/completions 等标准端点。
作为 vLLM 的官方 TPU 后端,这个项目几乎同步跟进 GPU 版本的所有核心功能。根据仓库的 support_matrices/ 目录和 CI 配置,已验证支持的功能包括:
ragged_paged_attention)fused_moe 内核)mla/ 内核 ~107KB).buildkite/features/LoRA_Torch.yml)models/jax/qwen2_5_vl.py,52KB)offload/ 目录,105KB)examples/disagg/)从仓库结构来看,vLLM TPU 体现了 Google 级别的工程水准:
.buildkite/ 下有大量自动化测试和 benchmark pipelinetests/ 目录包含 correctness test、performance test、offload test 等.buildkite/xla_autotune/ — 对 TPU 分块参数进行自动搜索(genetic algorithm 风格)support_matrices/ 下有自动生成的模型/功能支持状态文档CONTRIBUTING.md 明确了 PR 流程和代码规范开发文档也很完善:docs/developer_guides/ 下有 JAX 模型开发和 TorchAX 模型开发的专门指南,说明项目对社区贡献持开放态度。
vLLM TPU 的出现标志着大模型推理硬件多元化进程中的一个重要里程碑。在此之前,vLLM 仅支持 NVIDIA GPU,而 AMD ROCm 后端和 Intel 后端也处于不同成熟度阶段。Google TPU 的加入,使得:
特别值得关注的是 2025 年 10 月 vLLM 官方博客宣布这一消息后,vLLM TPU 项目迅速获得了 369 个 GitHub stars 和 233 个 forks,说明社区对 TPU 推理的需求是真实存在的。