首页
/ OpenXLA Shardy项目解析:下一代MLIR张量分区系统

OpenXLA Shardy项目解析:下一代MLIR张量分区系统

2025-07-05 07:55:24作者:范垣楠Rhoda

项目概述

OpenXLA Shardy是一个基于MLIR的张量分区系统,专为处理各种计算方言而设计。该项目融合了GSPMD和PartIR两大团队的技术精华,旨在为分布式机器学习训练提供更高效、更可控的张量分区解决方案。

核心优势

Shardy系统相比传统方案具有以下显著优势:

  1. 增强的用户控制能力:结合GSPMD的传播机制和PartIR的增量分区策略,为用户提供更精确的控制和更可预测的结果。

  2. 创新的张量操作支持:特别针对reshape等复杂操作进行了优化,避免了传统方案中常见的额外通信开销问题。

  3. 改进的可用性:采用基于轴(axis-based)的分区表示方法,大幅提升了系统的可调试性和用户体验。

  4. 开放的架构设计:基于MLIR构建的简洁代码库,支持更广泛的开发者协作生态。

技术架构解析

1. 分区表示层

Shardy采用创新的基于逻辑网格的轴分区表示方法,主要特性包括:

  • 支持对维度分区和轴进行约束
  • 为reshape等操作提供轴分割支持
  • 支持增量分区的优先级设置

2. 编译器API组件

系统提供了一系列编译器API来影响分区传播过程:

  • 输入/输出分区:为主函数的输入输出张量指定分区方案
  • 分区约束:为中间张量(如矩阵乘法结果)指定分区要求
  • 相似分区:通过ID分组使多个张量采用相同分区方案
  • 手动计算分区:对子计算进行手动分区配置

3. 分区传播算法

结合用户优先级与编译器成本模型的混合传播策略:

  • 用户定义优先级(如先批量并行再ZeRO)
  • 基于操作类型的优先级(如先元素级操作再矩阵乘法)
  • 精细启发式规则(如优先批量维度)

4. SPMD分区器实现

负责将分区决策转换为实际的SPMD程序:

  • 短期方案:沿用现有GSPMD SPMD分区器
  • 长期规划:开发全新的基于MLIR的SPMD分区器

技术价值与应用场景

Shardy系统特别适合以下场景:

  1. 大规模模型训练:为超大规模语言模型提供高效的分区策略
  2. 复杂计算图优化:处理包含reshape等复杂操作的模型结构
  3. 多设备协同计算:优化跨多个计算设备的张量分布策略

未来发展方向

该项目正处于活跃开发阶段,未来将重点关注:

  1. 更智能的自动分区策略
  2. 更丰富的操作支持
  3. 性能优化与调试工具增强

Shardy代表了分布式机器学习编译技术的最新进展,通过创新的分区策略和开放的架构设计,为AI模型的规模化训练提供了新的技术选择。

登录后查看全文
热门项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
27
11
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
469
3.48 K
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
10
1
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
65
19
flutter_flutterflutter_flutter
暂无简介
Dart
716
172
giteagitea
喝着茶写代码!最易用的自托管一站式代码托管平台,包含Git托管,代码审查,团队协作,软件包和CI/CD。
Go
23
0
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
208
83
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.27 K
695
rainbondrainbond
无需学习 Kubernetes 的容器平台,在 Kubernetes 上构建、部署、组装和管理应用,无需 K8s 专业知识,全流程图形化管理
Go
15
1
apintoapinto
基于golang开发的网关。具有各种插件,可以自行扩展,即插即用。此外,它可以快速帮助企业管理API服务,提高API服务的稳定性和安全性。
Go
22
1