Как запустить диффузионную модель на микроконтроллере ESP32-S3
Как запустить диффузионную модель на микроконтроллере ESP32-S3 Stable Diffusion требует видеокарту с 4–8 ГБ памяти, Flux — 12 ГБ, а лучше 24. Но инженер-энтузиаст решил проверить, сможет ли микроконтроллер ESP32-S3 с 512 КБ оперативной памяти и двумя ядрами по 240 МГц честно прогнать диффузию локально, без обращения к облаку. Результат: да, это возможно. Промпт «улыбающаяся девушка со светлыми волосами» превращается в изображение 64×64 пикселя за 5,4 секунды. В основе решения — латентная диффузия с трансформером (DiT), сжатая до int8-квантования. Используются векторные инструкции PIE, которые позволяют выполнять 16 умножений int8 за одну инструкцию. Также применяются ассемблерные оптимизации под конкретный чип и ряд «грязных трюков», чтобы уместить модель в ограниченные ресурсы. Внешняя PSRAM на 2 МБ работает медленно, но помогает расширить доступную память, а Flash на 8 МБ используется для хранения весов. Процесс выглядит так: промпт отправляется по USB, ESP32 выполняет шаги диффузии, выводит лог прогресса, а клиент в терминале рисует картинку полублоками. Автор подробно разбирает, что пришлось ужать, где схитрить и с какими трудностями столкнулся. Это интересный пример того, как современные методы сжатия и оптимизации позволяют запускать сложные нейросети на устройствах с минимальными ресурсами. Главное: • ESP32-S3 с 512 КБ ОЗУ запускает диффузию локально, генерируя изображение 64×64 за 5,4 секунды. • Используются int8-квантование, векторные инструкции PIE и ассемблерные оптимизации. • Модель основана на латентной диффузии с трансформером (DiT), сжатой для встраиваемых систем. • PSRAM и Flash расширяют память, но требуют аккуратного управления скоростью доступа. #ИИ #Микроконтроллеры #EdgeAI #Diffusion #OpenSource