ГАЙД 2026

Как запустить MOSS-Image локально: Python, ComfyUI, кванты и требования к памяти

Открытая text-to-image модель MOSS-Image весит 27 ГБ в bf16 и ужимается до 13 ГБ в квантованных файлах. Разбираем два пути запуска — скрипт на Python и нативные ноды ComfyUI — и считаем память по реальным размерам файлов.

ГайдЛокальный запускText-to-image
Уровень СреднийВремя настройки 30–60 минутОбновлено 21.10.2026

К концу гайда у вас будет рабочая установка MOSS-Image на своём GPU: либо скрипт на Python, который генерирует картинку 1024×1024 за 50 шагов, либо ComfyUI с нативными нодами и раскладкой по папкам models/. Второй путь удобнее для повседневной работы, первый — для автоматизации и пакетной генерации.

Что нужно до старта
Python 3.10+, PyTorch 2.9+ под вашу версию CUDA, NVIDIA-видеокарта и свободное место под веса. Точные требования к объёму видеопамяти OpenMOSS не публикует — в документации описаны только режимы экономии памяти, поэтому ниже считаем по фактическим размерам файлов и объясняем, как подобрать режим под свою карту.
29,7 ГБ
Полный набор
веса в bf16
13,0 ГБ
Компактный
int8 + w4a8
50
Шагов
рекомендация авторов
1M–2M
Разрешение
пикселей в кадре

01Из чего состоит установка

MOSS-Image — не одна модель, а связка из трёх компонентов, и качать нужно все три. Трансформер (5B single-stream DiT) отвечает за генерацию, текст-энкодер семейства Qwen 3.5 на 9B превращает промпт в эмбеддинги, а VAE-декодер собирает пиксели из латентов. В официальном наборе используется маленький декодер от FLUX.2 — отсюда скромные 0,25 ГБ вместо нескольких гигабайт у старых VAE.

Мы сверили размеры по файловому списку репозитория Comfy-Org/MOSS-Image на Hugging Face (снято 21.10.2026) — это готовые single-file веса для ComfyUI. В diffusers-репозитории те же компоненты лежат шардами по 5 ГБ, суммарно дают те же 27 ГБ в bf16.

КомпонентФайл в набореbf16int8
Диффузионный трансформерmoss_image_sft_bf16 / _int8_convrot10,2 ГБ5,4 ГБ
Текст-энкодер Qwen 3.5 9Bqwen3.5_9b_bf16 / _int8_convrot19,3 ГБ9,8 ГБ
Текст-энкодер, 4-битныйqwen3.5_9b_w4a8_gptq—7,3 ГБ
VAE (FLUX.2 small)flux2-vae_small0,25 ГБ0,25 ГБ
LoRA управления глубиной цветаmoss_image_color_depth_control0,31 ГБ—
Размеры файлов из набора Comfy-Org/MOSS-Image, снято 21.10.2026. Итог по трём основным компонентам: 29,7 ГБ в bf16 и 13,0 ГБ в компактной сборке (int8-диффузор + w4a8-энкодер).
Столбец int8 для VAE указан равным bf16: декодер в наборе один, квантованного варианта нет.
Доли компонентов в полном наборе
65%34%29,7ГБ всегоТекст-энкодер19,3 · 65%Трансформер10,2 · 34%VAE0,2 · 1%
Две трети веса — текст-энкодер. Именно его квантование в w4a8 экономит больше всего места: 19,3 ГБ превращаются в 7,3 ГБ.

02Что происходит при генерации

Путь одного запроса
1ПромптОбычный текст, набор тегов или JSON-раскладка с рамками объектов2ТокенизацияТокенизатор Qwen 3.5 разбивает строку, включая переносы строк внутри кавычек3Энкодер9B-энкодер отдаёт эмбеддинги: bf16 или 4-битный gptq-вариант4Диффузия5B DiT, 50 шагов Euler, CFG 3, shift 5, пропуск слоя 22 в негативной ветке5ДекодерVAE FLUX.2 small собирает изображение и сохраняет PNGПять стадий: от текста до PNG

Ключевая деталь: по умолчанию на каждом шаге считается две ветки — условная и негативная, то есть трансформер прогоняется дважды. Авторы предлагают обнулять негативную ветку на 22-м слое (параметр uncond_skip_layers=[22]), и это не просто экономия: слои 22, 24 и 26 заявлены как дающие лучшую картинку. Если нужен негативный промпт, пропуск отключается передачей пустого списка.

Два прохода на шаг — это нормально
Не пугайтесь, что время генерации вдвое больше ожидаемого: при стандартных настройках CFG 3 модель считает условную и негативную ветки. Полное отключение слоя-пропуска ускоряет работу примерно вдвое, но, по предупреждению авторов, картинка становится «слишком реалистичной» и часть деталей разваливается.

03Путь 1: скрипт на Python

Этот путь даёт полный контроль: можно генерировать пакетами, подставлять раскладки из JSON и вешать модель в свой пайплайн. Зависимости ставятся в отдельное окружение — версии в требованиях свежие, и в системный Python они могут не встать.

Четыре шага до первой картинки
1
Создайте окружение
Нужен Python 3.10 или новее. Отдельный venv избавит от конфликтов с системными пакетами.
terminalcopy
python3 -m venv moss-env
source moss-env/bin/activate
2
Поставьте зависимости
Версии из официальной карточки модели: diffusers 0.38+, transformers 5.3+, accelerate 1.10+.
terminalcopy
pip install "diffusers>=0.38" "transformers>=5.3" \
  "accelerate>=1.10" "safetensors>=0.6" "Pillow>=10"
3
Загрузите пайплайн
Кастомный пайплайн подтягивается из репозитория модели, поэтому trust_remote_code обязателен. VAE держим во float32, остальное — bfloat16.
terminalcopy
import torch
from diffusers import DiffusionPipeline

pipe = DiffusionPipeline.from_pretrained(
    "OpenMOSS-Team/MOSS-Image-SFT",
    custom_pipeline="pipeline_moss_image",
    trust_remote_code=True,
    torch_dtype={"default": torch.bfloat16, "vae": torch.float32},
)
pipe.to("cuda")
4
Сгенерируйте кадр
Размеры кратны 16, шагов не меньше 50. Сид фиксируем, чтобы результат повторялся.
terminalcopy
img = pipe(
    "A minimalist travel poster, cream background, \
blue mountains, title EXPLORE",
    height=1024, width=1024,
    num_inference_steps=50,
    guidance_scale=3.0,
    uncond_skip_layers=[22],
    generator=torch.Generator("cpu").manual_seed(42),
).images[0]
img.save("poster.png")
Не смешивайте типы
Диффузор и энкодер должны быть в bfloat16, VAE — во float32, начальный шум тоже float32. Если поставить всё в bfloat16 «для скорости», декодер начнёт выдавать цветные артефакты. Именно поэтому в примере тип задаётся словарём, а не одним значением.

04Путь 2: нативные ноды ComfyUI

16 октября 2026 поддержку MOSS-Image влили в основную ветку ComfyUI (PR #17095), и это меняет инструкцию: старый плагин из репозитория модели больше не обязателен. Нужен master или nightly с коммитом e087d8f6 или новее — в релизе v0.41.3 поддержки ещё нет, и на нём ноды просто не появятся.

Установка за пять шагов
1
Обновите ComfyUI
Тяните master/nightly и поставьте актуальные зависимости. Проверьте, что в списке нод есть MOSS-Image Layout Prompt.
terminalcopy
cd ComfyUI && git pull && pip install -r requirements.txt
2
Скачайте веса
Три файла из набора Comfy-Org/MOSS-Image: диффузор, текст-энкодер Qwen 3.5 9B и VAE FLUX.2 small.
terminalcopy
huggingface-cli download Comfy-Org/MOSS-Image \
  --include "diffusion_models/*" "text_encoders/*" "vae/*" \
  --local-dir ./moss-files
3
Разложите по папкам
Диффузор в models/diffusion_models, энкодер в models/text_encoders, VAE в models/vae. Имена папок чувствительны к регистру.
terminalcopy
models/diffusion_models/moss_image_sft_int8_convrot.safetensors
models/text_encoders/qwen3.5_9b_w4a8_gptq.safetensors
models/vae/flux2-vae_small.safetensors
4
Соберите граф
Три лоадера: Load Diffusion Model, CLIP Loader с типом moss_image и Load VAE. Для раскладок добавьте ноду MOSS-Image Layout Prompt.
terminalcopy
Load Diffusion Model -> MOSS-Image Layout Prompt
  -> CLIP Loader (moss_image) -> KSampler -> VAE Decode -> Save Image
5
Проверьте shift
Нативная модель уже несёт shift 5. Если правите вручную — только через ModelSamplingAuraFlow с множителем 1, ноду ModelSamplingSD3 из старых воркфлоу не переносите.
terminalcopy
ModelSamplingAuraFlow (multiplier = 1)
Старый воркфлоу не заработает наполовину
Плагинные воркфлоу используют другие лоадеры и другой множитель таймстепов. Замена только лоадера модели оставит рассинхрон по шкале шума — картинка получится шумной или пустой. Импортируйте нативный воркфлоу целиком: он лежит в наборе Comfy-Org как пример и уже настроен на 50 шагов, CFG 3, shift 5 и Euler/sgm_uniform.

05Сколько памяти нужно

Официальных цифр по видеопамяти нет, поэтому считаем от размеров: полный набор в bf16 — 29,7 ГБ, компактный (int8-диффузор плюс 4-битный энкодер) — 13,0 ГБ. К этому добавляются активации и латенты, а при CFG 3 на шаге живут две ветки. Практический вывод: 24 ГБ позволяют работать в компактной сборке с запасом, 12–16 ГБ требуют выгрузки компонентов между CPU и GPU, а на 8 ГБ остаётся только последовательный режим с падением скорости.

Размер файлов: bf16 против int8ГБ на компонент
0 ГБ5 ГБ10 ГБ15 ГБ20 ГБДиффузорЭнкодерVAE10,219,30,25,47,30,2bf16int8 / w4a8
Квантование энкодера в w4a8 сжимает его в 2,6 раза — это самый выгодный шаг. Квантованный диффузор экономит ещё 4,8 ГБ.
Итоговый набор под разные режимыГБ
0 ГБ15 ГБ30 ГБbf16 полностью29,7 ГБint8 + w4a813 ГБтолько диффузор int85,4 ГБ
Если генерировать через API-платформу MOSI, локальные веса не нужны вовсе — там тарифы уточняйте на официальном сайте.
Режим памятиЧто делаетКогда выбирать
GPU residentДержит всю модель на видеокарте24 ГБ и больше — самый быстрый вариант
ComponentПерекидывает компоненты CPU↔GPU по мере надобности12–16 ГБ, скорость падает умеренно
SequentialПоследовательная выгрузка, минимум памяти8–10 ГБ; медленно, но работает
Уменьшить кадр1M пикселей вместо 2MЛюбой режим как дополнительная страховка
Режимы переключаются в расширенных настройках Gradio-интерфейса; в ComfyUI аналог — настройки управления памятью и выгрузка моделей.

06Параметры сэмплинга

Base-версия не дистиллирована по CFG, поэтому настройки влияют на результат сильнее, чем у «ускоренных» моделей. Значения ниже — рекомендации из официального USERGUIDE, а не наши эксперименты.

ПараметрЗначениеКомментарий
Разрешение1M / 1,5M / 2M pxКратно 16; диапазон от 512×512 до 2K
Шаги50 и большеМеньше 50 — хуже текст и мелкие детали
CFG3,0 (диапазон 3–6)Для коротких промптов поднимать
Shift5,0В ComfyUI — через ModelSamplingAuraFlow
СэмплерEulerВ ComfyUI пара Euler + sgm_uniform
Пропуск слоя22Слои 22, 24, 26 дают лучший результат
Рекомендации авторов модели, раздел Inference Parameters.

07Промпты: язык, теги, раскладка

Модель понимает три формата: обычный текст, последовательность тегов и JSON-раскладку. С языком есть важная оговорка — авторы рекомендуют английский (больше всего данных в обучении), китайский поддерживается, прочие языки заявлены как «поддерживаются», но качество внутрикадрового текста на них не гарантируется. Русские надписи на картинке — лотерея: проверяйте каждую генерацию.

Теги ставятся в порядке качество → оценка → мета → год → персонаж → серия → автор → общее. Рабочий негативный набор из документации: nsfw, worst quality, bad anatomy, watermark, jpeg artifact. Переносы строк внутри кавычек модель рендерит как переносы в кадре — это самый надёжный способ управлять вёрсткой надписи.

layout.jsonjson
{
  "summary": {
    "caption": "Minimalist travel poster, cream background, blue mountains, title EXPLORE on top"
  },
  "items": [
    {"label": "text", "text": "EXPLORE",
     "caption": "Large dark-blue uppercase title centered on top",
     "bbox": [-416, -384, -288, 384]},
    {"label": "object",
     "caption": "Flat blue mountain illustration, lower center",
     "bbox": [-192, -288, 384, 288]}
  ],
  "bbox_format": "yxyx",
  "bbox_coord_space": "abs_centralized"
}
Координаты считаются от центра
Формат рамки — [y_min, x_min, y_max, x_max], а начало координат в центре кадра: для 1024×1024 допустимы значения от −512 до +512. Привычные координаты от левого верхнего угла нужно сдвинуть, вычтя половину ширины и высоты. Если рамки «улетели», почти всегда причина в этом.

08Типичные ошибки

СимптомПричинаРешение
ValueError про размерыСторона не кратна 16Округлить до ближайшего кратного 16
Ноды MOSS не появилисьРелиз v0.41.3 без поддержкиMaster/nightly с коммитом e087d8f6+
Кадр шумный или пустойОставлен ModelSamplingSD3ModelSamplingAuraFlow, множитель 1
Цветные артефактыVAE в bfloat16VAE и шум — float32
CUDA out of memorybf16-набор на 12–16 ГБint8 + w4a8 и режим Component
Текст в кадре «плывёт»Короткий промпт, CFG 3Поднять CFG до 4–6, добавить переносы
Собрано из документации и описания нативных нод; для остальных случаев смотрите issues репозитория — их открыто 14 на 21.10.2026.

Частые вопросы

Сколько видеопамяти нужно для MOSS-Image?
Официальных требований OpenMOSS не публикует. По размерам файлов полный набор в bf16 занимает 29,7 ГБ, компактный (int8-диффузор плюс 4-битный энкодер) — 13,0 ГБ, плюс активации. На 24 ГБ работает компактная сборка с запасом, на 12–16 ГБ нужен режим Component, на 8 ГБ — последовательный режим.
Нужен ли плагин Moss-Image для ComfyUI?
С 16 октября 2026 поддержка влита в основную ветку ComfyUI (PR #17095, коммит e087d8f6), поэтому плагин не обязателен. Важно: релиз v0.41.3 поддержки не содержит, нужен master или nightly. Плагин остаётся полезным, если вы хотите грузить diffusers-каталог напрямую.
Можно ли рисовать русский текст на картинке?
Авторы рекомендуют английский: на нём больше данных. Китайский поддерживается целенаправленно, прочие языки — «поддерживаются». Русские надписи получаются нестабильно, поэтому для обложек и постеров надёжнее латиница или постобработка.
Модель правда бесплатная?
Да, веса и код инференса опубликованы под Apache-2.0 — коммерческое использование разрешено без роялти. Платной остаётся только инфраструктура: своё железо или API-платформа MOSI, тарифы которой уточняйте на официальном сайте.
Чем Base отличается от SFT на практике?
Base не дистиллирована по CFG — авторы специально сохранили обучающий сигнал, чтобы сообществу было проще тренировать LoRA. SFT лучше держит группировку текста и раскладку, поэтому для готовых картинок берите SFT, а для своих файнтюнов — Base.

Источники и документация

Итог гайда
8,8/ 10
Запуск занимает полчаса, если сразу взять компактный набор и нативную ветку ComfyUI. Главные грабли — устаревший релиз ComfyUI, перепутанные типы VAE и координаты раскладки от центра кадра.
Нужны модели для своих задач?
В каталоге Qantcore — открытые модели и агенты с оценками по единой методике.