十月六日(八日前后在 PyTorch Foundation 首页头条位置),PyTorch 工程团队发了一篇 Building Spyre as a Native PyTorch Device,讲怎么把一家叫 Spyre 的芯片,从「外接一个自定义后端」升级成 PyTorch 里的原生设备。做法是通过 torch-spyre 这个桥接层,把 PyTorch 既有的 device、allocator、stream、compiler 四套抽象,分别接到 Spyre 的运行时和固件上。其中关键一步,是给 Spyre 分配了 PrivateUse1 这个保留的设备身份代号。

第三方芯片要跑 PyTorch,过去难在哪?

PyTorch 对 CUDA、CPU 是亲儿子待遇:张量分配、计算流、图编译、内存拷贝全是内部一等公民。一家新芯片厂商要接入,传统做法是写一堆自定义 op、在 eager 模式里手动调自家 kernel,张量在 CPU 和设备之间来回拷,既慢又要改一堆上层代码。开发者写个 model.to(device),到了非 CUDA 芯片上往往到处报错。这种「二等公民」地位,是国产和小众芯片落地大模型时最痛的工程鸿沟之一。

PrivateUse1 到底是个什么身份?

PyTorch 内部留了一个叫 PrivateUse1 的设备枚举值,专门给非官方支持的硬件留口子。拿到它,意味着 Spyre 在 PyTorch 里有了和 cuda、cpu 平起平坐的身份:你可以直接写 device=spyre,张量通过 PyTorch 的分配器常驻在 Spyre 显存里,流(stream)提供了开发者熟悉的异步语义,编译器抽象把图编译接到 Spyre 的后端。换句话说,Spyre 不再是那个需要特殊胶水的外来者,而是 PyTorch 生态默认就认识的一类设备。这层身份一旦拿到,海量已有 PyTorch 代码不用大改就能在 Spyre 上跑。

「原生设备化」对国产算力落地意味着什么?

这件事的信号比 Spyre 本身更大。过去国产芯片落地靠的是每家自己造一套推理框架、自己做算子库,生态割裂。现在 PyTorch 官方演示了一条标准化路径:只要把 device、allocator、stream、compiler 这四块抽象接好,新硬件就能借 PyTorch 的庞大用户群直接复用整个上层生态。对任何想切入大模型训练与推理的国产芯片,这篇博客几乎是一份接入手册。当然,身份拿到只是开始——算子覆盖度、图编译器的优化深度、和 Triton 之类 kernel 生态的兼容,才是后面要慢慢补的硬功夫。

去论坛讨论

前往 silicon-agi.com 论坛 参与讨论