ONNX Runtime Web (ORT Web) представляет собой высокопроизводительную
среду для выполнения моделей машинного обучения непосредственно в
браузере с использованием JavaScript. Эффективное тестирование
производительности требует системного подхода, учитывающего специфику
браузеров, аппаратные возможности устройства и особенности самой
модели.
Среда
выполнения и поддержка аппаратного ускорения
ORT Web может использовать два основных движка выполнения:
- WebAssembly (WASM) – кросс-браузерное решение,
обеспечивающее высокую совместимость. Поддерживает SIMD-инструкции, что
ускоряет выполнение на процессорах с соответствующей поддержкой.
- WebGPU – современный API для работы с графическими
процессорами. Обеспечивает значительно более высокую скорость для
моделей с большим количеством параллельных операций, особенно для
свёрточных сетей и трансформеров.
Выбор движка напрямую влияет на показатели производительности.
WebAssembly лучше подходит для старых устройств и браузеров без
поддержки WebGPU. WebGPU обеспечивает максимальную производительность на
современных устройствах, но требует проверки поддержки API перед
запуском.
Метрики производительности
Для оценки производительности ORT Web применяются следующие
метрики:
- Время инференса (inference time) – время,
необходимое для обработки одного батча входных данных. Измеряется в
миллисекундах и является основной метрикой.
- Время загрузки модели (model load time) – критично
для web-приложений, где пользовательский опыт зависит от скорости
инициализации модели.
- Использование памяти – важный показатель на
мобильных устройствах с ограниченными ресурсами. Позволяет выявить
потенциальные утечки или перегрузку.
- Фреймрейт (FPS) – особенно для задач реального
времени, таких как обработка видео или изображений. Соотношение между
временем инференса и частотой кадров позволяет оценить пригодность
модели для live-приложений.
Тестирование на разных
устройствах
Устройства можно разделить на три основные категории:
Десктопы с современными CPU и GPU
Производительность достигает максимальных значений при использовании
WebGPU. Для моделей средней сложности (например, ResNet50) время
инференса на современном ноутбуке может составлять десятки миллисекунд
на изображение 224x224.
Ноутбуки с интегрированными графическими
процессорами WebAssembly с SIMD-инструкциями обеспечивает
стабильную работу, но использование WebGPU может быть ограничено
поддержкой драйверов и браузера. Время инференса увеличивается, особенно
на крупных моделях.
Мобильные устройства и планшеты Ограниченная
вычислительная мощность CPU и отсутствие поддержки WebGPU в большинстве
мобильных браузеров делают WASM основной опцией. Для оптимизации
рекомендуется использовать модели с низкой латентностью, такие как
MobileNet, и минимальные размеры батча.
Влияние браузера на
производительность
Разные браузеры имеют свои особенности исполнения JavaScript и
поддержку современных API:
- Chrome и Edge – максимальная поддержка WebGPU,
оптимизированное выполнение WebAssembly.
- Firefox – поддержка WebAssembly на высоком уровне,
но WebGPU находится в экспериментальном состоянии.
- Safari – WebGPU доступен только в последних версиях
на macOS и iOS, поддержка SIMD в WASM ограничена.
- Мобильные браузеры – часто имеют ограниченную
поддержку современных API и меньше вычислительных ресурсов, что важно
учитывать при планировании инференса.
Для точного тестирования рекомендуется запускать инференс на одном и
том же устройстве в нескольких браузерах и фиксировать среднее время
выполнения для одинакового набора данных.
Подходы к измерению
производительности
- Синтетические тесты – использование искусственных
данных для оценки пиковых возможностей модели. Позволяют выявить узкие
места движка выполнения без влияния на входные данные.
- Реальные сценарии – тестирование на данных, близких
к производственным. Позволяет оценить время отклика и использование
ресурсов в условиях, близких к конечной эксплуатации.
- Повторные прогоны – усреднение времени инференса за
несколько запусков для минимизации влияния случайных колебаний, таких
как фоновая нагрузка системы или временные задержки браузера.
- Профилирование памяти – использование встроенных
инструментов браузеров (Chrome DevTools, Firefox Profiler) для выявления
утечек и пиков потребления.
Оптимизация на основе тестов
Результаты тестирования позволяют принимать решения об
оптимизации:
- Снижение размера модели – уменьшение числа слоёв,
использование квантизации или обрезка ненужных слоёв.
- Выбор движка выполнения – WASM для совместимости,
WebGPU для высокой производительности.
- Батчинг данных – объединение нескольких запросов
для оптимизации работы GPU.
- Асинхронное выполнение – использование
ort.InferenceSession.run() в асинхронном режиме для
повышения отзывчивости интерфейса.
Рекомендации по
документированию результатов
Все измерения следует фиксировать с указанием:
- устройства и его характеристик (CPU, GPU, оперативная память),
- версии браузера и движка выполнения,
- модели и параметров инференса (размер батча, входные размеры),
- средних и максимальных значений времени инференса,
- используемой памяти и пиковых нагрузок.
Такой системный подход позволяет проводить корректное сравнение
производительности между разными платформами и моделями, а также
выявлять реальные ограничения среды исполнения.