管理实验性算子

已弃用的实验性算子

以下实验性算子已被弃用并从 ONNX 中移除。它们应从模型中移除,或替换为更新的替代算子,或分解为功能等效的算子

旧算子

新算子

ATen

不适用

Affine

Add(Mul(X, alpha), beta)

ConstantFill

ConstantOfShape

Crop

Slice-1

DynamicSlice

Slice-10

GRUUnit

不适用

GivenTensorFill

ConstConstantOfShape

ImageScaler

Add(Mul(X, scale), Unsqueeze(bias, axes=[0, 2, 3]))

ParametricSoftplus

Mul(alpha, Softplus(Mul(beta, X)))

Scale

Mul(X, scale)

ScaledTanh

Mul(Tanh(Mul(X, beta)), alpha)

添加实验性算子 [已弃用 - 从 v1.5 开始不再支持实验性算子]

ONNX 算子定义中的实验性标志表明 ONNX 的用户可能无法长期依赖该算子。在 分支中 ONNX 命名空间 (ai.onnx) 中的算子,无论是实验性的还是非实验性的,都将通过常规审查流程。

正在进行中但尚未达成共识的实验性算子可以通过以下两种方式之一进行管理

  1. 使用 fork 或分支 – 你在 fork 或分支中所做的完全由你决定。当你准备好时,你可以使用常规流程提交 PR。这是推荐的方式。

  2. 如果 fork/分支不可行(例如由于多个仓库之间映射不同分支的复杂性),请将实验性算子放在主分支的自定义命名空间中。具体流程如下:

  • 提交一个 Issue,其中包含解释动机和计划的提案。它不需要包含详细的技术设计。Issue 将被标记为“实验性算子”。

  • 审查者通常会默认批准,除非提案直接与现有算子冲突或以某种方式与 ONNX 总体策略相悖。批准通过添加“实验已批准”标签来表示。

  • 批准有效期为 3 个月,但如果需要可以续期。

  • 实验性算子应在自定义命名空间中以提案名称(即“proposal.controlflow”)提交 PR。名称应具有描述性,而不是公司或实体名称。只要父提案获得批准并处于活动状态,这些 PR 将默认获得批准。

  • 实验完成后,算子可以通过常规流程提交以添加到 ONNX 命名空间。所有者也可以选择在不提升算子的情况下结束实验。

  • 无论哪种方式,自定义命名空间都将在实验完成或批准到期后删除。