Дообучення Stable Diffusion методом LoRA

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1564 послуг
Дообучення Stable Diffusion методом LoRA
Середній
~2-3 дні
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1348
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1247
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    949
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1183
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    642
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    921

Fine-tuning Stable Diffusion через LoRA

Ви витратили тижні на збір датасету з 200 зображень в унікальному стилі, але повний fine-tuning SDXL потребує 24 GB VRAM і займає години. LoRA (Low-Rank Adaptation) вирішує цю проблему: адаптер важить 10–150 MB, навчається за 30–120 хвилин на звичайній RTX 3090 і легко комбінується з іншими LoRA. Економія часу сягає 80%, а витрати на GPU знижуються до 90% — повний fine-tuning SDXL коштує $500-1000 за запуск, тоді як LoRA — $50-200. Ми використовуємо цей підхід у всіх проектах з персоналізації генерації зображень — від стилів художників до каталогів товарів. Навчання LoRA коштує від 50 до 200 доларів, що в 5-10 разів дешевше повного fine-tuning і забезпечує економію $450-800 на один запуск.

Чому LoRA є найкращим вибором для дообучення Stable Diffusion?

Метод fine-tuning lora змінює лише дельта-матриці ваг, а не всю модель, як описано в оригінальній роботі LoRA: Low-Rank Adaptation of Large Language Models. Завдяки низькоранговому розкладу (SVD) кількість параметрів, що навчаються, скорочується в 1000+ разів порівняно з повним fine-tuning. Це дає три ключові переваги: мінімальний розмір файлу (10–150 MB), швидке навчання (30–120 хв) і можливість комбінувати до 5 LoRA одночасно з різними вагами. LoRA краще DreamBooth в 2-3 рази за швидкістю навчання та в 10 разів менша за розміром. Для порівняння: DreamBooth вимагає зберігати повну модель (6–7 GB) і не підтримує композицію стилів. При комбінуванні кількох LoRA досягається якість, недоступна одній моделі. Використання LoRA для SD (Stable Diffusion) дозволяє швидко персоналізувати генерацію.

Параметр DreamBooth LoRA
Змінює Всю модель Тільки дельта-матриці
Розмір результату 6–7 GB 10–150 MB
Час навчання 30–60 хв 30–120 хв
Комбінування Ні До 5 LoRA одночасно
Застосування Одна модель Будь-яка сумісна

Як ми навчаємо LoRA для ваших завдань: покрокова інструкція

  1. Аналіз завдання та датасету. Визначаємо цільовий стиль або об'єкт, мінімальну кількість референсів (20–200 зображень). Оцінюємо якість: зображення мають бути різноманітними, щоб уникнути перенавчання (overfitting).
  2. Підготовка зображень. Очищення, кроп, автопідпис за допомогою BLIP captioning. Для підписів використовуємо тригерне слово, що прискорює підготовку в 5 разів. Важливо: датасет має містити не лише однотипні фото, інакше модель не зможе генералізувати.
  3. Налаштування гіперпараметрів. Встановлюємо rank (16–64) і alpha (половина rank), learning rate (1e-4), кількість епох (10–20). Rank 32 — універсальний вибір для більшості завдань. Для складних стилів збільшуємо rank до 64, для простих — 16. Ми також використовуємо градієнтне накопичення (gradient accumulation) для ефективного використання пам'яті при великих batch sizes та оптимізатор AdamW з планувальником швидкості навчання (cosine scheduler). Ці техніки підвищують стабільність навчання та якість LoRA-адаптерів.
  4. Навчання. Запускаємо процес на GPU з 10+ GB VRAM, використовуючи інструмент kohya lora — kohya-ss/sd-scripts. Навчання 1000 кроків на RTX 3090 займає 20–40 хвилин. Застосовуємо регуляризацію (weight decay) для запобігання перенавчанню.
  5. Тестування та ітерація. Генеруємо 50+ промптів, підбираємо ваги при комбінуванні кількох LoRA. При необхідності коригуємо датасет і перенавчаємо. Фіксуємо демо-приклади та документацію.

Приклад налаштування для kohya-ss/sd-scripts (конфігурація для навчання LoRA для SDXL):

# kohya-ss/sd-scripts — стандарт навчання LoRA
git clone https://github.com/kohya-ss/sd-scripts
cd sd-scripts
pip install -r requirements.txt

python train_network.py \
    --pretrained_model_name_or_path="stabilityai/stable-diffusion-xl-base-1.0" \
    --dataset_config="dataset.toml" \
    --output_dir="./lora_output" \
    --output_name="my_style_v1" \
    --network_module="networks.lora" \
    --network_dim=32 \
    --network_alpha=16 \
    --learning_rate=1e-4 \
    --max_train_epochs=10 \
    --train_batch_size=2 \
    --save_every_n_epochs=2 \
    --mixed_precision="fp16" \
    --xformers
dataset.toml (натисніть для перегляду)
[general]
shuffle_caption = true
caption_dropout_rate = 0.05

[[datasets]]
resolution = 1024
batch_size = 2

  [[datasets.subsets]]
  image_dir = "./training_images"
  caption_extension = ".txt"
  num_repeats = 10

Автоматичний підпис зображень за допомогою BLIP captioning

from transformers import BlipProcessor, BlipForConditionalGeneration
from PIL import Image
import os

processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-large")
caption_model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-large")

def auto_caption_dataset(
    images_dir: str,
    trigger_word: str = "mystyle",
    style_suffix: str = "in the style of mystyle"
) -> None:
    for img_file in os.listdir(images_dir):
        if not img_file.endswith((".jpg", ".png", ".webp")):
            continue

        img = Image.open(os.path.join(images_dir, img_file)).convert("RGB")
        inputs = processor(img, return_tensors="pt")
        caption = processor.decode(
            caption_model.generate(**inputs, max_new_tokens=50)[0],
            skip_special_tokens=True
        )

        full_caption = f"{trigger_word}, {caption}, {style_suffix}"

        txt_path = os.path.join(images_dir, img_file.rsplit(".", 1)[0] + ".txt")
        with open(txt_path, "w", encoding="utf-8") as f:
            f.write(full_caption)

Комбінування кількох LoRA для складних сцен

from diffusers import StableDiffusionXLPipeline
import torch

pipe = StableDiffusionXLPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    torch_dtype=torch.float16
).to("cuda")

pipe.load_lora_weights("style_lora.safetensors", adapter_name="style")
pipe.load_lora_weights("character_lora.safetensors", adapter_name="character")

pipe.set_adapters(["style", "character"], adapter_weights=[0.7, 0.5])

image = pipe(
    "mystyle character, cinematic scene, detailed background",
    guidance_scale=7.5,
    num_inference_steps=30
).images[0]

Які типові приклади використання LoRA?

Для стилю LoRA художника потрібно 50–200 зображень в цільовому стилі — LoRA SD відтворює його на нових промптах. Наприклад, для стилю «кіберпанк-арт» достатньо 80 зображень з високим rank (64). Для конкретного продукту потрібно 20–50 фото товару з підписами — LoRA генерує товар в різних сценах. Ми застосовували такий підхід для каталогу меблів: одна LoRA замінила 3 години ручного фотозйомки. Для персонажа (аніме або гра) — 30–100 зображень персонажа, LoRA відтворює його в різних позах. Комбінуючи з LoRA стилю, створюємо унікальні арти.

Що входить в роботу з дообучення SD через LoRA

Етап Опис Результат
Аналіз завдання Визначаємо цільовий стиль/об'єкт, кількість референсів Технічне завдання
Підготовка датасету Очищення, кроп, автопідпис BLIP 20–200 розмічених зображень
Навчання LoRA rank 16–64, 500–2000 кроків на GPU .safetensors файл
Тестування Генерація 50+ промптів, підбір ваг Демо-приклади
Документація Інструкція з використання LoRA markdown-файл

Терміни і вартість

Орієнтовні терміни: навчання однієї LoRA (1000 кроків на RTX 3090) — 20–40 хвилин. Повноцінний сервіс з користувацьким навчанням — 3–4 тижні. Вартість розраховується індивідуально, орієнтовний діапазон — $300-1000 за одну LoRA. Зв'яжіться з нами, оцінимо ваш проект безкоштовно.

Наш досвід: понад 5 років в AI/ML, десятки успішних проектів з fine-tuning для різних галузей. Гарантуємо якість навчання та підтримку всіх популярних моделей: SDXL, SD 1.5, SD 3, FLUX.1. Отримайте консультацію — допоможемо підібрати оптимальні параметри навчання під ваш датасет.

Генеративний AI розробка: від промпта до production API

Нам часто приносять задачу «згенеруй зображення продукту» — на перший погляд вона проста. Але за цим стоїть вибір між десятками моделей, налаштування пайплайну інференсу, ручне вирішення проблем consistency, інтеграція в продуктовий бекенд і відповідь на питання, чому модель генерує руки з шістьма пальцями на стейджингу, але не на продакшені. Розберемо напрямки, з якими ми працюємо.

Генерація зображень: від промпта до production API

Актуальний ландшафт — FLUX.1 [dev/schnell/pro] від Black Forest Labs та Stable Diffusion 3.5. FLUX.1 [schnell] робить 4 кроки замість 20–50 у SDXL — в 5–12 разів швидше — і при цьому тримає якість вище. На A100 80GB — 1.2–1.8 с на зображення 1024×1024 при batch_size=4.

Типова проблема при розгортанні: FLUX.1 [dev] потребує 24+ GB VRAM в fp16. На A10G 24GB влізає в обріз, при batch_size>1 — OOM. Рішення: torch_dtype=torch.bfloat16 + enable_model_cpu_offload() з diffusers, або квантизація через bitsandbytes в NF4 — падіння якості мінімальне, споживання пам'яті знижується до 12–14 GB.

ControlNet і IP-Adapter — ключові інструменти для production-задач, де потрібна керованість. ControlNet з Canny/Depth/Pose картою дає структурний контроль. IP-Adapter (особливо IP-Adapter-FaceID) дозволяє переносити identity персонажа на генерації — це основа для персоналізованого контенту.

Кейс: e-commerce фото-зйомка. Рітейлер з 8000 SKU потребував lifestyle-фото для кожного продукту. Пайплайн: сегментація продукту (Segment Anything Model 2) → видалення фону → inpainting FLUX.1 [dev] з product image як IP-Adapter reference → upscale через RealESRGAN_x4plus. Вартість генерації на орендованих A100 значно нижча порівняно з професійною зйомкою, економія багатократна. Throughput — 200 зображень/год на 2× A100. Багаторічний досвід 30+ проектів гарантує, що ми оберемо оптимальну модель під ваше завдання — оцінку можна отримати на старті.

Чому вибір моделі — лише половина успіху?

Fine-tuning під конкретний стиль або персонаж

Dreambooth і LoRA — стандарт для адаптації під конкретний візуальний стиль або об'єкт. LoRA навчається за 2–4 години на 20–30 референсних зображеннях на одному A100. Rank 16–32 зазвичай достатньо для стилю, rank 64+ потрібен для точного відтворення облич.

Часта помилка: навчати LoRA занадто довго — модель перенавчається на референси, втрачає здатність до варіативності. Ознака: на cfg_scale=7 всі зображення схожі на copy-paste референсу. Лікується ранньою зупинкою (зазвичай 1500–2000 кроків для 20 зображень) та prior_preservation_loss.

Для більш глибокої кастомізації — full fine-tuning через diffusers + accelerate з FSDP на декількох GPU. Але це вже 40–80 годин навчання і потрібен дійсно великий датасет (1000+ зображень).

Порівняння підходів до генерації зображень

Модель Швидкість (1024×1024, A100) Якість (CLIP score) Керованість (ControlNet, IP-Adapter) VRAM (fp16)
Stable Diffusion 3.5 2.0–3.5 с 0.28–0.31 через ControlNet (дозволено) 16–20 GB
FLUX.1 [schnell] 0.8–1.2 с 0.30–0.33 обмежена (без ControlNet) 12–14 GB (4‑кроковий)
FLUX.1 [dev] 3–5 с (50 кроків) 0.32–0.34 через IP-Adapter, ControlNet (адаптер) 24+ GB
Midjourney (API) 5–10 с (черга) 0.31–0.33 промпт + style reference не потрібно

Які моделі кращі для генерації відео?

Модель Доступність Довжина Роздільна здатність Керованість
Sora (OpenAI) API (обмежений) до 60 с 1080p промпт, image-to-video
Wan2.1 (Alibaba) open weights до 81 кадр 720p промпт, I2V, V2V
CogVideoX-5B open weights 6 с 720p промпт, I2V
Kling 1.6 API до 30 с 1080p промпт, I2V
Mochi-1 open weights 5.4 с 480p промпт

Open-weight відеомоделі поки відстають від комерційних за стабільністю та довжиною. Wan2.1 — найкращий вибір для self-hosted: 14B параметрів, працює на 2× A100, дає прийнятну якість для коротких кліпів.

Головний біль відеогенерації — temporal consistency: персонаж змінює колір одягу на третій секунді, об'єкт «пливе». Часткове рішення — генерація з motion_bucket_id і noise_aug_strength в Stable Video Diffusion, або використання I2V (image-to-video) замість чистого text-to-video. Як зазначається в дослідженні VideoPoet, consistency досягається за рахунок навчання на довгих послідовностях.

AnimateDiff залишається робочим інструментом для коротких петель та motion-ефектів поверх SD/FLUX. Не Sora, але деплоїться локально і передбачуваний.

Генерація музики та аудіо

AudioCraft від Meta (MusicGen + AudioGen) — production-готовий стек для музичної генерації. musicgen-large (3.3B) генерує 30 с музики за ~8 с на A100. Керування через текстовий промпт та melody conditioning — можна задати мелодію наспівуванням.

Stable Audio Open від Stability AI — альтернатива з довжиною до 47 с, краща керованість структурою (intro/verse/chorus). Деплой аналогічний: diffusers + FastAPI.

Для voice-over та озвучки — ElevenLabs API або self-hosted XTTS v2 (див. послугу Speech AI). Для sound design та foley — AudioGen.

3D-генерація: практичний стан

3D-генерація все ще не дісталася тієї ж зрілості, що 2D. Але для конкретних задач інструменти вже робочі:

TripoSG та Shap-E — text/image-to-3D. Shap-E від OpenAI генерує прості 3D-меші за секунди, але геометрія грубувата. TripoSG дає більш детальні результати, але потребує постпроцесінгу (ремешинг, UV-розгортка).

Wonder3D та Zero123++ — реконструкція 3D з одного зображення. Працюють через генерацію multi-view (6–8 видів) та подальше 3D-відновлення через NeuS або instant-ngp.

Gaussian Splatting (3DGS) — не генерація, а реконструкція з серії фото/відео. Для товарних карток та нерухомості це вже production: 50–200 фото → 3DGS модель за 15–30 хв на RTX 4090 → інтерактивний 3D-в'ювер в браузері.

Інфраструктура та деплой

Для генеративних моделей критично:

  • Черга задач — Celery + Redis або Ray Serve. Синхронний HTTP для генерації зображень неприйнятний при >5 конкурентних запитах.
  • Кешування — схожі промпти дають схожі результати. Семантичний кеш через ембеддінги (faiss + sentence-transformers) може знизити навантаження на GPU на 20–40%.
  • Моніторинг якості — CLIP score для text-image alignment, FID для оцінки розподілу генерацій. Інтеграція в MLflow або Weights & Biases.
  • Зберігання — згенеровані зображення одразу в S3/MinIO, не на диску сервера інференсу.

Що входить в роботу (deliverables)

Ми беремо проект під ключ — від вибору моделі до деплою та моніторингу. В результат входить:

  • Модель (або API-інтеграція) з бенчмарками продуктивності (latency p99, throughput).
  • Документація пайплайну (prompt engineering guide, model card, версії залежностей).
  • Інтеграція з вашим бекендом (REST/gRPC, черги).
  • Налаштований моніторинг (дашборди, алерти по дрейфу якості).
  • Навчальний воркшоп для команди (2–4 години).
  • Гарантійна підтримка 3 місяці після запуску — в рамках сертифікату якості на нашу роботу.

Історично ми виконали 30+ проектів в генеративному AI — це дає нам право гарантувати результат.

Як будується процес розробки генеративного AI?

  1. Аналітика (1–2 дні): аудит поточної архітектури, уточнення use case, вибір моделей та метрик успіху. Оцінюємо проект безкоштовно.
  2. Proof of Concept (1–3 тижні): швидкий прототип на ваших даних — щоб бачити реальну якість, а не демо з блогу.
  3. Проектування (1–2 тижні): архітектура пайплайну, інфраструктура (GPU-кластер/API), план A/B-тестування.
  4. Реалізація та fine-tuning (4–12 тижнів): розробка, навчання LoRA/full fine-tuning, інтеграція з чергою та кешем.
  5. Тестування (1–2 тижні): навантажувальні тести, валідація метрик, перевірка на edge-case (негативні сценарії).
  6. Деплой та моніторинг (1–2 тижні): розгортання на production, налаштування моніторингу, документування.
Що ми перевіряємо на етапі Proof of Concept
  • Відповідність очікувань та реальної якості генерації (CLIP score, user study).
  • Швидкість інференсу при різних batch_size та типах GPU.
  • Ймовірність токсичних/некоректних генерацій — перевірка safety filters.
  • Можливість масштабування: чи буде модель вивозити пікове навантаження.

Строки орієнтовно

Інтеграція готового API (DALL‑E 3, Midjourney API, Stability API) — 1–2 тижні. Self-hosted пайплайн з fine-tuning — 6–12 тижнів. Повна платформа з UI, чергами та моніторингом — 3–6 місяців. Конкретна вартість розраховується індивідуально після аналізу вашого сценарію.

Зв'яжіться з нами — замовте консультацію, і ми підберемо оптимальну архітектуру для вашого проекту. Отримайте попередню оцінку термінів безкоштовно.