Stable Diffusion на macOS: сравнение локальных инструментов для изображений
Автоматический перевод
Эта статья была автоматически переведена с оригинальной английской версии.
Запуск моделей для генерации изображений на macOS начинается с выбора инструмента. Это руководство для владельцев Mac, которые хотят генерировать изображения локально. Вы узнаете, для чего подходит каждый из шести инструментов, как его установить, что нужно модели помимо её файла и как проверить инструмент на своём компьютере, прежде чем на него переходить.
Draw Things, DiffusionBee, ComfyUI, InvokeAI, AUTOMATIC1111 и Fooocus частично пересекаются по возможностям, но отличаются установкой, поддержкой моделей, управлением воркфлоу, расширениями, автоматизацией и сопровождением. Приложение с drag-and-drop позволяет быстро начать, а нодовый граф дольше осваивать, зато он открывает больше этапов пайплайна. На Apple Silicon то, поместится ли генерация в память, зависит от приложения, семейства моделей, точности, размера изображения и воркфлоу.
Что запускает локальное приложение для изображений
Каждый инструмент в этом руководстве запускает пайплайн одного и того же типа. В его центре денойзер: U-Net в SD 1.5 и SDXL, трансформер во Flux.1. Он стартует со случайного шума и на каждом шаге убирает немного шума, ориентируясь на промпт. Остальные части готовят его входные данные или превращают его выход в изображение:
| Часть | Что делает |
|---|---|
| Чекпоинт | Основной файл модели. В нём лежит денойзер, а для SD 1.5 и SDXL обычно ещё и текстовый энкодер с VAE. Во Flux.1 эти части часто поставляются отдельными файлами. |
| Текстовый энкодер | Превращает промпт в числа, которые может использовать денойзер. Перед этим токенизатор разбивает промпт на токены. |
| VAE | Переводит изображение между пикселями и меньшим «латентным» представлением, с которым работает денойзер. Его декодер превращает итоговый латент в изображение, которое вы видите. |
| Сэмплер и шаги | Seed задаёт начальный шум. Сэмплер вместе с планировщиком решает, сколько шума убирает каждый шаг. Чем больше шагов, тем дольше генерация. |
| LoRA | Небольшой файл-дополнение, который меняет стиль или тему модели того семейства, для которого он обучен. Эмбеддинг textual inversion — ещё меньшее дополнение, которое учит текстовый энкодер новому слову. |
| ControlNet | Дополнительная модель, которая направляет композицию по управляющему изображению: позе, карте глубины или карте границ. |
На схеме проследите за латентом от seed-шума до шага N: промпт попадает в денойзер на каждом шаге, полосы показывают, сколько шума осталось, LoRA и ControlNet — необязательные входы, а VAE-декодер превращает маленький латент в изображение. Метки CHECKPOINT отмечают части, которые обычно хранит один файл чекпоинта.
Где брать модели
Большинство инструментов умеют скачивать стартовую модель сами. Для остального хватает двух сайтов:
- Hugging Face хранит официальные базовые модели Stability AI, Black Forest Labs и других. Читайте лицензию на карточке модели: лицензии различаются даже внутри одного семейства, например FLUX.1 [schnell] (Apache 2.0) и FLUX.1 [dev] (некоммерческая лицензия). Некоторые репозитории просят принять лицензию, прежде чем начнётся скачивание.
- Civitai хранит чекпоинты, LoRA и эмбеддинги от сообщества. На каждой странице указано, для какой базовой модели обучен файл.
Предпочитайте файлы .safetensors. Файл .ckpt — это pickle для Python, а загрузка pickle может выполнить произвольный код. В .safetensors хранятся только тензоры. Загружайте .ckpt только из источника, которому доверяете.
Прежде чем скачивать несколько гигабайт, сверьте семейство модели (SD 1.5, SDXL, Flux.1 и так далее) с тем, что поддерживает ваш инструмент. LoRA, обученная для SDXL, не работает с чекпоинтом SD 1.5.
Файл модели — это не переносимый воркфлоу
Несколько приложений умеют загружать файлы .safetensors, но совпадение расширения не значит, что модель заработает. Для полного пайплайна могут понадобиться определённая архитектура, текстовый энкодер, VAE, планировщик, ControlNet, LoRA или настройки конкретного приложения.
Записывайте всё, что дало изображение:
- приложение и его версия
- репозиторий модели, ревизия и лицензия
- каждый компонент модели и каждый адаптер
- промпт, негативный промпт, seed, сэмплер, шаги, guidance и размеры
- файл графа или воркфлоу, если приложение его предоставляет
Тот же seed всё равно может дать другое изображение после смены бэкенда, модели, сэмплера или точности.
Память, место на диске и ПО под каждым инструментом
На Apple Silicon CPU и GPU делят один пул памяти. GPU может использовать большую его часть, поэтому Mac с 32 ГБ может загрузить модели, которые не помещаются на типичную видеокарту с 8–12 ГБ. Тот же пул занимают macOS и все открытые приложения; Activity Monitor показывает использование памяти приложениями, закреплённой и сжатой памяти, а также своп.
Пиковое потребление памяти при генерации складывается из четырёх частей: компонентов модели, рабочей памяти под активации и аттеншн, загруженных адаптеров и управляющих моделей, а также памяти, которую уже используют macOS и ваши приложения. Верхняя часть схемы показывает их как части одной памяти вместе с памятью, которая остаётся свободной; это не формула для расчёта объёма. Нижняя часть сравнивает примеры размеров скачиваемых файлов без квантизации. Полосы показывают место на диске, а не память во время выполнения.
Разрешение, размер батча, архитектура модели, апскейл и ControlNet меняют потребление памяти во время выполнения. Размер скачиваемых файлов позволяет оценить место на диске; память во время выполнения зависит от точности и квантизации, которые загружает приложение, от компонентов, остающихся загруженными, и от временных тензоров, создаваемых при генерации. Квантизация хранит веса с меньшим числом битов, а Draw Things может загружать веса FLUX.1 по требованию, вместо того чтобы держать их все в памяти. Проверьте нужный воркфлоу и следите за Memory Pressure и Swap Used: устойчивый своппинг — повод уменьшить нагрузку или взять больше памяти.
Место на диске планируйте отдельно. Эти скачиваемые файлы без квантизации на Hugging Face включают чекпоинт SD 1.5 размером около 4 ГБ и базовый чекпоинт SDXL размером около 7 ГБ. Один только трансформер FLUX.1 [schnell] занимает около 24 ГБ, а 16-битный текстовый энкодер T5 добавляет около 10 ГБ. FLUX нужны и другие компоненты, поэтому эти два файла не составляют полный комплект для скачивания. Если на Mac мало места, храните папки с моделями на внешнем SSD.
Инструменты различаются и ПО между ними и GPU. ComfyUI, AUTOMATIC1111, Fooocus и InvokeAI — приложения на Python, которые работают на Metal-бэкенде PyTorch, называемом MPS (Metal Performance Shaders), поэтому их возможности и скорость зависят от установленной версии PyTorch. Draw Things использует собственный движок с ядрами Metal FlashAttention. Все они используют Metal и один и тот же пул унифицированной памяти.
Шесть инструментов в сравнении
| Инструмент | Установка | Что можно контролировать | Операционный компромисс |
|---|---|---|---|
| Draw Things | Mac App Store | Нативный интерфейс Apple с локальными моделями, адаптерами, ControlNet и скриптами | Плотный интерфейс, привязанный к продукту; проверьте поддержку нужного семейства моделей |
| DiffusionBee | Загрузка DMG | Готовое приложение для macOS со встроенным процессом генерации | Нет релизов после 2.5.3 в августе 2024 года; нет поддержки семейств моделей, вышедших позже |
| ComfyUI | Comfy Desktop DMG или brew install --cask comfy | Явный граф нод, воркфлоу в JSON, API и кастомные ноды | Больше компонентов; графы и сторонние ноды становятся зависимостями |
| InvokeAI | Invoke Launcher DMG | Холст с inpainting и outpainting, а также редактор воркфлоу из нод | Нужна macOS 14 или новее; в документации рекомендуется 16 ГБ памяти или больше |
| AUTOMATIC1111 | Пакеты Homebrew, git clone и ./webui.sh | Веб-интерфейс на формах, скрипты, API и большой набор расширений | Последний релиз в феврале 2025 года; задокументированные ограничения для Apple Silicon; расширения выполняют сторонний код в той же среде |
| Fooocus | git clone и окружение conda (неофициально на Mac) | Строгий воркфлоу для SDXL, построенный вокруг промпта | Только исправления ошибок; рекомендации для Mac неофициальные и мало проверены |
Таблица показывает, где сохраняются ваши настройки: в приложении, в веб-форме или в файле графа, который можно проверить. Схема начинается с нативного приложения и показывает, когда стоит перейти на другой инструмент, и как у каждого из них хранятся ваши настройки. Прежде чем остановиться на любом из них, выполните приёмочный тест в конце статьи.
Draw Things: нативное взаимодействие и скрипты
Draw Things — приложение для платформ Apple, которое генерирует изображения локально. Установите его из Mac App Store; ни Python, ни терминал не нужны. Его актуальная документация охватывает модели, LoRA, ControlNet, textual inversion, Core ML и версионированные скрипты на JavaScript.
Выбирайте его, когда работа должна оставаться внутри нативного приложения, но требует больше контроля, чем поле для промпта. Прежде чем делать его стандартом, импортируйте точные компоненты модели и воспроизведите одну типичную правку, адаптер или воркфлоу с управлением. «Нативный» описывает интерфейс и реализацию; это не гарантирует поддержку или скорость для каждой новой архитектуры.
DiffusionBee: готовый воркфлоу для macOS
DiffusionBee упаковывает скачивание моделей и типичные задачи генерации в настольное приложение. Скачайте DMG и перенесите приложение в Applications. В документации проекта перечислены image-to-image, inpainting, outpainting, ControlNet, LoRA и SDXL, а в самом приложении есть апскейл. Примечания к релизу DiffusionBee 2.5.3 сообщают о поддержке Flux.1 только на Mac с arm64 и macOS 13 или новее.
Последний релиз DiffusionBee, 2.5.3, вышел в августе 2024 года, а страница загрузки на diffusionbee.com по-прежнему ведёт на 2.5.1; берите 2.5.3 на странице релизов GitHub. Не ждите поддержки семейств моделей, вышедших позже. Выбирайте его, когда установка и встроенный интерфейс важнее экспорта графа пайплайна и когда нужная модель уже есть в его списке. Пометка вроде «поддержка Flux» не значит, что загрузится любая производная модель, квантизация или вспомогательный компонент.
ComfyUI: воркфлоу, сохранённый как файл
ComfyUI представляет генерацию как граф нод. Каждый шаг — это нода, и граф может ветвиться: один граф может сгенерировать изображение, увеличить его и передать ноде восстановления лиц из пакета кастомных нод. Воркфлоу можно хранить в JSON отдельно от результата, и благодаря этому пайплайн можно проверять и версионировать. Его экзекьютор также умеет не пересчитывать участки графа, входные данные которых не изменились.
Comfy Desktop — менеджер нескольких установок локальных экземпляров ComfyUI. Актуальная документация для macOS указывает поддержку Apple Silicon на macOS 13 или новее. Приложение устанавливается из скачанного .dmg. Если вы предпочитаете Homebrew, актуальный cask называется comfy (а не comfyui):
brew install --cask comfy
Выбирайте ComfyUI, когда в пайплайне есть ветвления, повторно используемые компоненты, несколько моделей или автоматизация. Храните вместе JSON, версию приложения, версии основных нод, ревизии кастомных нод и манифест моделей.
Как запустить тот же граф из скрипта с новым seed? Экспортируйте граф через File → Export Workflow (API). В формате API каждая нода идентифицируется числовым ID и сохраняет только входы, нужные для запуска. Затем отправьте его на эндпоинт /prompt локального сервера:
import json
import random
import urllib.request
COMFY_URL = "http://127.0.0.1:8188" # check the port first, see below
SAMPLER_NODE = "3" # the KSampler node ID in your exported file
with open("workflow_api.json") as f:
workflow = json.load(f)
workflow[SAMPLER_NODE]["inputs"]["seed"] = random.randint(0, 2**32 - 1)
request = urllib.request.Request(
f"{COMFY_URL}/prompt",
data=json.dumps({"prompt": workflow}).encode("utf-8"),
headers={"Content-Type": "application/json"},
)
with urllib.request.urlopen(request) as response:
print(json.load(response)) # includes the prompt_id of the queued run
Посмотрите в экспортированном файле на две вещи: ID ноды сэмплера ("3" в собственном примере API ComfyUI) и её поле inputs, где хранятся seed, шаги и имя сэмплера. Проверьте порт перед запуском скрипта: ручная установка по умолчанию слушает порт 8188, а Comfy Desktop может использовать другой порт, указанный в настройках сервера.
Кастомные ноды — это исполняемые зависимости. Проверяйте их исходный код и скрипты установки, фиксируйте ревизии и изолируйте окружение. Граф от неизвестного автора может ссылаться на код и модели, которые вы не проверяли.
InvokeAI: холст для inpainting и outpainting
InvokeAI работает с холстом: вы выбираете маской область для изменения и продолжаете генерацию в том же окне. Inpainting заново генерирует замаскированную область внутри изображения; outpainting расширяет изображение за его существующие границы. В нём есть и редактор воркфлоу из нод для пайплайнов, которые нужно сохранять и передавать другим. Проект по-прежнему выпускает регулярные релизы; v6.14.2 вышел в сентябре 2026 года.
Установите его через Invoke Launcher: откройте DMG, перетащите лаунчер в Applications и запустите. Лаунчер сам установит Python и Invoke. В системных требованиях указаны macOS 14 или новее и сказано, что работают все Mac с Apple Silicon, а рекомендуется 16 ГБ памяти или больше.
Выбирайте его, когда большая часть работы — правка отдельных областей изображения, а не генерация целых изображений по промпту.
AUTOMATIC1111: совместимость с устоявшимся веб-интерфейсом
AUTOMATIC1111 Stable Diffusion WebUI предоставляет настройки генерации через браузерный интерфейс и поддерживает скрипты, расширения и API. Выбирайте его, когда конкретное руководство, автоматизация или расширение уже входят в требования. Последний релиз, v1.10.1, вышел в феврале 2025 года, поэтому прежде чем выбирать его, проверьте поддержку любого семейства моделей, вышедшего позже.
На Mac он работает на бэкенде MPS в PyTorch. Официальное руководство для Apple Silicon устанавливает его из терминала; при первом запуске ./webui.sh создаёт окружение Python и устанавливает остальные зависимости:
brew install cmake protobuf rust python@3.10 git wget
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
./webui.sh
То же руководство описывает исключения и ограничения производительности, включая слабую производительность обучения. Убедитесь, что нужная функция работает на вашей версии macOS и PyTorch, прежде чем брать настройку с множеством расширений.
Расширения выполняют код внутри окружения приложения. Фиксируйте их версии, проверяйте обновления и держите сервис на loopback, если только удалённый доступ не нужен намеренно и не защищён.
Fooocus: только SDXL, только исправления ошибок
Fooocus намеренно скрывает многие технические решения за строгим воркфлоу, построенным вокруг промпта. Это может быть удобно, когда его настройки по умолчанию подходят для задачи.
В актуальном README проекта сказано, что Fooocus построен вокруг SDXL и находится в режиме ограниченной долгосрочной поддержки: только исправления ошибок. Там же сказано, что Mac тестируется неинтенсивно, а установка на Mac описана как неофициальная: окружение conda, git clone и python entry_with_update.py, который при первом запуске скачивает модели SDXL. Поэтому Fooocus подходит для уже существующего воркфлоу на Fooocus, но не как путь по умолчанию для новых архитектур или для настройки на macOS, которую вы собираетесь сопровождать.
Проведите один типичный приёмочный тест
Прежде чем выбрать инструмент, прогоните небольшой приёмочный набор:
- Воспроизведите базовый результат text-to-image по записанному seed и настройкам.
- Выполните самую сложную нужную операцию: inpainting, ControlNet, LoRA, апскейл или многоэтапный граф.
- Перезапустите приложение и воспроизведите воркфлоу из сохранённых файлов.
- Измерьте холодный старт, время генерации, пиковое давление на память и размеры результата.
- Перенесите воркфлоу в чистую учётную запись или на чистую машину и перечислите все недостающие зависимости.
- Проверьте привязку к локальной сети, загрузки, настройки аналитики, лицензии и происхождение моделей.
Не сравнивайте инструменты с разными чекпоинтами, разрешениями, числом шагов или точностью и не называйте результат бенчмарком времени выполнения.
Практичный вариант по умолчанию
Для экспериментов начните с нативного приложения и модели, которую оно документирует. Переходите на ComfyUI, когда ценность приобретает сам воркфлоу: когда его нужно проверять, повторять, автоматизировать или передавать другому человеку. Переходите на InvokeAI, когда работа в основном состоит в правке областей на холсте. Оставляйте AUTOMATIC1111 или Fooocus, когда существующая зависимость делает их интерфейс полезным.
Источники
- Документация Draw Things и Metal FlashAttention в Draw Things
- Проект DiffusionBee
- Документация ComfyUI Desktop для macOS, cask Comfy Desktop в Homebrew, формат API воркфлоу и метаданные воркфлоу в выходных файлах
- Установка InvokeAI и системные требования
- Заметки об установке AUTOMATIC1111 на Apple Silicon
- Статус проекта Fooocus и заметки о macOS
- Заметки Hugging Face о безопасности pickle
- Документация Apple Metal об унифицированной памяти,
recommendedMaxWorkingSetSizeи документация Activity Monitor о давлении на память