IBM研究院新推出的专项课程,教授AI模型如何在现代加速器上运行
《面向AI的数据流架构》是IBM研究院在Coursera平台开设的六课程专项课程体系。
该课程比较了GPU、谷歌TPU、Cerebras WSE、Groq LPU以及IBM Spyre如何执行同一个PyTorch模型。
核心实验课程在Google Colab上运行,使用标准PyTorch,并提供可选的Spyre硬件实践模块。
完成该专项课程的学习者将获得AI系统性能工程专业证书。
如今大多数构建AI模型的工程师都在GPU上工作。他们用PyTorch编写模型,运行它,并测量延迟和利用率。而框架与芯片之间发生的事情往往隐而不见。当某一种架构占据主导地位时,这种状况还可以接受。但现在情况变得更加复杂,因为AI硬件已经在GPU、谷歌TPU、Cerebras晶圆级引擎(WSE)、Groq语言处理单元(LPU)以及IBM的Spyre加速器之间呈现出多样化格局。
Coursera新推出的专项课程《面向AI的数据流架构:从原理到实践》,正是为需要跨越这些架构工作的工程师所设计。该课程由IBM研究院首席研究科学家、哥伦比亚大学计算机科学兼职教授卡乌塔尔·埃尔·马格劳伊(Kaoutar El Maghraoui)授课,六门课程涵盖执行模型、编译、内存系统、调试以及性能建模,并配有实践实验课程。
"有时候模型本身并不是难点,"埃尔·马格劳伊说,"真正的难点在于理解该模型如何映射到特定架构上,以及为什么在一个系统上表现良好的东西,在另一个系统上可能表现完全不同。"
一个PyTorch模型,五种执行模型
该专项课程从单一的PyTorch模型出发。在框架层面,它在每个目标硬件上都是同一个nn.Module。但一旦编译器将其映射到硬件上,执行过程就会大不相同,每套技术栈都支持自己的一套算子、布局和图变换规则。GPU以内核形式在众多并行线程中运行模型,并配有硬件管理的缓存和专用矩阵运算单元。TPU将计算工作映射到脉动阵列上,由XLA编译器指导分块与数据搬移。Cerebras将计算和超过40GB的片上SRAM分布在整片晶圆上。Groq依赖其编译器来调度每个运算的执行时机以及数据移动的时机。Spyre将模型编译为数据流图,其编译器决定数据布局与暂存区的分配,运行时则负责协调数据传输与任务启动。具体细节会因产品代际不同而有所差异。
这些选择会改变哪些优化手段真正起作用。算子融合可以消除中间内存流量,但能节省多少取决于编译器是否已经将中间结果保留在芯片上、张量如何分块,以及融合后的内核是否会增加内存压力。某个张量维度在一种目标硬件上可以干净地映射,但在另一种硬件上则可能需要填充或数据重排。该专项课程将数据流执行视为一类具有共同原理的架构类别。每个概念都先以通用方式介绍,然后再讨论具体系统。由于埃尔·马格劳伊的团队直接参与Spyre的研发工作,因此Spyre成为主要的案例实例,但课程中会对比五种系统。
同一运算的两种实现方式,运行速度也可能大不相同,而原因往往与算术运算本身关系不大。对于矩阵乘法和注意力机制而言,分块方式、数据布局、同步机制,以及片上与片外内存之间的数据搬移,往往决定了可实现的性能上限。
图1:加速器架构全景图。学生在六门课程中都会使用这张表格,并随着学习逐步补充每个单元格背后的推理依据。
"没有哪一种架构能在所有维度上都胜出,"埃尔·马格劳伊说。"GPU优先考虑灵活性和广泛的可编程性。而其他系统则在一定程度上放弃这种灵活性,以换取效率、确定性、规模或对执行过程更精细的控制。"
编译器是课程特别关注的部分。在专用加速器上,编译器承担着分块、融合、调度、放置和内存管理的职责。模型适配过程中,性能的得失很大程度上就取决于编译器的表现。"你可能拥有一个在其支持的运算上极为高效的加速器,"她说,"但只要有一个不受支持的算子、一个映射不佳的张量形状,或者一个内存放置问题,就可能对整个模型产生巨大影响。"
图2:第3课所涉及的PyTorch编译简化示意图。具体执行哪些变换取决于编译模式和后端。使用torch.compile时,默认由Inductor完成降级处理,torch-spyre则对其进行了针对Spyre的扩展。而TPU则通过XLA进行降级处理。数据流后端的大部分融合、分块和放置决策都在降级阶段完成。
专项课程涵盖的内容
该专项课程由六门课程组成。每门课程覆盖技术栈的一个层面,并以一个实验课程作为结尾。六门课程逐步构建起完整的加速器架构全景图。完成全部六门课程即可获得AI系统性能工程专业证书。
第1课——加速器架构全景:涵盖领域专用架构、控制流与数据流执行方式、内存层级结构,以及五种系统各自的编程模型。
第2课——数据流执行模型:节点、边、触发规则,以及静态与动态调度。通过Spyre和TPU追踪一个Transformer注意力模块的执行过程。
第3课——数据流编译:TorchDynamo、AOTAutograd以及后端代码生成。XLA与Spyre编译器中的融合、分块与调度机制。
第4课——内存系统:缓存、暂存区以及纯SRAM设计。各种内存层级结构如何改变大语言模型推理过程中的KV缓存管理方式。
第5课——跨数据流技术栈的调试:一套涵盖图捕获错误、调度死锁、DMA超时以及数值问题的八层故障分类体系。
第6课——性能建模与优化:针对软件管理内存改进的屋顶线分析方法,将调度作为与计算和内存并列的第三类性能瓶颈加以衡量。
跨技术栈的调试与性能分析
在数据流加速器上,错误结果或性能下降的表现位置,往往与导致它的原因相距甚远。模型输出中出现的NaN可能源自算子分解、融合过程、张量布局不匹配,或是DMA错误。第5课将这些故障归纳为八层分类体系,从前端的图捕获错误,到后端的调度冲突、死锁、DMA超时以及数值问题。
针对正确性问题,学生需要将故障缩小为一个最小复现样例,将每一层的输出与CPU或GPU参照结果进行比较,找出结果首次出现偏差的位置。针对性能问题,第6课教授如何界定计时区域、将内核时间与传输时间区分开来、将结果与编译器理论最优值进行比较,并将差异归因于各内存层级所搬移的数据量。随后,每个运算都会被绘制在屋顶线图表上。
在开源torch-spyre项目报告的一个错误案例中,克隆一个包含65个元素的fp16张量时,返回的最后一个值出现了错误。传输日志本身是正确的,但编译后的拷贝操作只覆盖了前64个元素,通过逐层比较输出与参照结果,最终在这一步定位到了错误所在。
图3:第5课和第6课所教授的调试与性能分析方法,源自开源的torch-spyre调试与性能分析指南。两者都沿着同一条编译器技术栈展开。正确性排查寻找输出首次与参照结果出现偏差的那一层;性能排查则将测得的时间归因于导致它的具体层级和内存级别。
图4:第6课所教授的屋顶线分析方法。屋顶线图展示的是某个运算距离其理论上限有多远,但并不说明原因。在数据流目标硬件上,原因往往出在调度环节:数据搬运、图遍历或流水线停滞。性能分析工具会将时间归因于内核、数据传输和通信过程,而工具对内核内部时间的归因精细程度则因工具而异。
在Google Colab与Spyre上进行的实验课程
每门课程都以一个核心实验课程作为结尾,该实验在Google Colab上使用标准PyTorch运行。每个实验还配有一个可选的Spyre实践模块,可在Spyre硬件上运行。这些实验课程由IBM研究院高级技术人员、该专项课程的实验讲师拉希德·巴蒂博士(Rashed Bhatti)开发。每个实验耗时90分钟到两小时,学生需要自行编写并运行代码。在第一个实验中,学生将使用torch.utils.benchmark从零构建一个基准测试工具,并从SIMT并行性和HBM带宽的角度解释CPU与GPU之间的性能差距。后续实验则包括使用torch.fx追踪一个Transformer模块、比较eager模式与torch.compile的表现、在大语言模型推理过程中读取PyTorch Profiler的内存时间线、诊断三个预设的错误,以及为某个大语言模型工作负载构建屋顶线图表。
核心实验课程不需要任何专有工具。在可选的Spyre实践模块(称为"数据流深度探索")中,参与合作项目的学生可以在Spyre硬件上运行相同的实验。在这一模块中,学生将直接接触每门课程中涉及的数据流概念:阅读Spyre编译器生成的数据流图,并梳理其中插入的融合操作和数据移动边;追踪张量如何被分块为"条带"并放置到暂存内存中;使用硬件计数器测量HBM与暂存区之间的数据流量;并基于这些计数器为一个软件管理的内存层级结构构建屋顶线图。完成该深度探索模块并非完成专项课程或获得证书的必要条件。
适合人群
该专项课程面向中高级水平的学习者设计,包括计算机科学或电气工程专业的研究生、编译器工程师、硬件架构师,以及需要在不同硬件目标上优化工作负载的机器学习从业者。参与者应熟练掌握中等水平的Python和C/C++编程,熟悉CNN和Transformer架构,并具备基础的计算机体系结构知识。
完成该课程的学习者将获得AI系统性能工程专业证书。
"希望课程结束后,当你们看到一款新的AI加速器时,能够知道该问哪些问题,"埃尔·马格劳伊说。"它的执行模型是什么?内存在哪里?谁来调度这些运算?编译器又控制着哪些环节?"
该专项课程现已在Coursera平台开放注册。
Q&A
Q1:《面向AI的数据流架构》专项课程包含哪些内容?
A:该课程由六门课程组成,涵盖加速器架构全景、数据流执行模型、数据流编译、内存系统、跨技术栈调试,以及性能建模与优化,每门课程均配有实践实验,完成全部课程可获得AI系统性能工程专业证书。
Q2:这门课程适合哪些人学习?
A:课程面向中高级学习者,包括计算机科学或电气工程研究生、编译器工程师、硬件架构师以及机器学习从业者,要求具备中等水平的Python和C/C++能力,并熟悉CNN和Transformer架构。
Q3:课程的实验部分需要用到什么硬件?
A:核心实验课程在Google Colab上使用标准PyTorch运行,无需任何专有工具,同时还提供可选的Spyre硬件实践模块,供参与合作项目的学生进一步深入学习数据流概念。
