管理实验操作符

已弃用的实验性操作符

以下实验性操作符已被弃用并从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. 使用一个分支或分支——你在分支或分支中做什么完全取决于你。当你准备好时,你可以使用正常流程提交一个PR。这是推荐的方式。

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

  • 提交一个带有提案的问题,解释动机和计划。它不需要包括详细的技术设计。问题将被标记为“实验性操作”。

  • 审阅者通常会默认批准,除非提案直接与现有操作冲突或以某种方式违背了ONNX的总体策略。批准通过添加“experiment approved”标签来表示。

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

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

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

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