ONNX Runtime Web (ORT Web) представляет собой реализацию ONNX Runtime
для исполнения моделей машинного обучения непосредственно в браузере или
средах JavaScript. Основное назначение — обеспечить кроссплатформенное
выполнение предобученных моделей ONNX без необходимости установки
дополнительных компонентов на стороне сервера.
Совместимость с браузерами
ORT Web поддерживает современные браузеры, обеспечивающие следующие
возможности:
- WebAssembly (WASM) — ключевая технология,
позволяющая запускать модели с высокой производительностью. Практически
все современные версии браузеров поддерживают WASM, включая Chrome,
Firefox, Safari, Edge.
- WebGL / WebGPU — используется для ускорения
вычислений на графическом процессоре. WebGL поддерживается большинством
десктопных и мобильных браузеров, WebGPU находится на стадии активного
внедрения и поддерживается экспериментально в последних версиях Chrome и
Edge.
- Web Workers — позволяют выполнять вычисления в
фоновом потоке, предотвращая блокировку основного потока
интерфейса.
Рекомендованные версии браузеров для стабильной работы ORT Web:
| Браузер |
Минимальная версия |
| Chrome |
92 |
| Firefox |
90 |
| Safari |
15 |
| Edge |
92 |
Старые версии браузеров, не поддерживающие WebAssembly или WebGL, не
смогут использовать ORT Web, что приводит к полной невозможности
выполнения моделей.
Поддержка платформ
ORT Web ориентирован на следующие платформы:
- Десктопные системы: Windows, macOS, Linux через
браузеры с поддержкой WASM.
- Мобильные устройства: iOS и Android, при условии,
что браузер поддерживает WebAssembly и WebGL. На мобильных устройствах
возможны ограничения по производительности и объему доступной
памяти.
- Node.js: ORT Web может использоваться в среде
Node.js через пакет
onnxruntime-web, что позволяет
запускать модели без браузера, используя реализацию WebAssembly.
Особенности работы в Node.js:
- Отсутствует ограничение на взаимодействие с DOM, но вычислительные
ресурсы и память ограничены возможностями процесса Node.js.
- Поддерживаются те же механизмы ускорения через WASM SIMD и
threading, если платформа позволяет.
Ограничения среды выполнения
- Объем памяти: WebAssembly имеет ограничение на
доступный объем памяти, которое зависит от браузера и устройства. Обычно
это 2–4 ГБ для 32-битных адресов. Модели, превышающие доступный объем
памяти, не смогут быть загружены.
- Выполнение в главном потоке: Выполнение моделей
напрямую в основном потоке может блокировать интерфейс. Рекомендуется
использование Web Workers для асинхронного выполнения.
- Поддержка SIMD и threading: Для ускорения
вычислений ORT Web использует SIMD-инструкции и многопоточность через
WASM. Не все браузеры полностью поддерживают эти возможности, что может
снижать производительность.
- WebGPU ограничена экспериментально: В браузерах,
где WebGPU доступен только в экспериментальном режиме, возможны
нестабильные результаты или ошибки при выполнении сложных моделей.
- Ограничения форматов ввода/вывода: ORT Web
поддерживает только стандартные типы данных ONNX (float32, int32, bool и
т. д.). Использование сложных пользовательских типов или кастомных
операторов требует дополнительной поддержки через WebAssembly-плагины
или серверное выполнение.
Особенности
использования на мобильных устройствах
- Производительность значительно зависит от аппаратного обеспечения.
На устройствах с низкой вычислительной мощностью рекомендуется уменьшать
размер модели или использовать оптимизированные версии с
квантованием.
- Ограничения памяти особенно критичны для больших нейросетевых
моделей, таких как трансформеры. Необходимо контролировать объем
загружаемых данных и буферов.
- Взаимодействие с сенсорными событиями и DOM может замедлять работу,
если вычисления не выполняются в отдельном потоке.
Итоги по средам выполнения
ORT Web обеспечивает гибкое выполнение моделей на большинстве
современных платформ и браузеров, но требует внимательного подхода к
ограничениям среды:
- Всегда учитывать доступный объем памяти и ограничения
WebAssembly.
- Использовать Web Workers для тяжелых вычислений.
- Проверять поддержку WebGL и WebGPU для ускорения вычислений.
- Оптимизировать модели для мобильных устройств и браузеров с
ограниченными ресурсами.
В совокупности, правильное понимание поддерживаемых платформ и
ограничений среды позволяет максимально эффективно использовать
возможности ONNX Runtime Web в JavaScript.