Instructions to use cpral/HomeIMG-1.2B-PL-EN-epoch43 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use cpral/HomeIMG-1.2B-PL-EN-epoch43 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-1.2B-PL-EN-epoch43", 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
import torch
from diffusers import DiffusionPipeline
# switch to "mps" for apple devices
pipe = DiffusionPipeline.from_pretrained("cpral/HomeIMG-1.2B-PL-EN-epoch43", dtype=torch.bfloat16, device_map="cuda")
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(prompt).images[0]HomeIMG-1.2B-PL-EN-epoch43
Etap pośredni curriculum: HomeIMG-1.2B-PL-EN-epoch40 (96 px) trenowany dalej przez 3 epoki w 128×128 px. Trzeci krok planu 64 → 96 → 128 → 256 px; następny etap to HomeIMG-1.2B-PL-EN-epoch46 (256 px), który polecamy do użytku.
Nowość: pozycje RoPE w stylu RPE-2D. W poprzednich etapach model w wyższej rozdzielczości rysował wiele kopii sceny albo obiektu. Od tego etapu w treningu każda próbka dostaje losowe pozycje RoPE, a model dostaje też mikro-warunki opisujące crop. Efekt: choć ten model nie trenował w 256 px od 21 epok, w 256 px generuje spójne obrazy z jednym głównym obiektem (zostają drobne powtórzenia, np. dwóch astronautów na koniu, troje dzieci zamiast dwojga, napis powtórzony w kilku wierszach).
„epoch43”: denoiser trenował łącznie 43 epoki: 15 po angielsku ze Slayer149 (256 px), 4 dwujęzyczne z Poziomką (6 bloków, 256 px), 3 dwujęzyczne po powiększeniu do 12 bloków (256 px), 12 w 64 px, 6 w 96 px i 3 w 128 px.
128×128 px (rozdzielczość treningu):
Inne rozdzielczości:
Te same 8 promptów co w poprzednich wydaniach, seed 0 (para k ma ten sam szum), 50 kroków Eulera, CFG 3,0, wagi EMA.
Wyniki
- EMA val/loss w 128 px: 0,6696 (velocity MSE na 4096 odłożonych obrazach, w 128 px), spadała do końca (0,6699 na kroku 4096). Nie jest porównywalna z val/loss w innych rozdzielczościach.
- 256 px: dobre obrazy z drobnymi powtórzeniami (gridy wyżej). 64 px: rozmyte i słabe.
- FD-DINOv2 nie był mierzony.
Trening
- Start: wagi EMA HomeIMG-1.2B-PL-EN-epoch40 (12 bloków, 1235M), do których dodano mikro-warunkowanie (z wyzerowanym wyjściem, więc na starcie model liczył to samo co epoch40).
- Pozycje w stylu RPE-2D: w treningu dla każdej próbki i każdej osi osobno 8 różnych liczb całkowitych z 0–63,
posortowanych; siatka to ich iloczyn kartezjański. Przy generowaniu pozycje są równomierne na tym samym polu 64
(
rope_ref64, pole siatki 64×64 tokenów, czyli 1024 px). - Cropy i mikro-warunkowanie: połowa próbek to losowe okna 128×128 px wycięte z latentów 256 px (wycinek w pełnej skali), druga połowa to cały obraz zmniejszony do 128 px. Model dostaje rozmiar oryginału, ramkę cropa i rozdzielczość docelową (8 liczb w pikselach, sinusoidy jak w SDXL, małe MLP), dodane do embeddingu czasu. To wariant w przestrzeni latentów: publikacja wycina i skaluje obraz przed enkoderem VAE, a nie gotowy latent.
- Dane: QLNI/FLUX-Reason-6M-flux2-latents, 5,88 mln obrazów (latenty 128 px przygotowane z 256 px: pełny dekoder FLUX.2, bicubic z antyaliasingiem, enkoder FLUX.2); captiony w 50% po polsku (cpral/FLUX-Reason-6M-captions-pl).
- Długość: 3 epoki, 4307 kroków × 4096 = 17,6 mln próbek. Trening przerwał pełny dysk przy zapisie kroku 4096; wznowiono go od checkpointu z kroku 3584 ze stanem optymalizatora z kroku 4096.
- Cel: rectified flow,
z_t = (1−t)·x + t·ε, celε − x, MSE, t ~ logit-normal(0, 1), bez przesunięcia harmonogramu; 10% promptów zastąpionych pustym. Bez REPA. - Optymalizator: MuLoCo (8 replik uśrednianych co 64 kroki), Muon (CMuon, lr 3e-3, momentum w bf16, Newton-Schulz co 3. krok), AdamW na reszcie.
- Sprzęt: 8× RTX 3090 Ti, bf16, każda karta trenuje i liczy swoją Poziomkę. Ok. 780 obrazów/s.
Kod: https://github.com/adamo1139/trenowanie_generatora_obrazkow (train_pp.py --res 128 --rope-ref 64 --rope-random --micro-cond 256 --crop-res 256)
Użycie
import torch
from diffusers import DiffusionPipeline
REPO = "cpral/HomeIMG-1.2B-PL-EN-epoch43"
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] # 128x128
image.save("kot.png")
Domyślnie 128×128 px; resolution= przyjmuje inne kwadratowe rozmiary (wielokrotność 16), np. 256. Repozytorium
zawiera Poziomkę (text_encoder/, bf16, eksperci w int8) i jej tokenizer; potrzebne są diffusers z AutoencoderKLFlux2.
Ograniczenia
- Etap pośredni: do generowania lepszy jest epoch46.
- W 128 px jest mało miejsca na detale: twarze, tekst i drobne obiekty są tylko zarysem; tekst w obrazach to bełkot.
- Polskie captiony to tłumaczenia maszynowe modelu 2B; uprzedzenia danych treningowych.
Licencja
Refiner, denoiser i kod: Apache-2.0. text_encoder/ zawiera też wagi
Poziomki-Bazy (zamrożone, eksperci w 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
- 19
Model tree for cpral/HomeIMG-1.2B-PL-EN-epoch43
Base model
cpral/HomeIMG-641M-epoch15




