Конвертация нейросетей для 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. Конвертация и квантование: c применением QAT или post-training quantization.
  4. Валидация точности: сравнение выходов float и quantized модели на тестовой выборке.
  5. Развертывание: подготовка C-массива, тестирование на целевом устройстве.

Что входит в работу

  • Документация: отчёт о конвертации, инструкция по развёртыванию.
  • Исходный код скриптов конвертации и валидации.
  • Обучение команды заказчика (1–2 сессии).
  • Гарантия точности: отклонение не более 5% от baseline.
  • Поддержка после деплоя — 1 месяц.

Сроки и бюджет

Сроки: от 1 до 3 недель в зависимости от сложности модели и требований. Стоимость рассчитывается индивидуально — свяжитесь с нами для оценки проекта за один рабочий день. Получите консультацию и коммерческое предложение с учётом ваших задач. Наш опыт: более 6 лет в edge ML, 50+ проектов, 30+ для Coral. Экономия на этапе развертывания — один из ключевых результатов наших проектов.

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

Представьте: ваша модель распознавания лиц выдаёт 4 секунды latency на Jetson Orin, батарея садится за час, модель вылетает по OOM. Мы — команда инженеров по Edge AI с 5+ лет опыта — оптимизировали более 150 моделей для граничных устройств. Без профилирования и правильного выбора квантизации или дистилляции проект обречён. Разрыв между исследовательским кодом и edge-деплоем — отдельная инженерная дисциплина, мы помогаем её освоить за 2–16 недель под ключ. Услуги Edge AI и оптимизация моделей — это не просто экспорт, а системная работа с железом.

Почему просто «экспортировать модель» не работает

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 — основные библиотеки.

Метод Время реализации Деградация точности Инструменты
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

Экономия от выбора правильного метода: до 350 000 ₽ в год на облачных инстансах за счёт снижения latency и энергопотребления. Стоимость проекта рассчитывается индивидуально — диапазон от 100 000 до 500 000 ₽ в зависимости от сложности модели.

Прунинг и дистилляция

Структурный прунинг удаляет каналы или слои. torch.nn.utils.prune — базовый инструмент. Для transformer — прунинг attention heads (LTP, movement pruning). Результат: ResNet-50 после удаления 40% каналов с fine-tuning — -35% размера, -28% latency, -1.2% top-1 accuracy.

Knowledge distillation — обучаем маленькую student имитировать большую teacher. Классика через KLDivLoss на soft labels. Feature distillation на промежуточных слоях эффективнее. Hugging Face DistilBERT: 66M vs 110M параметров, -40% latency, -3% на GLUE. Согласно Wikipedia, это техника сжатия модели.

Комбинированный подход: дистилляция → прунинг → 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.

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

Задача: обнаружение царапин на металле в реальном времени, 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 часа. Закажите бесплатное профилирование прямо сейчас.