Открытая text-to-image модель MOSS-Image весит 27 ГБ в bf16 и ужимается до 13 ГБ в квантованных файлах. Разбираем два пути запуска — скрипт на Python и нативные ноды ComfyUI — и считаем память по реальным размерам файлов.
К концу гайда у вас будет рабочая установка MOSS-Image на своём GPU: либо скрипт на Python, который генерирует картинку 1024×1024 за 50 шагов, либо ComfyUI с нативными нодами и раскладкой по папкам models/. Второй путь удобнее для повседневной работы, первый — для автоматизации и пакетной генерации.
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.
| Компонент | Файл в наборе | bf16 | int8 |
|---|---|---|---|
| Диффузионный трансформер | moss_image_sft_bf16 / _int8_convrot | 10,2 ГБ | 5,4 ГБ |
| Текст-энкодер Qwen 3.5 9B | qwen3.5_9b_bf16 / _int8_convrot | 19,3 ГБ | 9,8 ГБ |
| Текст-энкодер, 4-битный | qwen3.5_9b_w4a8_gptq | — | 7,3 ГБ |
| VAE (FLUX.2 small) | flux2-vae_small | 0,25 ГБ | 0,25 ГБ |
| LoRA управления глубиной цвета | moss_image_color_depth_control | 0,31 ГБ | — |
Ключевая деталь: по умолчанию на каждом шаге считается две ветки — условная и негативная, то есть трансформер прогоняется дважды. Авторы предлагают обнулять негативную ветку на 22-м слое (параметр uncond_skip_layers=[22]), и это не просто экономия: слои 22, 24 и 26 заявлены как дающие лучшую картинку. Если нужен негативный промпт, пропуск отключается передачей пустого списка.
Этот путь даёт полный контроль: можно генерировать пакетами, подставлять раскладки из JSON и вешать модель в свой пайплайн. Зависимости ставятся в отдельное окружение — версии в требованиях свежие, и в системный Python они могут не встать.
python3 -m venv moss-env source moss-env/bin/activate
pip install "diffusers>=0.38" "transformers>=5.3" \ "accelerate>=1.10" "safetensors>=0.6" "Pillow>=10"
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")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")16 октября 2026 поддержку MOSS-Image влили в основную ветку ComfyUI (PR #17095), и это меняет инструкцию: старый плагин из репозитория модели больше не обязателен. Нужен master или nightly с коммитом e087d8f6 или новее — в релизе v0.41.3 поддержки ещё нет, и на нём ноды просто не появятся.
cd ComfyUI && git pull && pip install -r requirements.txt
huggingface-cli download Comfy-Org/MOSS-Image \ --include "diffusion_models/*" "text_encoders/*" "vae/*" \ --local-dir ./moss-files
models/diffusion_models/moss_image_sft_int8_convrot.safetensors models/text_encoders/qwen3.5_9b_w4a8_gptq.safetensors models/vae/flux2-vae_small.safetensors
Load Diffusion Model -> MOSS-Image Layout Prompt -> CLIP Loader (moss_image) -> KSampler -> VAE Decode -> Save Image
ModelSamplingAuraFlow (multiplier = 1)
Официальных цифр по видеопамяти нет, поэтому считаем от размеров: полный набор в bf16 — 29,7 ГБ, компактный (int8-диффузор плюс 4-битный энкодер) — 13,0 ГБ. К этому добавляются активации и латенты, а при CFG 3 на шаге живут две ветки. Практический вывод: 24 ГБ позволяют работать в компактной сборке с запасом, 12–16 ГБ требуют выгрузки компонентов между CPU и GPU, а на 8 ГБ остаётся только последовательный режим с падением скорости.
| Режим памяти | Что делает | Когда выбирать |
|---|---|---|
| GPU resident | Держит всю модель на видеокарте | 24 ГБ и больше — самый быстрый вариант |
| Component | Перекидывает компоненты CPU↔GPU по мере надобности | 12–16 ГБ, скорость падает умеренно |
| Sequential | Последовательная выгрузка, минимум памяти | 8–10 ГБ; медленно, но работает |
| Уменьшить кадр | 1M пикселей вместо 2M | Любой режим как дополнительная страховка |
Base-версия не дистиллирована по CFG, поэтому настройки влияют на результат сильнее, чем у «ускоренных» моделей. Значения ниже — рекомендации из официального USERGUIDE, а не наши эксперименты.
| Параметр | Значение | Комментарий |
|---|---|---|
| Разрешение | 1M / 1,5M / 2M px | Кратно 16; диапазон от 512×512 до 2K |
| Шаги | 50 и больше | Меньше 50 — хуже текст и мелкие детали |
| CFG | 3,0 (диапазон 3–6) | Для коротких промптов поднимать |
| Shift | 5,0 | В ComfyUI — через ModelSamplingAuraFlow |
| Сэмплер | Euler | В ComfyUI пара Euler + sgm_uniform |
| Пропуск слоя | 22 | Слои 22, 24, 26 дают лучший результат |
Модель понимает три формата: обычный текст, последовательность тегов и JSON-раскладку. С языком есть важная оговорка — авторы рекомендуют английский (больше всего данных в обучении), китайский поддерживается, прочие языки заявлены как «поддерживаются», но качество внутрикадрового текста на них не гарантируется. Русские надписи на картинке — лотерея: проверяйте каждую генерацию.
Теги ставятся в порядке качество → оценка → мета → год → персонаж → серия → автор → общее. Рабочий негативный набор из документации: nsfw, worst quality, bad anatomy, watermark, jpeg artifact. Переносы строк внутри кавычек модель рендерит как переносы в кадре — это самый надёжный способ управлять вёрсткой надписи.
{
"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"
}| Симптом | Причина | Решение |
|---|---|---|
| ValueError про размеры | Сторона не кратна 16 | Округлить до ближайшего кратного 16 |
| Ноды MOSS не появились | Релиз v0.41.3 без поддержки | Master/nightly с коммитом e087d8f6+ |
| Кадр шумный или пустой | Оставлен ModelSamplingSD3 | ModelSamplingAuraFlow, множитель 1 |
| Цветные артефакты | VAE в bfloat16 | VAE и шум — float32 |
| CUDA out of memory | bf16-набор на 12–16 ГБ | int8 + w4a8 и режим Component |
| Текст в кадре «плывёт» | Короткий промпт, CFG 3 | Поднять CFG до 4–6, добавить переносы |