Сумісність моделей
Інструмент компіляції SiMa.ai імпортує моделі ONNX та готує оператори для прискорення машинного навчання (MLA). Використовуйте цю сторінку, щоб перевірити підтримку операторів, перш ніж готувати модель для Modalix.
Підтримувані оператори
Перегляньте таблицю, щоб перевірити підтримку MLA для операторів та схеми точності. INT8 працює на MLA. BF16 доступний на Modalix (бета-версія). 5D позначає оператори, які приймають тензори 5D (N, D, H, W, C). Opset – версія оператора ONNX. Пошук здійснюється як за текстом обмеження, так і за назвами операторів, і кожен оператор посилається на його документацію на onnx.ai.
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 спец. Направте подальших споживачів відповідно. - 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"та округлення до цілого. Підтримується лише один тензор вхідних даних. - RMSNorm —
stash_type=10(FLOAT16) не підтримується. Залиште її у стандартному значенні. - Slice — Кроки повинні бути позитивними. Негативні значення кроку не підтримуються.
- Softmax — Підтримується лише вздовж каналу.
- Sub — Вхідні дані повинні мати однакову форму: один з вхідних даних має бути скаляром, або обидва можуть бути сумісними для broadcasting.
- Вказуйте — Індекс повинен бути константою, і він може бути скаляром або тензором розміром 1D.
- Транспонування — Операції, які змінюють позицію осі батчу, не підтримуються.
- Різниця — Обчислюється по всіх просторових вимірах.