ONNX Runtime Web (ORT Web) предоставляет возможность выполнять предобученные модели в формате ONNX непосредственно в браузере или Node.js-среде. Архитектура библиотеки оптимизирована для быстрого запуска моделей на различных бэкендах, включая WebAssembly (WASM) и WebGPU. Выбор конкретного бэкенда влияет на производительность и требования к аппаратным ресурсам, поэтому оптимизация размера батча становится ключевым аспектом при работе с ORT Web.
Батч — это количество входных данных, передаваемых в модель за одну операцию инференса. Размер батча напрямую влияет на два критических параметра:
Малый размер батча обеспечивает минимальную латентность, что важно для интерактивных приложений, где реакция модели должна быть максимально быстрой. Больший батч увеличивает эффективность использования ресурсов, повышая пропускную способность, но может заметно увеличивать задержку.
В веб-среде производительность зависит от возможностей устройства пользователя. Важные факторы:
Для WebAssembly рекомендуется стартовать с небольших батчей (например, 1–4 элемента) и постепенно увеличивать их, наблюдая за балансом между латентностью и пропускной способностью. Для WebGPU можно использовать более крупные батчи, так как GPU оптимизирован для параллельной обработки большого числа элементов.
ONNX Runtime Web предоставляет API для работы с сессиями моделей. Ключевые методы:
session.run(): выполнение инференса на
заданном наборе входов. Размер батча определяется размерностью тензоров,
передаваемых в этот метод.tensor: создание входных и выходных
тензоров с правильными размерами. Для батчей необходимо учитывать первую
размерность как количество примеров в батче.Мини-батчи для интерактивных задач Применяются для приложений с низкой задержкой, например, чат-ботов или интерактивного распознавания изображений. Обычно размер батча не превышает 4–8 элементов. Латентность минимальна, пропускная способность умеренная.
Средние батчи для смешанных задач Оптимально для приложений с периодическим обновлением данных, где допустим небольшой прирост задержки. Размер батча — 8–32 элемента. Баланс латентности и пропускной способности достигается через динамическое изменение размера батча в зависимости от загрузки.
Большие батчи для пакетной обработки Используются в системах анализа данных или при пакетной генерации результатов, где критична максимальная пропускная способность. Размер батча может превышать 64 элемента, особенно на GPU. Латентность увеличивается, но общий throughput возрастает многократно.
Для правильного выбора размера батча важно отслеживать следующие показатели:
Для веб-приложений с переменной нагрузкой целесообразно применять динамическую адаптацию размера батча:
Динамическая адаптация позволяет одновременно поддерживать высокую пропускную способность и низкую задержку, используя возможности ORT Web на современных устройствах максимально эффективно.