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 отмечают части, которые обычно хранит один файл чекпоинта.

Seed-шум превращается в чистый латент за шаги денойзера: промпт подаётся на каждом шаге, есть необязательные входы LoRA и ControlNet, а VAE-декодер превращает латент в изображениеSeed-шум превращается в чистый латент за шаги денойзера: промпт подаётся на каждом шаге, есть необязательные входы LoRA и ControlNet, а VAE-декодер превращает латент в изображение

Где брать модели

Большинство инструментов умеют скачивать стартовую модель сами. Для остального хватает двух сайтов:

  • 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 и ваши приложения. Верхняя часть схемы показывает их как части одной памяти вместе с памятью, которая остаётся свободной; это не формула для расчёта объёма. Нижняя часть сравнивает примеры размеров скачиваемых файлов без квантизации. Полосы показывают место на диске, а не память во время выполнения.

Сверху: CPU и GPU делят память, занятую macOS и приложениями, компонентами модели, рабочей памятью, LoRA и ControlNet; часть остаётся свободной. Снизу: примеры скачиваемых файлов без квантизации, около 4 ГБ для чекпоинта SD 1.5, 7 ГБ для чекпоинта SDXL и 24 плюс 10 ГБ для трансформера FLUX.1 schnell и энкодера T5. Размер файла показывает место на диске, а не память во время выполненияСверху: CPU и GPU делят память, занятую macOS и приложениями, компонентами модели, рабочей памятью, LoRA и ControlNet; часть остаётся свободной. Снизу: примеры скачиваемых файлов без квантизации, около 4 ГБ для чекпоинта SD 1.5, 7 ГБ для чекпоинта SDXL и 24 плюс 10 ГБ для трансформера FLUX.1 schnell и энкодера T5. Размер файла показывает место на диске, а не память во время выполнения

Разрешение, размер батча, архитектура модели, апскейл и 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 ThingsMac App StoreНативный интерфейс Apple с локальными моделями, адаптерами, ControlNet и скриптамиПлотный интерфейс, привязанный к продукту; проверьте поддержку нужного семейства моделей
DiffusionBeeЗагрузка DMGГотовое приложение для macOS со встроенным процессом генерацииНет релизов после 2.5.3 в августе 2024 года; нет поддержки семейств моделей, вышедших позже
ComfyUIComfy Desktop DMG или brew install --cask comfyЯвный граф нод, воркфлоу в JSON, API и кастомные нодыБольше компонентов; графы и сторонние ноды становятся зависимостями
InvokeAIInvoke Launcher DMGХолст с inpainting и outpainting, а также редактор воркфлоу из нодНужна macOS 14 или новее; в документации рекомендуется 16 ГБ памяти или больше
AUTOMATIC1111Пакеты Homebrew, git clone и ./webui.shВеб-интерфейс на формах, скрипты, API и большой набор расширенийПоследний релиз в феврале 2025 года; задокументированные ограничения для Apple Silicon; расширения выполняют сторонний код в той же среде
Fooocusgit clone и окружение conda (неофициально на Mac)Строгий воркфлоу для SDXL, построенный вокруг промптаТолько исправления ошибок; рекомендации для Mac неофициальные и мало проверены

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

Начните с Draw Things или DiffusionBee; переходите на ComfyUI, когда воркфлоу нужно проверять или автоматизировать, на InvokeAI, когда работа состоит в редактировании областей, и на AUTOMATIC1111 или Fooocus только если от них зависит существующий воркфлоуНачните с Draw Things или DiffusionBee; переходите на ComfyUI, когда воркфлоу нужно проверять или автоматизировать, на InvokeAI, когда работа состоит в редактировании областей, и на AUTOMATIC1111 или Fooocus только если от них зависит существующий воркфлоу

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, которую вы собираетесь сопровождать.

Проведите один типичный приёмочный тест

Прежде чем выбрать инструмент, прогоните небольшой приёмочный набор:

  1. Воспроизведите базовый результат text-to-image по записанному seed и настройкам.
  2. Выполните самую сложную нужную операцию: inpainting, ControlNet, LoRA, апскейл или многоэтапный граф.
  3. Перезапустите приложение и воспроизведите воркфлоу из сохранённых файлов.
  4. Измерьте холодный старт, время генерации, пиковое давление на память и размеры результата.
  5. Перенесите воркфлоу в чистую учётную запись или на чистую машину и перечислите все недостающие зависимости.
  6. Проверьте привязку к локальной сети, загрузки, настройки аналитики, лицензии и происхождение моделей.

Не сравнивайте инструменты с разными чекпоинтами, разрешениями, числом шагов или точностью и не называйте результат бенчмарком времени выполнения.

Практичный вариант по умолчанию

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

Источники