Перейти до основного вмісту

Сумісність моделей

Інструмент компіляції SiMa.ai імпортує моделі ONNX та готує оператори для прискорення машинного навчання (MLA). Використовуйте цю сторінку, щоб перевірити підтримку операторів, перш ніж готувати модель для Modalix.

Підтримувані оператори

Перегляньте таблицю, щоб перевірити підтримку MLA для операторів та схеми точності. INT8 працює на MLA. BF16 доступний на Modalix (бета-версія). 5D позначає оператори, які приймають тензори 5D (N, D, H, W, C). Opset – версія оператора ONNX. Пошук здійснюється як за текстом обмеження, так і за назвами операторів, і кожен оператор посилається на його документацію на onnx.ai.

62 of 62 operators
Add14
ArgMax13
AveragePool11
BatchNorm15
BroadcastTo
Clip13
Concat13
Conv11
ConvTranspose11
CumSum14
DepthToSpace13
Div14
Einsum12
Elu6
Erf13
Exp13
Gather13
Gelu20
GlobalAveragePool
GlobalMaxPool
GridSample16
HardSigmoid6
HardSwish14
InstanceNorm6
LayerNorm17
LeakyRelu16
Log13
Log10
Log2
LpNormalization22
LRN13
MatMul13
MaxPool12
Mul14
Pad13
Pow15
PRelu16
QuickGelu
Reciprocal13
ReduceL218
ReduceMax13
ReduceMean13
ReduceMin13
ReduceSum13
Relu14
Reshape14
Resize13
RMSNorm23
Rsqrt
Sigmoid13
Slice13
Softmax13
Softplus1
SpaceToDepth13
Split13
Sqrt13
Sub14
Swish24
Take
Tanh13
Transpose13
Variance

Обмеження

Ці оператори підтримуються з наступними обмеженнями. Оператори, які не перелічені тут, не мають додаткових обмежень. Якщо обмеження стосується атрибуту ONNX, встановіть його відповідним чином під час експорту моделі.

  • Додати — Вхідні дані повинні мати однакову форму: один з них має бути скаляром, або обидва можуть бути сумісними для операції.
  • 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 — Сумування лише в одному напрямку, вздовж однієї осі, і ця вісь повинна бути постійною. Осі може бути не більше 257 елементів.
  • Div — Вхідні дані повинні мати однакову форму: один з них має бути скаляром, або обидва можуть бути сумісними для операції.
  • Einsum — Приймає рівно два вхідних тензори. Кожен індекс у рівнянні має з'являтися принаймні в двох термінах, і не більше одного разу в будь-якому окремому терміні. Наприклад, jk,k->k не підтримується, оскільки j з'являється лише в одному терміні, а jk,kk->j не підтримується, оскільки k з'являється двічі в одному терміні.
  • Збиратиindices має бути константою, і може бути як скаляром, так і одномірним тензором.
  • Гелу — Підтримується лише точна формулювання. approximate="none".
  • GridSample — Встановіть mode у значення linear, і не використовуйте padding_mode="reflection". Зразкування підтримується лише вздовж осі ширини.
  • InstanceNorm — Підтримується лише для тензорів розміром 4D та 5D.
  • LayerNorm — підтримка типу даних FLOAT16 (stash_type=10) відсутня. Залиште її у стандартному налаштуванні.
  • Нормалізація Long Play (LP) — Тільки p=2, також підтримується L2 норма. p=1 це не є.
  • MaxPool — Залиште dilations рівним 1 та не запитуйте додаткові індекси. Розмір ядра має бути меншим за 128 у кожній просторовій розмірності; глобальне згортання не має обмежень за розміром.
  • Mul — Вхідні дані повинні мати однакову форму: один з них має бути скаляром, або обидва можуть бути сумісними для розширення.
  • Підкладка — Тільки constant Підтримка режиму з значенням "padding" рівним 0, а також можливість, щоб не більше двох вимірів мали не нульову ширину "padding".
  • Pow — Експонента повинна бути постійним скаляром, рівним 0,5, -0,5, 2 або 3.
  • PRelu — Вхідний параметр "alpha slope" має бути одномірним тензором.
  • ReduceL2 — Підтримується лише як частина нормалізації L2: вона повинна бути супроводжена Div, щоб їх можна було об'єднати. Самостійне використання ReduceL2 не підтримується.
  • ReduceMean — При зменшенні по одній осі, ця вісь повинна бути просторовою. Зменшення по кожній просторовій осі не має обмежень за розміром; інакше кожна просторова вісь повинна мати не більше 128 елементів.
  • ReduceMin — Наразі не підтримується.
  • ReduceSum — При зменшенні по одній осі, ця вісь повинна бути просторовою. Зменшення по всіх просторових осях не має обмежень за розміром; інакше кожна просторова вісь повинна мати не більше 128 елементів.
  • Змінити форму — Залиште значення allowzero рівним 0, та вкажіть непусту цільову форму.
  • Зміна розміру — Підтримуються лише режими nearest та linear, а режим coordinate_transformation_mode="tf_crop_and_resize" не підтримується. При використанні режиму linear, будь-який коефіцієнт масштабування підходить, хоча при використанні INT8 коефіцієнт вище 63 може призвести до втрати точності. При використанні режиму nearest, коефіцієнт масштабування має бути степенем двійки або парним числом, яке застосовується однаково до обох розмірів, з використанням coordinate_transformation_mode="half_pixel" та округлення до цілого. Підтримується лише один тензор вхідних даних.
  • RMSNormstash_type=10 (FLOAT16) не підтримується. Залиште її у стандартному значенні.
  • Slice — Кроки повинні бути позитивними. Негативні значення кроку не підтримуються.
  • Softmax — Підтримується лише вздовж каналу.
  • Sub — Вхідні дані повинні мати однакову форму: один з вхідних даних має бути скаляром, або обидва можуть бути сумісними для broadcasting.
  • Вказуйте — Індекс повинен бути константою, і він може бути скаляром або тензором розміром 1D.
  • Транспонування — Операції, які змінюють позицію осі батчу, не підтримуються.
  • Різниця — Обчислюється по всіх просторових вимірах.