Конвертація нейромереж для edge: TFLite, Micro, Edge TPU

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1564 послуг
Конвертація нейромереж для edge: TFLite, Micro, Edge TPU
Середній
від 1 дня до 3 днів
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1348
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1247
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    949
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1183
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    642
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    921

Розробник навчив модель сегментації на Keras, а на залізі — зависання. Модель не влізала в 2 МБ Flash STM32, а FP32 вага на TFLite Micro падала з 4 МБ до 1.2 МБ після квантування, але точність впала на 12% — і клієнт втратив замовлення. Ми знаємо, як уникнути таких сценаріїв: маємо десятки конвертацій для MCU, Arm Linux та Google Coral. Під ключ: аналіз моделі, вибір формату, квантування, валідація точності, розгортання. Наш досвід: 50+ edge-проектів, 30+ для Coral. Зв'яжіться з нами для оцінки вашого проекту за один день. Вартість конвертації розраховується індивідуально, але в середньому проект окупається за рахунок зниження витрат на обчислювальні ресурси та прискорення інференсу.

Проблеми, які вирішуємо

Несумісність операцій

TFLite Micro підтримує лише subset від повного TensorFlow: ~250 операцій проти ~2000. Часто зустрічаються tf.nn.depthwise_conv2d, tf.reshape — вони є, але tf.where або tf.sort відсутні. Ми вручну замінюємо непідтримувані шари на еквівалентні — наприклад, замінюємо tf.where на tf.cast з tf.multiply. Проблема особливо гостра для ML на edge, де кожна операція на рахунку.

Розмір моделі та квантування

Edge TPU приймає тільки INT8-моделі і не більше 8 МБ. Наша команда має досвід адаптації YOLOv5 (14 МБ float) до 4.2 МБ INT8 з падінням mAP не більше 2%. Використовуємо quantization-aware training для збереження точності. Порівняно з Float16, INT8 квантування забезпечує швидкість у 3-4 рази вищу на Edge TPU при тих самих витратах енергії. TFLite Micro на 50% компактніший за стандартний TFLite, що критично для MCU.

Падіння продуктивності на MCU

Навіть після конвертації на TFLite Micro модель може гальмувати через неоптимальний порядок операцій. Ми профайлимо кожну операцію та змінюємо граф для зменшення кількості викликів DMA — приріст до 40% на STM32H7. Це особливо важливо для ML на STM32, де ресурси обмежені.

Як ми це робимо

Пайплайн конвертації для кожної платформи.

TFLite (мобільні / Raspberry Pi / x86 edge)

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

Підтримує: INT8, FP16, dynamic range quantization. GPU delegate, NNAPI, Hexagon DSP. Ідеально для ML на Raspberry Pi.

TFLite Micro (MCU, <1 MB)

Subset операцій TFLite, portable C++:

xxd -i model.tflite > model_data.cc  # конвертація в C array

Підтримується на: STM32, Arduino, ESP32, nRF52840. Compatibility checker обов'язковий — ми запускаємо його перед початком робіт.

Edge TPU (Google Coral)

Edge TPU потребує INT8 квантування. Тільки операції з білого листа виконуються апаратно (решта — CPU fallback):

edgetpu_compiler model_quant.tflite  # компілятор Google Coral

Продуктивність: 4 TOPS (Coral USB), 4 TOPS (Coral PCIe M.2). Чудово для image classification та object detection. Як рекомендує документація Google Coral, утримуйте модель <8 МБ для повного прискорення.

Порівняння платформ

Платформа Пристрої Макс. розмір моделі Квантування Інструменти
TFLite Android, iOS, RPi, x86 Без обмежень FP16, INT8, dynamic TFLite Converter, GPU Delegate
TFLite Micro STM32, ESP32, Arduino <1 МБ Flash INT8 обов'язковий XXD, compatibility checker
Edge TPU Coral USB/PCIe/M.2 8 МБ (повне прискорення) INT8 обов'язковий edgetpu_compiler

Типи квантування та їх параметри

Тип Розмір ваг Втрата точності Апаратне прискорення
FP32 4 байти Базова лінія CPU/GPU
FP16 2 байти <1% GPU, деякі TPU
Dynamic range 2-4 байти 1-3% CPU (оптимізація)
INT8 1 байт 1-5% Edge TPU, DSP, MCU

Чому INT8 квантування — стандарт для Edge TPU?

Апаратура Edge TPU оперує цілими числами — float операції емулюються на CPU з падінням швидкості в 10–20 разів. Ми використовуємо калібрування на репрезентативній вибірці, щоб підібрати шкали та зсуви. Для картинних моделей втрати mAP зазвичай не перевищують 1–3%.

Як перевірити сумісність моделі з TFLite Micro?

Запускаємо tflite_micro_compatibility_checker ще до конвертації. Якщо непідтримувана операція — замінюємо її еквівалентом. Наприклад, tf.nn.max_pool замінюємо на tf.nn.avg_pool, якщо задача дозволяє. У крайньому випадку використовуємо custom operator, але це ускладнює розгортання.

Детальна схема перевірки сумісності
  1. Завантаження моделі у форматі .tflite.
  2. Прогін через checker: отримуємо список непідтримуваних операцій.
  3. Для кожної операції підбираємо заміну з доступного набору.
  4. Повторно перевіряємо сумісність.
  5. Якщо заміна неможлива — розглядаємо custom operator або зміну платформи.

Процес роботи

  1. Аналіз моделі: завантаження, профайлінг операцій, оцінка розміру.
  2. Вибір платформи: MCU, SBC чи Edge TPU — підбираємо оптимальний варіант.
  3. Конвертація та квантування: з застосуванням QAT або post-training quantization.
  4. Валідація точності: порівняння виходів float та quantized моделі на тестовій вибірці.
  5. Розгортання: підготовка C-масиву, тестування на цільовому пристрої.

Що входить в роботу

  • Документація: звіт про конвертацію, інструкція з розгортання.
  • Вихідний код скриптів конвертації та валідації.
  • Навчання команди замовника (1–2 сесії).
  • Гарантія точності: відхилення не більше 5% від baseline.
  • Підтримка після деплою — 1 місяць.

Терміни та бюджет

Терміни: від 1 до 3 тижнів залежно від складності моделі та вимог. Вартість розраховується індивідуально — зв'яжіться з нами для оцінки проекту за один робочий день. Отримайте консультацію та комерційну пропозицію з урахуванням ваших завдань. Наш досвід: понад 50 edge-проектів, 30+ для Coral. Економія на етапі розгортання — один із ключових результатів наших проектів.

Edge AI та оптимізація: деплой моделей без хмари

Уявіть: ваша модель розпізнавання облич видає 4 секунди latency на Jetson Orin, батарея сідає за годину, модель вилітає по OOM. Ми — команда інженерів з Edge AI — оптимізували понад 150 моделей для граничних пристроїв. Без профілювання та правильного вибору квантизації або дистиляції проект приречений. Розрив між дослідницьким кодом та edge-деплоєм — окрема інженерна дисципліна, і ми допомагаємо її освоїти за 2–16 тижнів під ключ. Справа не в експорті, а в системній роботі із залізом: GPU utilization, latency p99, memory bandwidth.

Чому просто «експортувати модель» не працює?

PyTorch-модель з float32 та batch_size=32 не готова до edge. Типові проблеми:

  • ResNet-50 в fp32 займає 98 MB, inference на Cortex-A78 — 380 мс. Після INT8-квантизації torch.ao.quantization — 24 MB, 95 мс. Експорт в ONNX + TensorRT на Jetson — 28 мс.
  • YOLOv8m на Raspberry Pi 5 в fp32 — 2.8 fps. TFLite INT8 — 9.4 fps. З XNNPACK делегатом — 14 fps.
  • Transformer-енкодер на мобільному CPU: MobileBERT в fp16 через CoreML на iPhone 15 — 18 мс/інференс. distilbert-base-uncased в ONNX — 42 мс.

Проблема не у виборі «квантизувати чи ні» — правильний шлях визначається пристроєм, завданням та допустимою деградацією метрики. Пропонуємо оцінку вашого проекту: за 24 години скажемо, наскільки реально прискорити модель.

Який метод квантизації вибрати для вашого завдання?

PTQ (Post-Training Quantization) — швидкий шлях. Берете навчену модель, проганяєте calibration dataset (200–1000 прикладів), отримуєте INT8 або INT4 ваги. Інструменти: torch.ao.quantization, ONNX Runtime quantization tool, bitsandbytes. Деградація точності: 0.5–2% на класифікації. Червона зона — детекція дрібних об'єктів та сегментація, де PTQ дає -4–8% mAP.

QAT (Quantization-Aware Training) — навчання з симульованими квантизаційними шумами. Дорожче (перенавчання), але деградація 0.1–0.5%. Виправдано, коли PTQ неприйнятний. В PyTorch — torch.ao.quantization.prepare_qat().

GPTQ / AWQ — для LLM. AWQ краще зберігає якість при 4-bit квантизації. llm-compressor від Neural Magic або autoawq — основні бібліотеки.

Зв'яжіться з нами для безкоштовного профілювання вашої моделі — ми оцінимо latency та запропонуємо план оптимізації.

Метод Час реалізації Деградація точності Інструменти
PTQ 1–2 дні 0.5–2% (до 8% на детекції) torch.ao, ONNX RT, bitsandbytes
QAT 1–3 тижні 0.1–0.5% torch.ao.prepare_qat, TF Quantization
GPTQ/AWQ 3–7 днів 1–3% (LLM) autoawq, llm-compressor

Прунінг та дистиляція: коли квантизації недостатньо

Структурний прунінг видаляє канали або шари. Наприклад, видалення 40% каналів ResNet-50 з наступним fine-tuning дає -35% розміру, -28% latency при втраті top-1 accuracy лише на 1.2%. Інструменти: torch.nn.utils.prune, для transformer — прунінг attention heads (movement pruning, LTP). Глибша техніка — N:M sparsity, коли з кожних M ваг залишаються N ненульових (NVIDIA Ampere підтримує 2:4).

Knowledge distillation — навчаємо маленьку student імітувати велику teacher через KLDivLoss на soft labels. Feature distillation на проміжних шарах (hint-based) дає краще збереження якості. Hugging Face DistilBERT: 66M vs 110M параметрів, -40% latency, -3% на GLUE. Температура дистиляції — ключовий гіперпараметр (типово 4–8).

Комбінований підхід: дистиляція → прунінг → QAT. Дає максимальний ефект на обмеженому залізі. У кількох клієнтів ми фіксували економію на облачних обчисленнях до 70%.

Цільові платформи та інструменти

Платформа Переважний формат Інструмент Специфіка
NVIDIA Jetson TensorRT engine trtexec, torch2trt INT8 calibration, DLA offload
Apple Silicon / iOS CoreML (.mlmodel) coremltools ANE (Neural Engine) автоматично
Android TFLite (.tflite) tf.lite.TFLiteConverter GPU delegate, NNAPI
x86 CPU ONNX + ORT onnxruntime AVX-512, VNNI
Arm Cortex TFLite / ONNX ort-arm, tflite XNNPACK, NEON
Qualcomm NPU QNN (.dlc) Qualcomm AI Hub Hexagon DSP

TensorRT — головний інструмент для NVIDIA edge. TRT будує граф з fusion операторів, вибирає оптимальні ядра. На Jetson AGX Orin YOLOv8m в TRT INT8 дає 78 fps проти 22 fps в fp16 PyTorch — прискорення в 3.5 рази.

Практичний кейс з нашої практики: детекція дефектів на виробничій лінії

Наш клієнт — виробниче підприємство. Завдання: виявлення подряпин на металі в реальному часі, 30 fps, камера до Jetson Xavier NX (16GB). Вихідна модель YOLOv8l mAP50 0.91, inference на сервері 28 мс, на Jetson в fp16 — 110 мс (9 fps). Не підходить.

Кроки оптимізації:

  1. Перехід на YOLOv8m — mAP50 0.887 (-2.3%), 68 мс
  2. Експорт в TensorRT FP16 через yolo export format=engine half=True — 31 мс (32 fps)
  3. INT8 calibration на 500 кадрах — 22 мс (45 fps), mAP50 0.879

Підсумок: деградація 3.5% при 5× прискоренні. Клієнт отримав engine та документацію. Гарантуємо, що метрика не впаде нижче обумовленого порогу — прописано в договорі.

Приклад профілювання latency по шарах YOLOv8m на Jetson Xavier NX (fp16):

- Convolution (layer 1–5): 12 ms
- Bottleneck (layer 6–10): 8 ms
- Head (detection): 11 ms

Вузьке місце — останні шари head'а. Після квантування head'а окремо latency head знизилась до 4 ms.

Що входить в роботу

  • Звіт по профілюванню моделі на цільовому пристрої (latency по шарах, вузькі місця)
  • Вибір та обґрунтування методів оптимізації (quantization / pruning / distillation)
  • Оптимізована модель (TensorRT engine / TFLite / CoreML / ONNX)
  • Конфіги для відтворення (скрипти, Docker-образ, інструкція)
  • Тестування на реальному пристрої (не менше 10 000 інференсів)
  • Навчання вашої команди (2 години онлайн)
  • Підтримка 1 місяць після передачі

Як замовити оптимізацію моделі?

  1. Залиште заявку на сайті або зв'яжіться з нами будь-яким зручним способом.
  2. Ми проводимо безкоштовне профілювання вашої моделі на цільовому пристрої протягом 24 годин.
  3. Готуємо план оптимізації з оцінкою trade-off (швидкість vs якість).
  4. Ви затверджуєте план — ми приступаємо до роботи.
  5. Після завершення передаємо оптимізовану модель, конфіги та документацію.
  6. Проводимо навчання вашої команди та надаємо місячну підтримку.

Терміни: оптимізація готової моделі — 2–4 тижні. Розробка з нуля під edge — 6–16 тижнів. Вартість розраховується індивідуально залежно від складності моделі та цільової платформи.

Отримайте консультацію — ми безкоштовно оцінимо вашу модель та запропонуємо план за 24 години. Замовте безкоштовне профілювання прямо зараз.