Стремление к приватности, возможности настройки под себя и снижению затрат подогревает интерес к моделям искусственного интеллекта, работающим на локальном оборудовании. Правда, мало кто заходит так далеко, как автор проекта под ником Tim: он построил диффузионную модель генерации изображений, которая работает на микроконтроллере RP2350.

Микроконтроллерная плата RP2350 с выводом сгенерированного изображения

Возможности, как несложно предположить, ограничены. Разрешение составляет 128×128, генерируются исключительно человеческие лица, а на одно изображение уходит около двадцати секунд — что для настолько скромного «железа» всё равно впечатляет. Работает система на отладочной плате Waveshare с RP2350 и выводит готовое изображение либо через USB, либо на экран с помощью платы-адаптера VGA.

реклама кормит Уточку 🦆

Генеративная модель не создаёт изображение напрямую. Вместо этого она формирует распределение в латентном пространстве, которое декодер вариационного автокодировщика превращает в картинку. Сам автокодировщик обучался в двух частях: кодировщик преобразует изображение в распределение в латентном пространстве, а декодер выполняет обратное преобразование. После обучения используется только декодер.

Генеративная часть построена на диффузионном трансформере потока в латентном пространстве: он получает на вход шум и итеративно предсказывает изменения, приближающие результат к желаемому изображению. Модель также принимает на вход класс выходного изображения, задающий направление генерации — например, к улыбающемуся лицу.

реклама кормит Уточку 🦆

Автор обучил две модели — покрупнее и побыстрее — и квантовал веса обеих до 8-разрядных целых чисел. Обе модели вместе с программой вывода уместились в 4 МБ флеш-памяти. Ключевую роль здесь играет именно квантование: перевод весов из формата с плавающей точкой в восьмибитные целые сокращает объём вчетверо и одновременно ускоряет вычисления на процессоре без блока плавающей арифметики. Ценой становится некоторая потеря точности, которая на такой задаче оказывается приемлемой.

реклама кормит Уточку 🦆

Для настолько компактной модели результаты выглядят на удивление достойно: изображения не производят впечатления полностью естественных, но вполне узнаваемы. Практической пользы у проекта немного — зато он наглядно показывает, что диффузионная генерация в принципе не требует ни видеокарты, ни гигабайтов памяти, если задача сужена до одного узкого класса изображений и мириться с двадцатью секундами ожидания.