ONNX Runtime Web (ORT Web) представляет собой высокопроизводительную среду для выполнения моделей машинного обучения в браузере. Она позволяет запускать модели, сохранённые в формате ONNX, непосредственно на стороне клиента с использованием JavaScript. Основная цель ORT Web — обеспечить быстрый и эффективный инференс при ограниченных ресурсах браузера, сохраняя при этом совместимость с различными платформами и устройствами.
Ключевые компоненты ORT Web включают:
Модели ONNX загружаются с использованием объекта
InferenceSession. Основные методы:
const session = await ort.InferenceSession.create('model.onnx');
Варианты инициализации позволяют указывать предпочитаемый провайдер вычислений:
wasm — универсальный вариант для всех браузеров.webgl — ускорение на GPU.webgpu — современный API для высокопроизводительных
вычислений (при поддержке браузера).Использование session.run() выполняет инференс на
переданных входных данных. Формат входных данных должен строго
соответствовать определению модели.
Квантование — процесс снижения точности числовых представлений весов и активаций модели. Основные формы:
Квантование уменьшает потребление памяти и повышает скорость вычислений, особенно при работе на браузерных устройствах с ограниченными ресурсами.
Ключевые аспекты ускорения:
Сокращение объёма памяти Квантованные модели требуют меньше памяти, что снижает нагрузку на сборщик мусора и кеш браузера. Это критично для WebAssembly, где память выделяется ограниченным блоком.
Ускорение арифметических операций Операции с INT8 выполняются быстрее, чем с FP32, особенно при использовании SIMD-инструкций в WASM. На WebGL ускорение достигается за счёт меньшего объёма передаваемых данных между CPU и GPU.
Снижение времени загрузки модели Меньший размер файла модели уменьшает время загрузки по сети и время инициализации сессии ORT Web. Для крупных моделей это может означать сокращение задержки на несколько сотен миллисекунд.
Для иллюстрации влияния квантования можно рассмотреть следующие сценарии:
| Модель | Размер (FP32) | Размер (INT8) | Время инференса (FP32) | Время инференса (INT8) |
|---|---|---|---|---|
| ResNet50 | 98 MB | 24 MB | 250 ms | 90 ms |
| BERT Base | 420 MB | 105 MB | 1200 ms | 400 ms |
Из таблицы видно, что квантование уменьшает время инференса примерно в 2,5–3 раза при значительном сокращении размера модели.
wasm оптимален для
старых браузеров, webgl — для GPU-ускорения на десктопах,
webgpu — для современных устройств с поддержкой нового
API.Для максимального эффекта квантования:
Ort.Tensor с заранее выделенной памятью уменьшает
количество аллокаций.session.run().Эти методы в сочетании с INT8-квантованием обеспечивают минимальное время отклика модели и стабильную работу даже на мобильных устройствах.