モデルの互換性
SiMa.ai コンパイルツールチェーンは、ONNX モデルをインポートし、機械学習アクセラレータ (MLA) 用のオペレーターを準備します。 Modalix 用にモデルを準備する前に、オペレーターのサポート状況を確認するために、このページを使用してください。
サポートされているオペレーター
表を検索して、オペレーターと精度スキームごとのMLAコンパイラのサポート状況を確認してください。INT8 はMLAで動作します。BF16 はModalix(開発者向けプレビュー版)で利用可能です。5D は、5D (N, D, H, W, C) テンソルを受け取るオペレーターを示します。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」属性を指定する場合、モデルのエクスポート時に適切に設定してください。
- Add — 入力は同じ形状でなければなりません。1つの入力がスカラーであるか、または両方をブロードキャスト可能である必要があります。
- ArgMax — チャンネル軸のみに適用され、
int32を返す(int64ではなく)、これはONNX仕様のものです。 したがって、下流の消費者には、この点を考慮して対応する必要があります。 - AveragePool —
count_include_pad=Trueを設定し、dilationsを 1 に設定します。カーネルサイズは各空間次元で 128 未満である必要があります。グローバルなプーリングにはサイズ制限はありません。 - BatchNorm — 推論モードでのエクスポートのみをサポート。トレーニングモードはサポートされていません。
- Concat — バッチ軸への連結はサポートされていません。
- Conv — 「
dilations」は1から63の間、「strides」は1から31の間でなければなりません。 - ConvTranspose —
dilationsの値を 1 に維持してください。この演算子は、深層畳み込みまたはgroup=1を使用する必要があります。ストライドは 1、2、4、8、16、または深層畳み込みの場合に 1 または 2 に設定する必要があります。 - CumSum — 前向き方向にのみ合計を計算し、その合計は正確に1つの軸に沿って行われ、その軸は一定である必要があります。軸の長さは最大で257個の要素までです。
- Div — 入力は同じ形状でなければなりません。1つの入力がスカラーであるか、または両方をブロードキャスト可能である必要があります。
- Einsum — ちょうど2つの入力テンソルを受け取ります。数式内のすべてのインデックスは、少なくとも2つの項に現れ、かつ1つの項内では1回しか現れない必要があります。例えば、
jk,k->kはサポートされていません。なぜなら、jが1つの項にしか現れていないからです。また、jk,kk->jはサポートされていません。なぜなら、kが同じ項内で2回現れているからです。 - 収集 —
indicesは定数であり、スカラーまたは1次元のテンソルである必要があります。 - Gelu — 厳密なフォーマルのみをサポートします。
approximate="none"を設定してください。 - GridSample —
modeをlinearに設定し、padding_mode="reflection"を使用しないでください。 サンプリングは、幅軸方向のみをサポートしています。 - InstanceNorm — 4D および 5D テンソルでのみサポートされています。
- LayerNorm —
stash_type=10(FLOAT16) のサポートはされていません。元の設定のままにしておいてください。 - Lp正規 化 — 以下の条件を満たす必要があります
p=2, L2ノルムもサポートされています。p=1そうではありません。 - MaxPool — カーネルサイズを各空間次元で128未満に設定し、オプションのインデックス出力は不要です。
dilationsは 1 に設定してください。グローバルなプーリングにはサイズ制限はありません。 - Mul — 入力は同じ形状でなければなりません。1つの入力がスカラーであるか、または両方をブロードキャスト可能である必要があります。
- パド — たけ
constant0 のパディング値を持つモードがサポートされており、最大 2 つの次元に非ゼロのパディング幅を持つことができます。 - Pow — 指数は、0.5、-0.5、2、または3の定数スカラーである必要があります。
- PRelu — α スロープ入力は 1 次元テンソルでなければなりません。
- ReduceL2 — L2正規化の一部としてのみサポートされます。そのため、必ず
Divの後に使用し、それらをペアとして扱う必要があります。単独のReduceL2はサポートされません。 - ReduceMean — 1つの軸に対して縮小を行う場合、その軸は空間的な軸である必要があります。すべての空間軸に対して縮小を行う場合、サイズには制限はありません。ただし、各空間軸は128要素以下である必要があります。
- ReduceMin — 現在はサポートされていません。
- ReduceSum — 1つの軸に対して削減を行う場合、その軸は空間的な軸である必要があります。すべての空間軸に対して削減を行う場合、サイズには制限はありません。ただし、各空間軸は128要素以下である必要があります。
- 形状を再定義 —
allowzeroを 0 に設定し、空でないターゲット形状を指定します。 - リサイズ —
nearestとlinearのみサポートされており、coordinate_transformation_mode="tf_crop_and_resize"はサポートされていません。linearでは、任意のスケールファクターを使用できますが、INT8 の場合、63 より大きいスケールファクターを使用すると精度が低下する可能性があります。nearestでは、スケールファクターは 2 のべき乗であるか、または両方の次元に均等に適用される偶数で、coordinate_transformation_mode="half_pixel"および床算術を使用する必要があります。 1 つの入力テンソルのみをサポートしています。 - RMSNorm —
stash_type=10(FLOAT16) のサポートはされていません。元の設定のままにしておいてください。 - スライス — ステップは正の値でなければなりません。負のステップはサポートされていません。
- Softmax — チャンネル軸方向のみをサポート。
- Sub — 入力は同じ形状でなければなりません。1つの入力がスカラーであるか、または両方をブロードキャスト可能である必要があります。
- Take — インデックスは一定の値でなければならず、スカラーまたは1次元のテンソルである必要があります。
- 転置 — バッチ軸を移動するような置換はサポートされていません。
- ばらつき — 全ての空間次元に対して計算されます。