Тестирование производительности на разных устройствах и браузерах

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-приложений.

Тестирование на разных устройствах

Устройства можно разделить на три основные категории:

  1. Десктопы с современными CPU и GPU Производительность достигает максимальных значений при использовании WebGPU. Для моделей средней сложности (например, ResNet50) время инференса на современном ноутбуке может составлять десятки миллисекунд на изображение 224x224.

  2. Ноутбуки с интегрированными графическими процессорами WebAssembly с SIMD-инструкциями обеспечивает стабильную работу, но использование WebGPU может быть ограничено поддержкой драйверов и браузера. Время инференса увеличивается, особенно на крупных моделях.

  3. Мобильные устройства и планшеты Ограниченная вычислительная мощность CPU и отсутствие поддержки WebGPU в большинстве мобильных браузеров делают WASM основной опцией. Для оптимизации рекомендуется использовать модели с низкой латентностью, такие как MobileNet, и минимальные размеры батча.


Влияние браузера на производительность

Разные браузеры имеют свои особенности исполнения JavaScript и поддержку современных API:

  • Chrome и Edge – максимальная поддержка WebGPU, оптимизированное выполнение WebAssembly.
  • Firefox – поддержка WebAssembly на высоком уровне, но WebGPU находится в экспериментальном состоянии.
  • Safari – WebGPU доступен только в последних версиях на macOS и iOS, поддержка SIMD в WASM ограничена.
  • Мобильные браузеры – часто имеют ограниченную поддержку современных API и меньше вычислительных ресурсов, что важно учитывать при планировании инференса.

Для точного тестирования рекомендуется запускать инференс на одном и том же устройстве в нескольких браузерах и фиксировать среднее время выполнения для одинакового набора данных.


Подходы к измерению производительности

  1. Синтетические тесты – использование искусственных данных для оценки пиковых возможностей модели. Позволяют выявить узкие места движка выполнения без влияния на входные данные.
  2. Реальные сценарии – тестирование на данных, близких к производственным. Позволяет оценить время отклика и использование ресурсов в условиях, близких к конечной эксплуатации.
  3. Повторные прогоны – усреднение времени инференса за несколько запусков для минимизации влияния случайных колебаний, таких как фоновая нагрузка системы или временные задержки браузера.
  4. Профилирование памяти – использование встроенных инструментов браузеров (Chrome DevTools, Firefox Profiler) для выявления утечек и пиков потребления.

Оптимизация на основе тестов

Результаты тестирования позволяют принимать решения об оптимизации:

  • Снижение размера модели – уменьшение числа слоёв, использование квантизации или обрезка ненужных слоёв.
  • Выбор движка выполнения – WASM для совместимости, WebGPU для высокой производительности.
  • Батчинг данных – объединение нескольких запросов для оптимизации работы GPU.
  • Асинхронное выполнение – использование ort.InferenceSession.run() в асинхронном режиме для повышения отзывчивости интерфейса.

Рекомендации по документированию результатов

Все измерения следует фиксировать с указанием:

  • устройства и его характеристик (CPU, GPU, оперативная память),
  • версии браузера и движка выполнения,
  • модели и параметров инференса (размер батча, входные размеры),
  • средних и максимальных значений времени инференса,
  • используемой памяти и пиковых нагрузок.

Такой системный подход позволяет проводить корректное сравнение производительности между разными платформами и моделями, а также выявлять реальные ограничения среды исполнения.