Text-to-Image
Diffusers
Safetensors
Polish
English
AuroraIMG2Pipeline
flow-matching
rectified-flow
diffusion-transformer
polish
bilingual
custom_code

HomeIMG-641M-PL-epoch19

English version

Dwujęzyczny (polsko-angielski) generator obrazów 256×256 trenowany od zera na 8 domowych kartach graficznych: denoiser DiT 641M warunkowany zamrożoną Poziomką-Bazą (polsko-angielski model językowy MoE, 4B) przez trenowalny refiner 72,1M. Rozumie prompty po polsku i po angielsku; na polskich promptach jakość jest prawie taka sama jak na angielskich (FD-DINOv2 29,29 wobec 28,90).

„epoch19”: denoiser trenował łącznie 19 epok, czyli 15 po angielsku ze Slayer149 i 4 dwujęzyczne z Poziomką.

Następca HomeIMG-641M-epoch15 (tylko angielski) i podglądu HomeIMG-641M-PL-stage1.

po polsku po angielsku
po polsku po angielsku

Przykłady

Osiem promptów z poprzednich wydań, po polsku i po angielsku; każdy obrazek z seedem 0, więc para k ma ten sam szum. 50 kroków Eulera, CFG 3,0. Kolejność wierszami:

# po polsku po angielsku
1 rudy lis siedzący w zaśnieżonym lesie o wschodzie słońca, fotografia a red fox sitting in a snowy forest at sunrise, photograph
2 futurystyczna panorama miasta nocą z neonami odbijającymi się w deszczu a futuristic city skyline at night with neon lights reflected in the rain
3 miska świeżych truskawek na drewnianym stole, miękkie naturalne światło a bowl of fresh strawberries on a wooden table, soft natural light
4 akwarela przedstawiająca latarnię morską na skalistym wybrzeżu a watercolor painting of a lighthouse on a rocky coast
5 mały robot czytający książkę w przytulnej bibliotece a small robot reading a book in a cozy library
6 astronauta jadący konno po Księżycu, grafika cyfrowa an astronaut riding a horse on the moon, digital art
7 szyld z neonowym napisem OPEN a street sign that says OPEN in neon letters
8 dwoje dzieci puszczających latawiec na zielonym wzgórzu pod błękitnym niebem two children flying a kite on a green hill under a blue sky

Wyniki

FD-DINOv2 (Stein i in. 2023, niżej znaczy lepiej): odległość Frécheta między cechami CLS DINOv2 obrazów wygenerowanych i prawdziwych. 4096 odłożonych captionów (pierwszy caption pierwszych 4096 obrazów z 4 odłożonych shardów), 50 kroków Eulera, CFG 3,0, stałe seedy, cechy vit_base_patch14_reg4_dinov2.lvd142m; referencja to prawdziwe odłożone latenty zdekodowane tym samym dekoderem FLUX.2. Kolumna PL: te same obrazy, ten sam szum, prompty to polskie tłumaczenia tych samych captionów. Wartości nie są porównywalne z FD-DINOv2 z publikacji.

val/loss: velocity MSE na tych samych 4096 obrazach (angielskie captiony, stały szum i t).

model text encoder val/loss FD-DINOv2 (EN) FD-DINOv2 (PL)
HomeIMG-641M-epoch15 (WSM) Slayer149 + refiner 35,7M 0,6297 27,66 –
HomeIMG-641M-PL-stage1 (EMA) Poziomka + refiner 72,1M 0,6316 – –
HomeIMG-641M-PL-epoch19, wagi EMA Poziomka + refiner 72,1M 0,6284 29,25 29,82
HomeIMG-641M-PL-epoch19 (to repo, WSM) Poziomka + refiner 72,1M 0,6277 28,90 29,29

Względem modelu angielskiego: niższa val/loss, FD-DINOv2 o ~1,2 wyższy na angielskich promptach. Połowa tego treningu szła na polskie prompty, a nowy text encoder trenował łącznie 5 epok zamiast 15.

Architektura

  • Denoiser (641,1M): DiT, 6 bloków o szerokości 2560, 20 głowic (128), SwiGLU 6912, jeden token na piksel latentu (siatka 16×16). Każdy blok: self-attention z RoPE 2D i QK-norm, cross-attention do tekstu (szerokość tekstu 1280), MLP SwiGLU; czas przez adaLN-single w stylu PixArt.
  • Text encoder:
    • Poziomka-Baza, zamrożona: BailingMoeV2, 16 warstw o szerokości 2048, 128 ekspertów; 8 z 32 aktywnych ekspertów na token (ok. 450M aktywnych parametrów; BLiMP 68,3% wobec 68,5% przy 32). Wagi ekspertów w int8 (skala na eksperta i kolumnę, mnożenia w bf16). Cechy tekstu: wyjście ostatniej warstwy.
    • Refiner (72,1M): projekcja 2048 → 1280, 4 dwukierunkowe bloki transformera (szerokość 1280, 20 głowic q / 5 kv, RoPE 1D, SwiGLU 3456), RMSNorm, wyuczony pusty prompt do CFG. Do 255 tokenów promptu.
  • Dekoder (zamrożony): FLUX.2 small decoder, latenty 128×16×16.

Trening

Start: denoiser z HomeIMG-641M-epoch15 (wagi EMA, 15 epok po angielsku ze Slayer149), nowy text encoder.

  • Dane: QLNI/FLUX-Reason-6M-flux2-latents, 5,88 mln obrazów. Dla każdego obrazu losowy caption, w 50% przypadków po polsku (cpral/FLUX-Reason-6M-captions-pl, Index-Translate-2B; ~0,3% tłumaczeń oznaczonych jako wadliwe zastąpiono angielskim oryginałem).
  • Etap 1 (1 epoka, 5 743 kroki × 1024): zamrożony denoiser, trenowany tylko refiner; ~650 obrazów/s, ~2,5 h.
  • Etap 2 (4 epoki, 22 972 kroki × 1024 = 23,5 mln próbek, ok. 11,8 mln polskich promptów): cały model; ~385 obrazów/s, ~17 h.
  • Cel: rectified flow, z_t = (1−t)·x + t·ε, cel ε − x, MSE, t ~ logit-normal(0, 1); 10% promptów zastąpionych pustym.
  • Optymalizator: MuLoCo (DiLoCo z Muonem: 8 replik uśrednianych co 64 kroki), Muon (CMuon, lr 3e-3, momentum 0,95, weight decay 0,01) na macierzach ukrytych, AdamW na reszcie. Bez REPA.
  • Sprzęt: 8× RTX 3090 Ti, bf16. Micro-batche jednego kroku grupowane po długości promptu (Poziomka nie liczy paddingu), eksperci MoE liczeni jednym kernelem Triton.
  • Wydane wagi: WSM (Warmup-Stable-Merge, arXiv:2507.17634): równa średnia ostatnich 5 checkpointów (kroki 19 200–22 972, ostatnie 20% etapu 2), wybrana po val/loss spośród WSM/QAM i EMA.

Kod: https://github.com/adamo1139/trenowanie_generatora_obrazkow

Użycie

Repozytorium jest kompletne: zawiera Poziomkę (text_encoder/, bf16, eksperci w int8, dokładnie w tej postaci, na której trenowano; 4,1 GB) i jej tokenizer. Potrzebne są diffusers z AutoencoderKLFlux2 i ok. 8 GB VRAM:

import torch
from diffusers import DiffusionPipeline

REPO = "cpral/HomeIMG-641M-PL-epoch19"
pipe = DiffusionPipeline.from_pretrained(REPO, custom_pipeline=REPO, trust_remote_code=True).to("cuda")
image = pipe("rudy kot śpiący na parapecie, fotografia", num_inference_steps=50, guidance_scale=3.0,
             generator=torch.Generator("cuda").manual_seed(0)).images[0]
image.save("kot.png")

Prompty po polsku albo po angielsku, do 255 tokenów. Obraz zawsze ma 256×256.

Ograniczenia

  • Model badawczy: tylko 256×256, ok. 6 mln syntetycznych obrazów (FLUX), płytka architektura (6 bloków).
  • Twarze bywają zniekształcone, zwłaszcza w zbliżeniach i małe postacie w kadrze.
  • Rzadsze polskie słowa są czasem rozumiane źle; polskie captiony to tłumaczenia maszynowe modelu 2B.
  • Słabe strony: renderowanie tekstu, dokładność kompozycji, uprzedzenia danych treningowych.

Licencja

Refiner, denoiser i kod: Apache-2.0. text_encoder/ zawiera też wagi Poziomki-Bazy (zamrożone, eksperci przekonwertowani do int8) na jej licencji, openmdw-1.1. vae/: FLUX.2 small decoder © Black Forest Labs, Apache-2.0, bez zmian. Dane mają własne warunki, zobacz karty zbiorów danych.

Downloads last month
16
Safetensors
Model size
0.6B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for cpral/HomeIMG-641M-PL-epoch19

Finetuned
(1)
this model

Datasets used to train cpral/HomeIMG-641M-PL-epoch19

Papers for cpral/HomeIMG-641M-PL-epoch19