管理实验性算子

已弃用的实验性算子

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

旧算子

新算子

ATen

NA

Affine

Add(Mul(X, alpha), beta)

ConstantFill

ConstantOfShape

Crop

Slice-1

DynamicSlice

Slice-10

GRUUnit

NA

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 的用户可能无法长期依赖该算子。main 分支中 ONNX 命名空间 (ai.onnx) 下的算子,无论是否为实验性,都会经过常规评审流程。

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

  1. 使用 fork 或分支 – 在 fork 或分支中如何操作完全由您决定。准备就绪后,您可以使用常规流程提交 PR。这是推荐的方式。

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

  • 提交一个 Issue,其中包含解释动机和计划的提案。无需包含详细的技术设计。Issue 将被标记为“experimental op”。

  • 评审人员通常会默认批准,除非提案与现有算子直接冲突或某种程度上违反了 ONNX 的总体策略。批准通过添加“experiment approved”标记来表示。

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

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

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

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