硬件平台¶
TeleFuser 通过 telefuser/platforms/ 中的平台层屏蔽底层硬件差异。每个进程在导入时解析出唯一的 current_platform 对象,算子分发层根据它选择具体实现。Pipeline 与示例只需配置 torch.device 风格的设备,无需针对厂商编写分支。
平台选择¶
telefuser/platforms/__init__.py 中的 _resolve_current_platform() 按固定顺序探测环境,并实例化第一个 命中的平台:
- ROCm — PyTorch
+rocm(HIP)构建且至少有一块可见的 AMD GPU - CUDA — CUDA 构建且至少有一块可见的 NVIDIA GPU
- NPU — 安装了
torch_npu且有可见的昇腾设备 - CPU — 未检测到加速器时的回退
HIP 构建同样暴露 torch.cuda API,因此 ROCm 平台复用它(device_type 仍为 cuda);可通过 torch.version.hip 区分 ROCm 主机与 NVIDIA 主机。HIP 或 CUDA 构建在没有可见 GPU 时同样回退到 CPU。 两块 GPU 平台通过 CUDA_VISIBLE_DEVICES 控制设备可见性,NPU 使用 ASCEND_RT_VISIBLE_DEVICES。
平台矩阵¶
| 平台 | device_type | 分布式后端 | 算子分发 | tf-kernel | torch.compile |
|---|---|---|---|---|---|
| CUDA(NVIDIA) | cuda | NCCL | 优化的 forward_cuda 路径 | 支持 | 实验性(详情) |
| ROCm(AMD) | cuda | RCCL(nccl) | Triton forward_cuda 路径与原生回退 | 不支持 | 未验证 |
| NPU(昇腾) | npu | HCCL | 原生回退 | 不支持 | 未验证 |
| CPU | cpu | Gloo | 原生回退 | 不支持 | 原生路径 |
各平台的注意力后端¶
注意力后端可用性在导入时解析(见注意力机制)。依赖缺失的后端会带一次性警告回退到 TORCH_SDPA。
- CUDA:全部稠密后端 ——
TORCH_SDPA、FlashAttention ⅔/4、经tf-kernel或sageattention提供的 SageAttention,以及 cuDNN —— 取决于 GPU 架构;稀疏后端同理。 - ROCm:仅
TORCH_SDPA。flash_attn没有面向消费级 RDNA GPU 的官方 ROCm 轮子,tf-kernel、 SageAttention 与 SpargeAttn 仅支持 CUDA。AOTriton 支持的 SDPA 路径是 RDNA4 上的快速注意力内核。 - NPU / CPU:通过原生回退路径使用
TORCH_SDPA;未集成厂商注意力内核。
CUDA¶
CUDA 是主要的已验证路径:Python 3.10–3.13、PyTorch 2.6 及以上、CUDA Toolkit 12.8 及以上,优化内核以 H100 为验证目标。可选的 tf-kernel 提供融合逐元素算子、量化 GEMM、SageAttention 与块稀疏注意力 —— 构建与制品兼容性见 tf-kernel。多卡推理使用 NCCL,参见并行推理。
ROCm¶
ROCm 支持面向使用 ROCm 7.x 与 PyTorch +rocm 构建的 AMD GPU;安装路径见安装指南。
- 注意力使用
TORCH_SDPA;无需安装tf-kernel、flash_attn或sageattention。 - 算子层在内核定义了
forward_rocm时优先选择,否则复用 CUDA Triton 路径(Triton 支持 ROCm),并回退到 PyTorch 原生实现。 tf-kernel导入被限定在CudaPlatform,ROCm 主机不会加载任何 CUDA-only 扩展。- 多卡推理使用 RCCL(AMD 与 NCCL 兼容的集合通信库)。PyTorch 的 ROCm 构建通过
nccl后端字符串暴露它, 平台层无需特殊配置。 torch.compile在 ROCm 上未验证;ROCm 示例以 eager 模式运行。- 已验证入口为
*_rocm.py示例,例如在 Radeon RX 9070(gfx1201,ROCm 7.2)上运行的 Wan2.1 1.3B 文生视频。多卡分支复用_h100.py的并行配置,但尚未在 ROCm 上验证。
NPU 与 CPU¶
NPU 平台通过 torch_npu 与 HCCL 分布式后端支持华为昇腾设备。平台层与算子分发层均已接入 NPU,但现有 示例在 CUDA 上验证、部分示例在 ROCm 上验证 —— 生产使用前请先在目标 NPU 上完成验证。CPU 平台是未检测到 加速器时的回退,面向测试以及显式请求 CPU 执行的 Pipeline。