ExecuTorch Hackathon: что создают, когда ИИ работает прямо в телефоне

Пока индустрия спорит о размерах следующего GPT, в Сан-Франциско 100 разработчиков два дня писали код для нейросетей, которые помещаются в кармане. Не на кластере из 800 GPU, а на обычном Samsung Galaxy S25 Ultra — с одним Snapdragon и ограниченным бюджетом по памяти и батарее. Хакатон ExecuTorch, организованный Meta при поддержке Qualcomm, GitHub и PyTorch Foundation, показал, что on-device AI перестал быть демо-игрушкой и превратился в полноценную инженерную дисциплину со своими компромиссами, победами и реальными пользователями.

Зачем вообще гонять нейросеть на телефоне

Обычный сценарий: вы открываете приложение, оно отправляет фото или текст на сервер, модель там думает и возвращает ответ. Это работает, пока есть интернет, пока сервер не перегружен, пока ваши данные готовы покинуть устройство. Но есть задачи, где задержка в 200 миллисекунд — это провал. Есть сценарии, где отправка приватного видео в облако недопустима по определению. И есть ситуации, где связь просто отсутствует — метро, самолёт,偏远地区.

On-device inference решает все три проблемы одновременно. Модель работает локально: отклик мгновенный, данные никуда не уходят, сеть не нужна. Цена — ограниченные вычислительные ресурсы. Мобильный чип не может позволить себе запустить Llama 70B. Но он вполне тянет квантизованные модели на сотни миллионов параметров — достаточно для компьютерного зрения, поведенческого анализа, голосовых команд и небольших генеративных задач.

ExecuTorch: мост между PyTorch и мобильным железом

ExecuTorch — это runtime от Meta, который берёт обученную в PyTorch модель и превращает её в эффективный инференс-код для мобильных и embedded-устройств. Ключевая идея: разработчик не переписывает модель под каждый чип. Он экспортирует модель из PyTorch в формат .pte, а ExecuTorch сам компилирует её под целевой hardware — CPU, NPU (нейропроцессор), DSP (цифровой сигнальный процессор) или специализированные ускорители Qualcomm Hexagon.

Архитектура runtime разделена на три слоя. Первый — frontend, который принимает стандартный PyTorch-экспорт через torch.export. Эта функция захватывает вычислительный граф модели, сохраняя семантику операторов без потери информации о формах тензоров и динамических путях выполнения. Второй — backend delegate, который анализирует граф и отдаёт части специализированным ускорителям. Например, операции свёртки и матричного умножения уходят в Qualcomm AI Engine Direct SDK для выполнения на Hexagon NPU, а операции, которые NPU не поддерживает (кастомные активации, динамические reshape), остаются на CPU. Третий — lightweight runtime на C++, который исполняет оставшийся граф с минимальным overhead: никаких интерпретаторов Python, никаких гигабайтов зависимостей. Весь runtime весит меньше мегабайта и может быть вшит прямо в Android-приложение как JNI-библиотека.

Это важно, потому что до ExecuTorch мобильный деплой означал ручной перенос модели в TFLite, ONNX Runtime или кастомный инференс-движок. Каждый фреймворк имел свои ограничения: TFLite не поддерживал часть операторов PyTorch, ONNX терял dynamic shapes, кастомные решения требовали ручной квантизации и оптимизации под конкретный чип. ExecuTorch унифицирует путь: одна модель, один экспорт, один runtime, работающий на любом железе из экосистемы PyTorch Edge. Backend delegate — ключевой механизм: он позволяет одному приложению автоматически использовать NPU на Snapdragon, CoreML на iPhone или XNNPACK на универсальном CPU, без переписывания кода.

Аппаратные ограничения: 75 TOPS, но с нюансами

Snapdragon 8 Elite в Galaxy S25 Ultra формально выдаёт до 75 TOPS (триллионов операций в секунду) на Hexagon NPU. Цифра впечатляет, но на практике команды хакатона столкнулись с классическими ограничениями мобильного инференса. Во-первых, thermal throttling: NPU потребляет 3-5 ватт при пиковой нагрузке, и через 10-15 минут непрерывного инференса чип снижает частоты, чтобы не перегреть устройство. Во-вторых, memory bandwidth: даже если модель помещается в 100 МБ (что уже много для мобильного приложения), передача тензоров между CPU и NPU упирается в пропускную способность LPDDR5X — около 50 ГБ/с. В-третьих, квантизация: INT8-модели в 4 раза меньше FP32, но потеря точности требует тщательной калибровки на реальных данных. Команды использовали post-training quantization с калибровочными датасетами из 500-1000 примеров, что занимало часы подготовки.

SafeScreen AI, например, оптимизировала pipeline так, чтобы классификатор работал на CPU (он маленький и быстрый), а детектор объектов — на NPU. SixthSense разделил монокулярную оценку глубины (тяжёлая модель, NPU) и текстовый синтез (лёгкая модель, CPU). Toddle AI квантизовал pose estimation до INT4, потеряв менее 2% точности на валидационной выборке, но выиграв 40% скорости. Эти инженерные решения — не абстракция, а повседневная реальность мобильного ML-разработчика.

Победители: три задачи, где облако не подходит

Первое место взял SafeScreen AI — локальный щит, который анализирует визуальный контент на телефоне в реальном времени и предупреждает, размывает или блокирует вредоносные изображения. Приложение использует ExecuTorch для запуска моделей классификации и детекции прямо на Snapdragon. Ключевая архитектурная деталь: анализ происходит до того, как пользователь полностью увидит контент. Это не пост-модерация после загрузки, а проактивный перехват. Команда использовала квантизованную MobileNetV3 для быстрой классификации и YOLO-NAS в INT8 для детекции объектов, обе модели оптимизированы под Hexagon NPU. Система перехватывает видеопоток на уровне Android SurfaceFlinger, анализирует каждый кадр за 15-20 миллисекунд и применяет gaussian blur или pixelation к проблемным зонам. Без локального inference это невозможно — отправлять каждое изображение на сервер означало бы неприемлемую задержку и утечку приватных фото.

Второе место — SixthSense, тактильный навигатор для незрячих. Телефон с камерой, закреплённый на груди, передаёт видео в модель объектного детектора и оценщика глубины. Модель разделяет пространство на три зоны — лево, центр, право — и отправляет сигналы на вибрирующий пояс. Пользователь чувствует, в какой стороне препятствие, и может двигаться в свободное направление. Всё работает через ExecuTorch: детекция объектов, монокулярная оценка глубины, синтез речи, чтение текста. Непрерывная связь здесь критична не только для приватности, но и для надёжности — в толпе, в шумном метро, в местах с плохим покрытием облачный вариант просто не справится с real-time требованиями.

Третье место — Toddle AI, приватный анализ детской походки. Приложение записывает видео того, как ребёнок делает первые шаги, и локально оценивает паттерны движения через pose estimation на 33-ландмарчной модели. Никакое видео не покидает устройство — что критично для родителей, снимающих малышей. Вместо чёрного ящика приложение показывает объяснимые метрики: количество шагов, симметрию, устойчивость. Локальный AI-ассистент интерпретирует результаты на понятном языке. Это пример, где edge-AI превращает чувствительный домашний контент из проблемы в преимущество: приватность становится фичей продукта, а не компромиссом.

Общая черта: локальность как архитектурное требование

Все три победителя объединяет не просто факт запуска на телефоне, а то, что on-device execution был необходим для самой логики приложения. SafeScreen нужен мгновенный перехват — 200 мс задержки облака означают, что пользователь уже увидел вредный контент. SixthSense требует стабильности в любых сетевых условиях — навигатор для незрячих не может «подвисать» в метро. Toddle AI обрабатывает семейные видео, которые родители по определению не хотят отправлять на сторонние серверы.

Это сдвиг парадигмы. Раньше on-device AI рассматривался как оптимизация — ускорить, удешевить, сохранить батарею. Теперь это функциональное требование, без которого продукт невозможен в принципе. Приватность, мгновенный отклик, работа офлайн — это не «приятные бонусы», а условия, при которых задача вообще имеет решение.

Что это значит для разработчиков

Для мобильных разработчиков ExecuTorch открывает знакомый workflow: обучил модель в PyTorch → экспортировал → встроил в приложение. Не нужно переучиваться на TFLite, не нужно вручную квантизовать веса, не нужно писать C++ биндинги. Для ML-инженеров это означает, что их модели теперь могут жить не только на сервере, но и в кармане у пользователя.

Ограничения всё ещё реальны. Мобильные модели должны помещаться в десятки мегабайт, укладываться в thermal budget телефона, и давать результат за миллисекунды. Квантизация до INT8 или даже INT4 неизбежна — и она требует тщательной калибровки, чтобы не потерять точность. Но инструментарий наконец-то созрел: ExecuTorch + Snapdragon NPU + PyTorch-экспорт дают end-to-end pipeline, который работает в production.

Конкретные числа с хакатона подтверждают зрелость стека: участники использовали Galaxy S25 Ultra с Snapdragon 8 Elite, где Hexagon NPU выдаёт до 75 TOPS при мощности в несколько ватт. Этого достаточно для одновременного запуска моделей детекции, сегментации и pose estimation в реальном времени.

Будущее: облако, edge и гибрид

On-device AI не заменит облачные модели. Тяжёлая генерация, обучение, сложные рассуждения останутся в дата-центрах. Но растущий класс приложений — приватные ассистенты, системы безопасности, медицинские скринеры, офлайн-инструменты — требует локального inference как основы архитектуры. ExecuTorch и подобные фреймворки делают этот переход доступным для миллионов PyTorch-разработчиков без необходимости учить новый стек.

Хакатон показал главное: разработчики готовы. 100 человек за два выходных дня построили production-quality прототипы, которые решают реальные человеческие задачи — защиту детей от вредного контента, помощь незрячим в навигации, мониторинг здоровья малышей. Без облака, без серверов, без API-ключей. Просто телефон, нейросеть и чёткое понимание, почему именно локальный инференс делает эти приложения возможными.

Часто задаваемые вопросы

Чем ExecuTorch отличается от TensorFlow Lite?

ExecuTorch создан для экосистемы PyTorch — модели экспортируются напрямую через torch.export без конвертации в промежуточные форматы. TensorFlow Lite требует переобучения или конвертации из PyTorch, что теряет операторы и требует ручной калибровки квантизации. ExecuTorch также поддерживает delegate-архитектуру, отдающую части графа специализированным NPU, что даёт более эффективный инференс на современных чипах Snapdragon и MediaTek.

Какие модели реально помещаются на мобильном устройстве?

Квантизованные модели до 100–300 миллионов параметров работают в реальном времени на современных флагманах. Для computer vision это MobileNetV3, EfficientNet-Lite, YOLO-NAS в INT8-вариантах. Для NLP — небольшие transformer-модели типа DistilBERT или квантизованные LLM до 3B параметров. Generative AI на телефоне пока ограничен короткими текстовыми ответами и простыми изображениями, но растёт с каждым поколением чипов.

Насколько локальный инференс экономит батарею?

Отправка запроса в облако расходует энергию на радиомодуль (5G/WiFi), который потребляет сотни милливатт при передаче. Локальный NPU потребляет 1–5 ватт во время инференса, но работает миллисекунды. Для частых запросов (каждые несколько секунд, как в навигаторе для слепых) локальный вариант значительно экономичнее. Для единичных запросов разница невелика.

← Все записи