Гайд: Как запустить Stable Diffusion прямо на Mac и использовать кастомные модели (18+)

В этой инструкции кратко изложу как поставить популярную модель генерации изображений Stable Diffusion прямо на ваш Macbook и затем «накатывать» кастомные fine-tuned модели, которые могут в разные тематики.

Примеры изображений, которые удалось сгенерировать SD на маке
5050

Юзаю. Не без недостатков:
• Модель по умолчанию — SD 1.5 со всеми вытекающими (негатив промпты мало влияют, с разрешением выше 512×512 до апскейлера будут проблемы и т.д.), 2.x импортировать не получится, перспективы поддержки 2.x туманны;
• Нет поддержки весов для частей запросов, будут ли — хз;
• Нет настройки сэмплеров (это обещают, сейчас оно на ЗБТ)
• Нет поддержки CoreML (медленнее, нельзя заюзать NPU, но зато залетают любые SD-модели без конвертации); разраб изучает возможность запилить поддержку, пока ограничивает мин. версия макоси (13.1) — в дискорде есть опрос, кто какую версию юзает

Из плюсов конечно простота использования, работоспособность из коробки, лёгкий импорт моделей (кроме стандартных SD 2.x). Для third-party моделей как раз и хорошее решение. Для нормальной работы с SD 2.1 и некоторыми другими, с весьма гибкими настройками, есть DrawThings — изначально мобильная софтина, поначалу крэшилась на ARM-маках, но нынче допилена и полноценно работает, есть набор моделей (в т.ч. openjourney, 3дшные, анимешные), но произвольную импортнуть нельзя. Юзает меньше памяти, чем DiffusionBee, но работает вероятно медленнее, т.к. не загружает гпу полностью (около 90% на M1 Max против 95–99% у DiBee при генерации), видимо причина в mobile-first природе проекта и оптимизациях для мобил с их априорной нехваткой памяти. Также у DiffusionBee есть fp32-версия для arm64, DrawThings чисто fp16.

AUTOMATIC1111 остается самым настраиваемым и универсальным решением, но он очень CUDA-центричен и на Apple Silicon будет самой медленной из имеющихся реализаций, плюс некоторые вещи типа самостоятельного обучения моделей не работают под darwin arm64.

Вообще, ещё есть приложение от HuggingFace на базе CoreML-кода от Apple на базе diffusers-кода от HuggingFace (лол): https://github.com/huggingface/swift-coreml-diffusers, настроек там мало. Доступно на маке и на мобилках, совместимо только со сконверченными под CoreML моделями — SD 2.1 имеется, как и некоторые другие, можно конвертить самому через cli, см. https://github.com/apple/ml-stable-diffusion

5

Юзает меньше памяти, чем DiffusionBee, но работает вероятно медленнееНасчет DrawThings — в этом есть и плюс: можно запустить генерацию и параллельно спокойно работать (не с 3D, конечно) — благодаря некоторому недогрузу гпу и относительно малому потреблению памяти (по крайней мере у меня с M1 Max и 32 ГБ uRAM) нет импакта по перфе и отзывчивости системы и обычных приложений, работаешь, а в фоне оно генерит себе. DiBee fp32 лучше оставлять генерить в выделенном режиме, он отжирает почти все доступные ресурсы GPU и жрёт больше объединенной памяти.

Еще есть SD на Tensorflow с поддержкой Apple Metal специально для интеловских маков (мой случай), но со своими заморочками (интерфейс, настройки, совместимость моделей).
https://github.com/soten355/stable-diffusion-tensorflow-IntelMetal