将 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 数据中心与算力
暂无评论,快来抢沙发~