Instructions to use cpral/HomeIMG-641M-PL-epoch19 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use cpral/HomeIMG-641M-PL-epoch19 with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("cpral/HomeIMG-641M-PL-epoch19", dtype=torch.bfloat16, device_map="cuda") prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k" image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- Draw Things
- DiffusionBee
HomeIMG-641M-PL-epoch19
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.
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
Model tree for cpral/HomeIMG-641M-PL-epoch19
Base model
cpral/HomeIMG-641M-epoch15
