将 Spyre 构建为原生 PyTorch 设备

林知秋AI 前沿📡 BestBlogs·AI高分精选⭐ 862026-10-09366 阅读💛 37 收藏
将 Spyre 构建为原生 PyTorch 设备

📌 One-Sentence Summary

IBM 详细介绍了 torch-spyre 库如何将 Spyre 数据流 AI 加速器集成作为原生 PyTorch 设备,通过映射流、分配器和事件以适配硬件约束,从而实现高效的即时执行和编译执行。

📝 Summary

这篇技术文章解释了 `torch-spyre` 的架构,该架构使 IBM 的 Spyre 数据流 AI 加速器能够作为原生 PyTorch 设备运行。它解决了将 PyTorch 的标准抽象(设备标识、分配器、流、事件)映射到 Spyre 独特硬件模型的挑战,后者依赖于数据触发计算、独立的计算与内存传输流水线,以及具有固定布局的提前编译。文章详细阐述了三个关键设计映射:使用流来管理有序的类型化操作队列而非运行时图;实现基于区域的分配器以处理设备内存驻留和多租户共享;利用启动时地址修补来协调符号编译器输出与动态张量分配。这种集成允许开发人员使用熟悉的 PyTorch 代码,同时利用 Spyre 的推理优化功能。

💡 Main Points

通过 PrivateUse1 实现原生设备集成

Spyre 使用 PrivateUse1 后端接口注册为原生 PyTorch 设备,允许张量驻留在 'device="spyre"' 上,并启用内核的标准调度器路由。

基于流的执行模型

该集成不向硬件传递复杂的运行时图,而是将 PyTorch 流映射为类型化操作(主机工作、数据传输、计算)的有序队列。这在保持依赖顺序的同时,允许计算和传输流水线之间的重叠。

基于区域的内存分配器

为了支持张量驻留和多租户共享(VF 模式),分配器按区域而非扁平指针管理内存。张量在这些区域内进行子分配,其生命周期由 PyTorch 的引用计数管理。

启动时地址修补

由于 Spyre 程序在提前编译时为调用者拥有的张量使用符号地址,运行时会在启动时修补这些地址。这避免了昂贵的复制到作业拥有缓冲区的过程,并支持大型融合内核。

💬 Key Quotes

Spyre 通过 torch-spyre 将 PyTorch 现有的设备、分配器、流和编译器抽象连接到 Spyre 运行时和固件,从而成为原生 PyTorch 设备。

新的边界将 FX 图保留在 Inductor 中,并只准备一次编译后的工件。此后,运行时只需要一个类型化操作的有序配方,而不是每次调用都需要重建或遍历的另一个模型图。

这里的分配不仅仅由地址描述:基本的可寻址单元是一个区域标识符、该区域内的偏移量以及长度。

📊 Article Meta

AI Screening: 86

Source: PyTorch

Author: Ebba Simpson

Category: 人工智能

Language: 英文

Read Time: 20 min

Word Count: 4877

Tags:

AI 与智能应用 , 模型训练与推理 , LLM 推理优化 , 开源项目 , AI 数据中心与算力

#AI 与智能应用# 模型训练与推理# LLM 推理优化# 开源项目# AI 数据中心与算力

文章评论(0)

暂无评论,快来抢沙发~