StableHLO 路线图

在撰写本文时,StableHLO 已准备好取代 MHLO/HLO 作为编译器接口。它可以由 TensorFlow、JAX 和 PyTorch 生成,可由 XLA 和 IREE 使用,并且具有 MHLO/HLO 提供的所有公开功能以及其他功能。

本文档介绍了 StableHLO 项目的后续步骤,对问题跟踪器中反映的持续性工作进行分类,并将此工作安排为计划的可交付成果。

重大事件

2023 年,我们计划推出两个重大里程碑:1) StableHLO v0.9 将提供操作集的初始版本和初始兼容性保证;2) StableHLO v1.0,将实现高优先级改进并开始提供全面的兼容性保证。

StableHLO v0.9 将镜像 MHLO/HLO,增强了静态形状操作的规范和初始兼容性保证。根据兼容性 RFC,此版本将提供 1 个月的向前和向后兼容性。这些适度的保证可让您获得方言演变方面的经验,并在全面保证生效之前留出一些时间进行清理。我们计划于 2023 年第 1 季度发布 StableHLO v0.9。

StableHLO v1.0 将实现高优先级的改进,包括清理前端协定(目标是 StableHLO 程序仅包含来自 StableHLO 方言的操作,而不包含来自当前方言和未注册属性的操作)以及提供参考实现。我们计划于 2023 年下半年发布 StableHLO v1.0。

工作流

为了顺利完成开发以实现上述里程碑,我们已将问题跟踪器中的工单划分为多个工作流,并将这些工作流与里程碑关联起来。有限数量的工单(少于 10%)未分配给任何特定工作流,并且不属于任何特定里程碑。

(P0) 兼容性实现工作流专门用于实现兼容性 RFC 以及兼容性测试套件。其中大部分工作预计将在 StableHLO v0.9 中完成,其余工作将在 StableHLO v1.0 中完成。

(P0) 前端合同工作流包括实现 StableHLO 前端使用但尚未纳入 StableHLO 规范的所有功能。此工作流的目标是确保 StableHLO 程序仅包含来自稳定 HLO 方言的操作,而不是目前混合使用方言和未注册属性的操作。我们计划在 StableHLO v1.0 中完成此工作流中的所有工作或几乎所有工作。

(P0) 参考实现工作流组织了为 100% 的 StableHLO 操作实现解释器的工作(如 StableHLO 规范中所定义)。我们计划在 StableHLO v1.0 中完成此工作流中的所有或几乎所有工作。

(P0) 文档工作流旨在提供 StableHLO 提供方或使用方可能需要的所有信息。StableHLO 规范是一个主要交付项,也是 StableHLO API 和 StableHLO 序列化格式的参考。工作流的关键部分将在 StableHLO v1.0 中进行交付,优先级较低的项目将陆续处理。

(P1) Conformance Suite 工作流包括提供一个测试套件,用于比较参考实现与 StableHLO 后端提供的实现。针对参考实现的测试将提供各种一致性套件,因此该工作流没有 P0 优先级。不过,通过其他有趣的测试用例进一步增强此套件可能会成为未来工作的实用领域。

(P1) 规范合规性工作流可确保按照 StableHLO 规范中的定义,通过 StableHLO 方言实现 100% 的 StableHLO 操作。StableHLO 方言已经相当符合要求,因此该工作流没有 P0 优先级,但仍有许多次要问题(尤其是在验证程序实现极端情况下)将陆续处理。

(P1) 新功能工作流是 StableHLO 路线图的结尾,包含一系列适用于 StableHLO 操作集的新功能(不是 StableHLO 方言或 StableHLO 绑定,它们是其他工作流)。我们计划在 StableHLO v1.0 中提供其中一些新功能,但目前大多数功能是优先级较低的项目,不属于任何特定里程碑。

(P1) 公共 API 工作流专用于为 StableHLO 方言提供 C/C++/Python 绑定。现有的 C++/Python 绑定已经相当合理,因此该工作流没有 P0 优先级。不过,仍有大量工作要做,尤其是在为这些绑定提供稳定性方面,这方面的工作目前不在兼容性 RFC 的涵盖范围内,但在未来可能会成为实用领域。