模型相容性
SiMa.ai 編譯工具鏈可以導入 ONNX 類型的模型,並為機器學習加速器 (MLA) 準備運算子。 請使用此頁面來檢查運算子是否支援,以便您為 Modalix 準備模型。
支援的運算子
搜尋表格以查看運算子和精確度方案的 MLA 支援情況。 INT8 支援 MLA。 BF16 則可在 Modalix 上使用(開發者預覽版)。 5D 標示支援 5D (N, D, H, W, C) tensors 的運算子。 Opset 是 ONNX 的 opset 版本。 搜尋結果會同時搜尋限制文字和運算子名稱,每個運算子都會連結到 onnx.ai 上的參考資料。
62 of 62 operators
Add | ✅ | ✅ | — | 14 |
ArgMax | ✅ | ✅ | — | 13 |
AveragePool | ✅ | ✅ | — | 11 |
BatchNorm | — | — | — | 15 |
BroadcastTo | ✅ | ✅ | ✅ | — |
Clip | ✅ | ✅ | — | 13 |
Concat | ✅ | ✅ | ✅ | 13 |
Conv | ✅ | ✅ | ✅ | 11 |
ConvTranspose | ✅ | ✅ | ✅ | 11 |
CumSum | — | — | — | 14 |
DepthToSpace | ✅ | ✅ | — | 13 |
Div | ✅ | — | — | 14 |
Einsum | ✅ | ✅ | — | 12 |
Elu | ✅ | — | — | 6 |
Erf | ✅ | ✅ | — | 13 |
Exp | ✅ | — | — | 13 |
Gather | ❌ | ✅ | — | 13 |
Gelu | ✅ | — | — | 20 |
GlobalAveragePool | ✅ | ✅ | — | — |
GlobalMaxPool | ✅ | ✅ | — | — |
GridSample | — | ✅ | — | 16 |
HardSigmoid | ✅ | — | — | 6 |
HardSwish | ✅ | — | — | 14 |
InstanceNorm | ✅ | ✅ | ✅ | 6 |
LayerNorm | ✅ | ✅ | — | 17 |
LeakyRelu | ✅ | — | — | 16 |
Log | ✅ | — | — | 13 |
Log10 | ✅ | — | — | — |
Log2 | ✅ | — | — | — |
LpNormalization | ✅ | ✅ | — | 22 |
LRN | ✅ | — | — | 13 |
MatMul | ✅ | ✅ | — | 13 |
MaxPool | ✅ | ✅ | — | 12 |
Mul | ✅ | ✅ | — | 14 |
Pad | ✅ | ✅ | — | 13 |
Pow | ✅ | ✅ | ✅ | 15 |
PRelu | ✅ | ✅ | — | 16 |
QuickGelu | ✅ | ✅ | ✅ | — |
Reciprocal | ✅ | — | — | 13 |
ReduceL2 | ✅ | ✅ | — | 18 |
ReduceMax | ✅ | ✅ | — | 13 |
ReduceMean | ✅ | — | — | 13 |
ReduceMin | ❌ | ❌ | — | 13 |
ReduceSum | ✅ | ✅ | — | 13 |
Relu | ✅ | ✅ | — | 14 |
Reshape | ✅ | ✅ | ✅ | 14 |
Resize | ✅ | ✅ | — | 13 |
RMSNorm | ✅ | ✅ | — | 23 |
Rsqrt | ✅ | — | — | — |
Sigmoid | ✅ | ✅ | — | 13 |
Slice | ✅ | ✅ | — | 13 |
Softmax | ✅ | ✅ | — | 13 |
Softplus | ✅ | — | — | 1 |
SpaceToDepth | ✅ | ✅ | — | 13 |
Split | ✅ | ✅ | — | 13 |
Sqrt | ✅ | — | — | 13 |
Sub | ✅ | ✅ | — | 14 |
Swish | ✅ | ✅ | — | 24 |
Take | ✅ | ✅ | — | — |
Tanh | ✅ | — | — | 13 |
Transpose | ✅ | ✅ | — | 13 |
Variance | ✅ | ✅ | ✅ | — |
限制
以下運算子有以下限制。未在此處列出的運算子沒有額外限制。如果限制指定一個 ONNX 屬性,請在匯出模型時設定該屬性。
- 加法 — 輸入必須具有相同的形狀,其中一個輸入必須為單一值,或兩個輸入可以進行廣播。
- ArgMax — 僅沿通道軸方向縮小,並返回
int32,而不是int64,這與 ONNX 規格不同。 請下游使用者根據此進行調整。 - 平均池 — 設定
count_include_pad=True並且,請留下dilations在 1. 每個空間維度下,Kernel 尺寸必須小於 128;全局池化沒有尺寸限制。 - BatchNorm — 僅支援運算模式,不支援訓練模式。
- Concat — 沿批次軸的連結功能不受支援。
- Conv —
dilations必須介於 1 和 63 之間,strides介於 1 到 31 之間。 - ConvTranspose — 請將
dilations設為 1。這個運算子必須 是深度別的,或使用group=1。步幅必須為 1、2、4、8、16,或在深度別的情況下為 1 或 2。 - CumSum — 僅沿著一個軸向進行求和,且該軸向必須是常數。該軸向的長度最多為 257 個元素。
- Div — 輸入必須具有相同的形狀,其中一個輸入必須為單一值,或兩個輸入可以進行廣播。
- Einsum — 接受兩個輸入的張量。 每個方程式中的索引必須至少在兩個詞語中出現,且在任何單一詞語中最多出現一次。 例如,
jk,k->k不支援,因為j僅出現在一個詞語中,而jk,kk->j不支援,因為k在同一個詞語中出現兩次。 - 收集 —
indices必須是一個常數,且必須是單一數值或一維張量。 - Gelu — 僅支援完全相同的公式。請設定
approximate="none". - GridSample — 將
mode設定為linear,且不得使用padding_mode="reflection"。 僅支援在寬度軸上進行採樣。 - InstanceNorm — 僅支援 4D 和 5D tensor。
- LayerNorm —
stash_type=10(FLOAT16) 暫時無法支援。請維持預設設定。 - LpNormalization — 僅支援 L2 範,
p=2。p=1則不受支援。 - MaxPool — 保持
dilations的值為 1,且不要要求輸出額外的索引。 卷積核的大小必須小於每個空間維度 128;全局池化沒有大小限制。 - Mul — 輸入必須具有相同的形狀,其中一個輸入必須為單一值,或兩個可以廣播。
- 填充 — 僅支援具有填充值為 0 的
constant模式,且最多只能有兩個維度具有非零的填充寬度。 - Pow — 指數必須是常數,且值必須為 0.5、-0.5、2 或 3。
- PRelu — α 傾斜輸入必須為一維張量。
- ReduceL2 — 僅能作為 L2 歸一化的部分使用:必須接著使用
Div,以便將它們合併。單獨使用ReduceL2不支援。 - ReduceMean — 當在單一軸上進行縮小時,該軸必須是空間軸。在所有空間軸上進行縮小沒有大小限制;否則,每個空間軸必須小於 128 個元素。
- ReduceMin — 目前尚未支援。
- ReduceSum — 當在單一軸上進行縮減時,該軸必須是空間軸。 在所有空間軸上進行縮減沒有大小限制;否則,每個空間軸必須小於 128 個元素。
- 重新塑形 — 將
allowzero設定為 0,並提供一個非空的目標形狀。 - 縮放 — 僅支援
nearest和linear兩種模式,coordinate_transformation_mode="tf_crop_and_resize"模式則不支援。 使用linear時,任何縮放係數皆可,但若使用 INT8 格式,係數超過 63 可能會影響準確度。 使用nearest時,縮放係數必須為 2 的次方,或以相同的比例應用於兩維度,並搭配coordinate_transformation_mode="half_pixel"和向下取整。 僅支援單一輸入張量。 - RMSNorm —
stash_type=10(FLOAT16) 尚不受支援。請維持預設值。 - 切片 — 步驟必須為正數。負數步長不受支援。
- Softmax — 僅支援在通道 軸上。
- Sub — 輸入必須具有相同的形狀,其中一個輸入必須為單一值,或兩個可以廣播。
- 取樣 — 索引必須為常數,且必須為一個數值或一維張量。
- 轉置 — 不支援移動批次軸的排列。
- 變異度 — 計算在所有空間維度上。