AI图鉴

AI图鉴首页 › AI 资讯 › 将火炬TPU纳入火炬泰坦并优化 TPU 的模型

将火炬TPU纳入火炬泰坦并优化 TPU 的模型

来源:Google Developers · 发布时间:11-03 · 由 AI图鉴每小时自动聚合

火炬TPU将本地火炬.device ("tpu") 后端直接集成到PyTorch中,允许开发人员在Google Cloud TPU上进行大规模模型培训而无需rew

OCT. 20, 2026 (英语).

在过去几年中,Meta的火炬号成为了PyTorch生态系统为大规模基因化AI模型培训提供的首要清洁室参考平台。 TorchTitan完全建在PyTorch-内在缩放原始物上,为训练前旗舰密集和混合专家(MoE)建筑提供了未支配的高模块化展示,如Llama 3,Qwen 3和FLUX.

历史上,想在Google Cloud TPU上训练PyTorch模型的开发者面临着一些挑战:要么进行完整的代码库重写成JAX,要么与遗留的火炬 xla进行拼搏。 这一模式已正式改变。 有了火炬TPU的发布,Cloud TPU现在的功能是直接融入PyTorch核心接口的本土后端(torch.device ("tpu")). 允许培训脚本使用 TPU 现在只需要对设备初始化代码进行最小的修改。 然而,提供设备兼容性只是战斗的一半,开发人员也需要高性能的制作级,分布式的培训配方。 TPU上的火炬号就在这里出现。 TorchTitan TPU是Meta的TorchTitan执行的叉子,经过改造,可以进行Google云TPU的模型训练。 该叉子可在https://github.com/google-pytorch/torchtitan/上查阅。

Google和Meta共同开发的TPU本土执行通过直接在火炬组织内部,而不是要求工程团队发明定制的TPU硬化策略或手动低级XLA通信从头通过。 火炬号作为Google云TPU上缩放PyTorch的定型飞行器。

火炬(TorchTitan)为训练前大型密集型号(如Llama 3 70B/405B和Qwen 3 8B/32B),专家混合型(如Qwen 3 235B MoE)以及扩散变压器(如FLUX.1 12B)提供经过战斗测试的官方食谱。

除了初始的预训外,火炬公司还充当培训后管道内的可伸缩教练,如VERL用于集团相对政策优化(GRPO)和强化学习(RL)对齐。 在这些工作流程中,火炬处理参数更新步骤,同时与VLLM-TorchTPU等高通量服务引擎同步权重。

平行主义也与模型代码分开:诸如完全硬化的数据平行主义和拉伸平行主义等技术被分层到平行主义-不可知模型执行上。 例外是专家平行主义:MOE层通过一个可插件的符号调度器进行明确的通信,每个后端都可以以自己的方式执行。

火炬泰坦从配置树上构建一个模型,在构建模型之前,该树可以重写。 这提供了一个干净的方法,可以将模型的单个块替换为在TPU上运行较好的版本,而不触及模型定义或共享的教练器循环。

我们积极地使用这个。 TPU配方用Splash Notice取代标准注意,这是一个Pallas内核,它处理因果,滑动窗口和包装文件口罩,而没有实现注意矩阵;将最终投影和跨内向损失替换为一个没有将完整对数的Pallas内核,从未将完整对数转录给HBM;并将MOE专家matmuls替换为分组的Pallas内核。 每个内核是一个JAX函数,由火炬TPU的火炬.tpu.pallas.jax op装饰器转换成PyTorch自定义op,这都是新内核需要的胶水。 每个替换都是一个配置旗,因此一个配方可以打开,一个测试可以将其与其替换的平原PyTorch路径进行比较。 内核可以来自tokamax,用于TPU和GPU的OpenXLA内核库。

FSDP2围绕GPU执行模式构建。 它的全加太和减少散射由模块钩作为明确的集体调用而发布,与计算重叠来自在专用的CUDA流上运行它们与事件同步。 编译者看不到这些:集体坐落在追踪区域之外,因此在TPU上是一把火炬。 完全无法捕捉到每个FSDP钩的编译区域断层和整步图。 火炬TPU只提供非Op流和事件对象,以便FSDP2运行;XLA对其没有用,因为它从数据依赖性来调度工作。

SimpleFSDP取而代之的是编译器的视图。 参数sharding是一种DTensor参数化:读取一个模块的重量进行从sharded到复制的再分配,这是全加法,它的自动分解后是减分法。 没有钩子,也没有明确的集体呼号,所以两个集体在后继图中都是普通的节点,无论该图是每块火炬。 编译区域或图形导师的单个 make fx 步骤。 XLA编译器在需要的matmuls前排出全加太,并将减少的散射器与落后的计算器重叠,在一个程序中。 混合精度是同一机制的一部分,这一政策将集合d型(bf16参数)和减少d型(fp32或bf16梯度)设定在该再分配上。 混合硬化为多晶片是二维网格上的相同代码:在ICI上空的切片内硬化,在DCN上空的切片上跨replicate.

FLUX上,这让火炬与JAX MaxDifuncation达到99%的性能均价:SimleFSDP块的每层HLO是一个单一的模块,其重量全加太,matmuls,注意力和规范融合在一起,这是XLA程序为优化而构建的形状。

许多PyTorch训练员或者用CUDA图表急切模式运行,以减少发布俯冲,或者应用火炬。 编译到孤立区域,一般一次一个变压器块。 火炬TPU尚未支持PyTorch火炬。 流式抽象,这限制了将急切基于FSDP2与层式火炬混合的性能。 编译。 SimpleFSDP帮助通过表达参数的硬化方式与编译兼容,无论是使用图层火炬。 编译或全图抓取。

火炬泰坦的图形导师提供了完整的训练步捕捉(向前,丢失和后向),用PyTorch的make fx跟踪器提前生成一个FX图,跳过AOTAutograd分区,因此整个计算可以被XLA所见。 GraphTrainer还运行优化通道:执行基于图表的激活内存政策,决定保存,重算或卸载什么。 列车步骤随后作为单XLA程序执行。

这是XLA的型号,它使得PyTorch关于TPU的训练在概念上与JAX相同,因为JAX的整列列车台阶是一个jitted功能。 将整个步骤作为一图而拥有也是使得大模型编译技术成为可能的方法:扫描层上,将the decoder层作为一个单一的循环体运行,这样编译时间和内存会随着深度而停止增长;图形分解器,削减步骤分解器,将削减分解为单独编译的前后程序,其激活器被卸载到中间的主机内存。 在Qwen3 235B上,这条路达到了29°MFU.

优化者也可以加入图表:虽然foldd adam优化器性能非常强,但功能性的AdamW更新可以追溯到列车-step(函数 adamw step),并确保迭代在第一个前置操作和重量回写之间没有主机侧工作。 在Qwen3-8B上,这条路径达到了51-52%的MFU.

下面的每个杠杆在火炬Titan TPU优化指南中都有描述,几乎所有的都已经是wired进入食谱。 对于大多数模型来说,在TPU上获得一个好的MFU是对现有食谱而非新代码的配置变化序列。 命令很重要,因为每个步骤都会改变下一个措施。 火炬泰坦语中的许多优化可以作为即时使用的构件,可以通过一个旗子翻转来启用(见下文插图).

1. 确定基线

- 选择该步骤如何执行:急切、编译或图形导师。 Eager模式在TPU上运行PyTorch模式,几乎没有任何变化,这使得它成为将一个模型上架并调试的正确地点。 它不是一个性能配置:每个操作都是自己的程序,TPU闲置在发布之间。 火炬TPU的延迟和喷射的急切模式(-tpu config.eager mode=DEFER AND FUSE)通过让XLA的引信跨越业务边界来回收一些没有代码变化的急切模式,而食谱则保持其覆盖编译区域以外的任何内容。 启用每个块的火炬。 compile(-compile.enable)是将调试配置变成一个表演器之一的原因:每个变压器块变成一个单一的XLA程序,所以其操作被连接,发布一次而不是一次一次,并与块的集体一起排好时间。 块必须追踪,它排除了里面依赖数据的Python,这就是模型放弃。 Graph Trainer 走得更远(-tpu config.use graph trainer),让整个培训步骤,前进,丢失,落后和优化的更新,被捕获为一个程序。 整个步骤必须追踪,你得到的是一个步骤,没有急切的胶水,加上大 -- 第5步中的模型技术。

- Shard with SimpleFSP and a mix-精密政策。 SimpleFSDP在后继图(-simpleism.use simple fsdp)中表示作为集体的硬化,因此编译器可以将全加法和减小散数排在它们周围的矩阵乘法上。 FSDP2本身被优化为急切的性能,但也使得难以追踪成图。 与 bf16 参数和 fp32 梯度递减对等:计算以 bf16 运行,而主重和减量则停留在 fp32 中,这是设置每个 TPU 食谱用途。

- 对于大型模型(~100B+参数),允许扫描或分割图,以及卸载激活。 一个未滚动的阶梯图随着深度的增大而停止编译,它使每层保存的输入都保持活性,直到后传。 通过层层扫描(-tpu config.use scan layers)将the decoder作为单环体运行,因此编译时间和内存停止随深度增长,并卸载一个堆叠的激活器作为主机内存;这是Qwen3 235B和Llama 3 405B的路径。 图表分解器(-tpu config.use graph split)使图层保持未滚动但向前和向后编译,并且可以选择每个图层组,作为单独的程序,激活器在两者之间卸载。 两者都以图形导师为基础。

2. Tune计算和Kernals

- 打开帕拉斯内核 splash 注意(-splash attention 内核.use splash attention 内核) 从未实现注意矩阵,并处理因果,滑动窗口和打包的文件口罩;在长序列长度时,它最为重要。 引信线性横切损耗(PallasCrossEntropyLoss in the cude)计算LM-头的matmul,软max,一次丢失一个词汇瓦,因此完整的对数的伸缩度从来没有写给HBM. 它的主要价值是内存,下一步变为吞吐量。 对于MOE模型,分组的专家matmul和对称的门/上内核(use pallas paired group mm)用每层一个内核来取代一个绕专家的环。 每个都是食谱中的开关,每个用它取代的平原PyTorch路径测试。

- 内核的瓦片大小闪烁的注意,引信丢失和MOE内核各暴露其块大小(sa block QQ和朋友),默认是起点而非最佳。 在范围VMEM预算(xla tpu scoped vmem limit kib)范围内,将它们用于模型形状和TPU生成,并期望在Trilium上调制的值不会结转到Ironwood. 食谱中包含每个模型和地形的调值。

3. 优化内存和批量大小

- 提高批量。 在小尺度上,每芯片批量是单大杠杆,因为融资是每个发布程序完成的工作。 将它推到模型是HBM绑定的;引信丢失和注意力内核是释放内存的方法。 在大片上,记住,全球批量是每芯片批量乘以芯片计数,所以大小可以达到模型所能使用的程度,而不是芯片所能持有的程度。

4. Tune编译器、通信和概况

- 统领XLA和Libtpu旗每种食谱都带有它的旗套,如SparseCore latency-hiding schedul

本文由 AI图鉴自动抓取并翻译,版权归原作者所有;如需查看原文请点下方链接。

相关 AI 工具

相关免费羊毛

同源资讯

阅读原文(developers.googleblog.com)

标题、摘要与正文均来自该信源的公开页面,版权归原作者所有;本站自动聚合与翻译,仅作出处跳转。

← 返回 AI 资讯列表AI工具图鉴首页

返回 AI图鉴首页 · 提交工具 · 商务合作 · 关于本站 · 608 款 AI 工具分类导航 · 每日 AI 热门项目与动态