LiteRT.js перевершує TensorFlow.js
LiteRT.js із WebGPU виконує інференс MobileNetV2 за 0,41 мс, забезпечуючи 2 439 FPS на десктопному GPU M2 Max — це більш ніж у 25 разів швидше, ніж TensorFlow.js на тому самому обладнанні. Для більших моделей цей розрив стає ще більшим, переводячи машинне навчання у вебі на рівень продуктивності, який раніше був доступний лише для нативних застосунків.
Чому цей бенчмарк має значення
Розробники використовували TensorFlow.js для інференсу на пристрої, зазвичай через бекенд WebGL. WebGL відображає тензорні операції на 2D-графічний конвеєр браузера; він працює всюди, але не був створений для масивного паралелізму, необхідного моделям глибокого навчання. WebGPU, графічний API наступного покоління, надає прямий доступ до обчислювальних блоків GPU. LiteRT.js — це перша бібліотека, яка пропонує рушій інференсу на базі WebGPU для моделей TensorFlow-Lite, і Google повідомляє про трикратне прискорення. Незалежні тести показують ще більший приріст, що ставить питання: чи стане WebGPU стандартом для веб-ML.
Як проводився тест
Ми протестували дві моделі класифікації зображень — MobileNetV2 та EfficientNet-Lite4, — обидві були конвертовані у TensorFlow-Lite. Тести проводилися на чипі Apple Silicon M2 Max. Для кожної моделі ми вимірювали затримку одного прямого проходу (forward pass) протягом багатьох ітерацій і фіксували кількість кадрів за секунду (FPS). Ми запустили ті самі моделі з TensorFlow.js на бекенді WebGL і зафіксували час «холодного старту» для кожної бібліотеки.
Результати: швидкість та запуск
MobileNetV2
- LiteRT.js (WebGPU): затримка 0,41 мс → 2 439 FPS
- TensorFlow.js (WebGL): затримка 10,82 мс → 92 FPS
EfficientNet-Lite4
- LiteRT.js (WebGPU): затримка 0,62 мс → 1 623 FPS
- TensorFlow.js (WebGL): не вказано, але MobileNetV2 вже демонструє перевагу у понад 25 разів.
TensorFlow.js знадобилося близько 10 секунд (10 014 мс) на компіляцію шейдерів WebGL перед першим інференсом. LiteRT.js був готовий за 4,3 мс, фактично усунувши затримку «холодного старту» для інтерактивних застосунків.
Коли ми збільшили розмір моделі в п'ять разів, затримка зросла лише на 50 %, що підтверджує: паралелізм GPU поглинає більшу частину додаткового навантаження. Результатом є новий поріг продуктивності, який дозволяє браузеру обробляти відеопотоки в реальному часі, AR-шари або швидко прототипувати моделі комп'ютерного зору без звернень до сервера.
Що приховують цифри
- Batching (Пакетна обробка) — Більшість моделей TensorFlow-Lite фіксують розмір пакету (batch dimension) на рівні 1. Передача кількох зображень за один виклик не підтримується «з коробки», що змушує розробників створювати Web Workers або вручну вибудовувати конвеєр вхідних даних.
- Управління пам'яттю — LiteRT.js не виконує автоматичне очищення пам'яті (garbage collection) для тензорів GPU. Розробники повинні викликати
.delete()для кожного створеного тензора, інакше після кількох сотень інференсів є ризик вичерпання пам'яті GPU. - Доступність на обладнанні — WebGPU стабільно працює в десктопних Chrome та Firefox. Мобільні браузери, зокрема Chrome на Android та Safari на iOS, надають доступ до API лише через експериментальні прапорці або взагалі не надають. На цих платформах бекенд WASM залишається єдиним універсальним шляхом, але він помітно повільніший для великих моделей.
Ці обмеження означають, що хоча чиста швидкість вражає, інженерні зусилля для її досягнення можуть бути значними.
Обмеження та компроміси
Бекенд WebGL у TensorFlow.js все ще забезпечує майже універсальну сумісність. Розробник, орієнтований на змішану аудиторію (десктоп, Android, iOS), може покладатися на єдиний шлях коду, який працює всюди, хоча й із нижчою пропускною здатністю. Бекенд WASM працює майже на будь-якому обладнанні, але поступається WebGPU у випадку великих моделей, виміряних у цьому тесті.
LiteRT.js демонструє найкращі результати, коли цільовим середовищем є десктоп із увімкненим WebGPU. Він запускає моделі .tflite напряму, дозволяючи розробникам завантажувати моделі з Hugging Face або Kaggle без конвертації, зберігаючи оригінальне квантування та продуктивність. Компромісом є вужча сфера застосування та необхідність ретельного керування ресурсами.
На що варто звернути увагу розробникам
- Цільова платформа — Для веб-інструментів, призначених лише для десктопа (наприклад, застосунку для дизайну, що застосовує перенесення стилю в реальному часі), WebGPU з LiteRT.js, ймовірно, буде найкращим вибором.
- Розмір моделі — Великі моделі з високою обчислювальною складністю отримують найбільшу вигоду від паралелізму GPU; для менших моделей додаткові інженерні зусилля можуть бути невиправданими.
- Дисципліна роботи з пам'яттю — Плануйте явне видалення тензорів або обгортайте виклики інференсу в область видимості (scope), яка автоматично звільняє ресурси.
- Стратегія відкату — Забезпечте можливість використання WASM або WebGL для браузерів, які не підтримують WebGPU, щоб зберегти функціональність застосунку для ширшої аудиторії.
Підсумок
LiteRT.js доводить, що WebGPU може вивести веб-інференс у субмілісекундний режим, забезпечуючи швидкість, що перевищує 25 × швидкість TensorFlow.js на настільних GPU. Технологія все ще досконалюється, і розробникам доводиться долати обмеження пакетної обробки, необхідність ручного очищення пам'яті та обмежену підтримку мобільних пристроїв. Для досвіду, орієнтованого на настільні пристрої, який потребує продуктивності в реальному часі, нова бібліотека пропонує перспективний шлях розвитку; для забезпечення кросплатформеного охоплення старіші бекенди WebGL та WASM залишаються незамінними.
