raatools/

Оцінювач ML-інференції

Оцініть затримку інференції та FPS для ML-моделей на edge-пристроях.

Затримка

150 ms

Макс. FPS

6.7 FPS

Practical Note: Реальні FPS можуть бути нижчими через накладні витрати попередньої обробки та завантаження моделі.

Порівняння затримки (всі пристрої)

Pi 4 (4GB)
150ms
Pi 5 (8GB)
50ms
Pi 5 + Coral TPU
5ms

Деталі моделі

MobileNet V2: Lightweight image classification. Good for real-time inference on edge devices.

Що таке калькулятор ML-інференсу?

Цей оцінювач ML-інференсу показує типову швидкість інференсу популярних невеликих моделей машинного навчання на edge-обладнанні: Raspberry Pi 4, Raspberry Pi 5 та Raspberry Pi 5 з прискорювачем Coral Edge TPU. Інференс — це використання навченої моделі для прогнозування на нових даних. Значення взято з фіксованої таблиці приблизних результатів бенчмарків, тож сприймайте їх як орієнтир для вибору обладнання, а не як вимірювання вашої власної системи.

Швидкість інференсу залежить від розміру моделі, числової точності (FP32, FP16, INT8) та обладнання: процесора, GPU або спеціального прискорювача, як-от Coral Edge TPU, що виконує лише 8-бітні квантовані моделі TensorFlow Lite. Великі мовні моделі та моделі розпізнавання мовлення обмежені передусім пам'яттю та її пропускною здатністю, тому на невеликих одноплатних комп'ютерах вони працюють повільно — або не працюють зовсім.

Як користуватися цим інструментом

Виберіть модель (класифікація зображень, виявлення об'єктів, невелика мовна модель або розпізнавання мовлення) та пристрій. Інструмент показує приблизну затримку на один інференс і відповідну пропускну здатність: кадри за секунду для моделей зору, токени за секунду для мовної моделі та швидкість відносно реального часу для Whisper (понад 1× означає, що аудіо транскрибується швидше, ніж відтворюється). Стовпчикова діаграма порівнює всі пристрої для вибраної моделі.

Ключові поняття

  • Параметри — навчені ваги в моделі. Більше параметрів зазвичай означає кращу якість, але вищі вимоги до ресурсів.
  • Точність — FP32 використовує 4 байти на параметр, FP16/BF16 — 2 байти, INT8 — 1 байт. Нижча точність зменшує пам'ять і збільшує швидкість з мінімальною втратою якості.
  • Розмір пакету — одночасна обробка кількох вхідних даних покращує пропускну здатність, але вимагає більше пам'яті.
  • KV-кеш — для трансформерних моделей кеш ключ-значення зростає з довжиною послідовності та займає значну додаткову пам'ять.

Поширене апаратне забезпечення для інференсу

Споживчі GPU: RTX 3090 (24 ГБ), RTX 4090 (24 ГБ) — підходять для моделей до 13 млрд параметрів в INT8. Професійні: A100 (40/80 ГБ), H100 (80 ГБ) — необхідні для більших моделей. Хмарні варіанти: AWS, GCP та Azure пропонують GPU-інстанси погодинно. Для CPU-інференсу: можливий для менших моделей, але в 10–100 разів повільніший за GPU. Чіпи Apple M-серії пропонують єдину пам'ять, що дозволяє запускати напрочуд великі моделі.

Приклад розрахунку

Мовна модель із 7 мільярдами параметрів у 16-бітній точності потребує 7 000 000 000 × 2 байти = 14 ГБ лише для зберігання ваг. Квантування до 4 біт зменшує це до близько 3,5 ГБ, дозволяючи вміститися на споживчому GPU. Якщо GPU дає 300 ГБ/с пропускної здатності пам'яті, читання 3,5 ГБ на токен обмежує швидкість до близько 85 токенів на секунду.

Поширені помилки

Поширена помилка — оцінювати швидкість інференсу лише за обчисленнями (FLOPS); для великих моделей генерацію токенів зазвичай обмежує пропускна здатність пам'яті, а не сама математика. Інша — ігнорувати різницю між затримкою (час до першого токена) і пропускною здатністю (токенів на секунду в пакеті). Забути, що об'єднання багатьох запитів підвищує пропускну здатність ціною затримки на запит, теж поширено.

Часті запитання

Скільки пам'яті GPU потрібно для моделі на 7 млрд параметрів?

При точності FP16: 7 млрд × 2 байти = 14 ГБ лише для ваг, плюс 2–4 ГБ для KV-кешу та накладних витрат, всього близько 16–18 ГБ. При INT8: 7 млрд × 1 байт = 7 ГБ для ваг, близько 10–12 ГБ загалом. При INT4 (квантизація GPTQ/AWQ): близько 4–5 ГБ для ваг, 6–8 ГБ загалом. Споживчий GPU з 24 ГБ (RTX 3090/4090) може зручно запускати 7-мільярдні моделі в більшості точностей.

Що таке квантизація і наскільки вона допомагає?

Квантизація зменшує точність ваг моделі з FP32 (4 байти) до FP16 (2 байти), INT8 (1 байт) або INT4 (0,5 байта). Це пропорційно зменшує вимоги до пам'яті і часто прискорює інференс. Квантизація INT8 зазвичай зберігає 99%+ якості моделі при вдвічі меншій пам'яті порівняно з FP16. INT4 економить ще більше пам'яті з дещо більшою деградацією якості. Це найпрактичніший спосіб запускати великі моделі на споживчому обладнанні.

Чому квантування пришвидшує інференс?

Квантування зберігає ваги в меншій кількості бітів — 8 або 4 біти замість 16 — тож на кожен токен треба переміщати менше даних із пам'яті. Оскільки інференс великих моделей зазвичай обмежений пропускною здатністю пам'яті, зменшення байтів на вагу вдвічі приблизно подвоює швидкість токенів із малою і часто прийнятною втратою точності.