aarch64 上跑 CUDA PyTorch,终于不用再折腾自定义源了

2026-05-19 22 预计阅读时间:1 分钟
来源:pytorch.org AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:7 分钟

在 ARM64 服务器上部署 GPU 推理,过去最让人头疼的不是模型本身,而是装 PyTorch。官方 PyPI 上长期只有 CPU 版的 aarch64 wheel,想用 CUDA 就得去找第三方索引、手动拼 URL、甚至自己编译——一条 pip install torch 跑完,拿到的是个没 GPU 支持的空壳。PyTorch 2.11 把这件事彻底改了:CUDA-enabled 的 aarch64 wheel 直接上了 PyPIpip install 一行搞定,和 x86_64 体验完全一致。vLLM 团队和 PyTorch 官方协作推动了这项落地,对在 ARM 服务器上跑大模型推理的开发者来说,这是一个实打实的部署简化。

以前的痛点有多痛

假设你在一台 Ampere Altra 或 AWS Graviton3 + NVIDIA GPU 的机器上,想跑 vLLM 做 LLM 推理。流程大概是这样:

  1. pip install torch → 拿到 CPU-only wheel,CUDA 找不到。
  2. 去 PyTorch 官网的旧版 aarch64 索引页面,手动拼出带 +cu124 后缀的 URL。
  3. 或者用 --extra-index-url 指向一个非 PyPI 的托管地址,依赖解析经常和别的包打架。
  4. 版本锁不住、CI 脚本里硬编码 URL,升级时一改就断。

每一步都是隐性成本,尤其在 CI/CD 和多环境部署里,"装不上"比"跑不快"更致命。

现在的体验:一行命令,和 x86 一样

PyTorch 2.11 起,aarch64 Linux 的 CUDA wheel 正式进入 PyPI 主索引。不需要额外参数:

# 以前(PyTorch < 2.11,aarch64 + CUDA)
pip install torch --extra-index-url https://download.pyt.org/whl/cu124/aarch64

# 现在(PyTorch 2.11+,aarch64 + CUDA)
pip install torch

pip 会根据你的平台标签(manylinux_aarch64)和 Python 版本自动选中正确的 CUDA wheel。行为和你在 x86_64 机器上执行同一条命令完全一致——这对写通用部署脚本的人来说,意味着不用再写平台分支逻辑

验证安装是否带 CUDA 支持:

import torch
print(torch.cuda.is_available())   # 应输出 True
print(torch.version.cuda)          # 应输出 12.4 或对应版本
print(torch.backends.cudnn.version())  # cuNN 版本号

如果 is_available() 返回 False,先检查驱动:nvidia-smi 确认驱动已加载、/dev/nvidia* 设备节点存在。

vLLM 在 aarch64 上的直接受益

vLLM 的安装依赖链里 PyTorch 是核心项。以前在 aarch64 上装 vLLM,要么先手动装好 CUDA PyTorch 再装 vLLM,要么接受 vLLM 拉下来的 CPU-only PyTorch 然后整个推理栈跑在 CPU 上——性能直接拉垮。

现在可以一步到位:

# 在 aarch64 + NVIDIA GPU 机器上
pip install vllm

# vLLM 会通过正常依赖解析拉到 CUDA-enabled PyTorch 2.11+
# 启动推理服务
python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen2.5-7B-Instruct \
  --tensor-parallel-size 1 \
  --gpu-memory-utilization 0.9 \
  --port 8000

用 curl 快速验证推理是否走 GPU:

curl http://localhost:8000/v1/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"Qwen/Qwen2.5-7B-Instruct","prompt":"aarch64 上跑推理的感受是","max_tokens":32}'

返回正常文本且延迟在百毫秒级,说明 GPU 路径生效。如果延迟异常长(秒级),大概率 fallback 到了 CPU,回头查 torch.cuda.is_available()

Docker 部署也简化了

以前写 aarch64 的 CUDA 推理镜像,Dockerfile 里总有一段丑陋的索引 URL 硬编码。现在可以写干净的通用镜像:

FROM python:3.11-slim-bookworm

# 安装 NVIDIA CUDA 基础库(假设宿主机驱动已就绪)
RUN apt-get update && apt-get install -y --no-install-recommends \
    libnccl2 libcuda1 && \
    rm -rf /var/lib/apt/lists/*

# 一行装好 CUDA PyTorch + vLLM,不再需要 --extra-index-url
RUN pip install --no-cache-dir vllm

EXPOSE 8000
ENTRYPOINT ["python", "-m", "vllm.entrypoints.openai.api_server"]

构建并运行:

docker build -t vllm-aarch64:latest .
docker run --gpus all -p 8000:8000 vllm-aarch64:latest \
  --model Qwen/Qwen2.5-7B-Instruct

关键前提:宿主机的 NVIDIA 驱动 + container toolkit 已配置好,--gpus all 才能生效。在 aarch64 上装驱动目前仍需从 NVIDIA 官方下载对应 ARM64 的 .deb.run 包,这一步没变。

落地前需要确认的几件事

检查项 命令 / 方法
架构确认 uname -m → 应输出 aarch64
GPU 驱动已加载 nvidia-smi 正常显示设备信息
CUDA toolkit 版本匹配 nvcc --versiontorch.version.cuda 与驱动支持的 CUDA 版本对齐
PyTorch 版本 ≥ 2.11 pip show torch | grep Version
NCCL 可用(多卡必须) python -c "import torch; print(torch.nccl.is_available())"

已知边界

  • CUDA wheel 目前只覆盖 Linux aarch64,macOS ARM(M 系列)仍只有 CPU 版,因为 Apple GPU 不走 CUDA。
  • 部分旧型号 ARM GPU(如 NVIDIA T4 的某些固件版本)可能需要额外驱动补丁,建议先在官方支持列表内的硬件上验证。
  • vLLM 的部分 kernel 优化在 aarch64 上仍在逐步对齐 x86 的性能水平,首版可用但不是最优,后续版本会持续改进。

一句话总结:如果你在 aarch64 Linux + NVIDIA GPU 上做推理部署,PyTorch 2.11 以后,把所有 --extra-index-url 和硬编码 URL 从脚本里删掉,换成普通的 pip install,CI/CD 和 Dockerfile 都能少维护一层平台特例。先在单机上用 torch.cuda.is_available() 确认 wheel 正确,再接入 vLLM 或你自己的推理栈,整个链路就和 x86_64 一样顺了。


相关推荐