Instructions to use cpral/HomeIMG-1.2B-PL-epoch40 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use cpral/HomeIMG-1.2B-PL-epoch40 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-epoch40", 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-epoch40", 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-epoch40
Etap pośredni curriculum: HomeIMG-1.2B-PL-epoch34 (64 px) trenowany dalej przez 6 epok w 96×96 px. To drugi krok planu 64 → 96 → 128 → 256 px.
Ten model jest przeznaczony do 96×96 px. Do 256 px używaj HomeIMG-1.2B-PL-epoch22; 256 px wróci w kolejnych etapach.
Nowość: interpolacja pozycji RoPE (rope_ref 64). Pozycje tokenów obrazu są skalowane tak, że w każdej
rozdzielczości obraz pokrywa to samo pole 64 pozycji na bok, czyli pole siatki 64×64 tokenów z 1024 px (token i na
boku z n tokenów ma pozycję (i + 0,5)·64/n − 0,5; w 96 px odstęp między tokenami to ok. 10,7, w 256 px 4, w 1024 px
1). W poprzednich etapach pozycje były całkowite, więc w wyższej rozdzielczości model widział pozycje, których nie znał
z treningu w niskiej, i powtarzał scenę kilka razy na obrazku. Przy tym samym polu kolejne etapy (128, 256 px, a później
nawet 1024–2048 px) tylko zagęszczają siatkę.
„epoch40”: denoiser trenował łącznie 40 epok: 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 dwujęzycznych w 64 px i 6 dwujęzycznych w 96 px.
96×96 px (rozdzielczość treningu):
Inne rozdzielczości (dla porównania):
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 96 px: 0,7021 (velocity MSE na 4096 odłożonych obrazach, w 96 px). Spadała jeszcze na końcu (0,7025 na kroku 8192). Nie jest porównywalna z val/loss w innych rozdzielczościach (0,7568 w 64 px dla epoch34, 0,6170 w 256 px dla epoch22).
- Inne rozdzielczości (gridy wyżej):
- 64 px: poprawne, choć mniej szczegółów niż w 96 px.
- 128 px: kompozycja zwykle trzyma się promptu, ale obiekty są mniejsze, a sceny bardziej „oddalone” niż w 96 px; czasem pojawia się kilka kopii obiektu (np. robot, latawce).
- 256 px: nie do użytku. Scena wciąż się powtarza, jak w epoch34: obiekty rozpadają się na wiele małych kopii (kilkanaście robotów, latawców, lisów), a fotografie mają smugi. Interpolacja pozycji RoPE tego nie usunęła; 256 px wymaga treningu w 128 i 256 px.
- FD-DINOv2 nie był mierzony.
Trening
- Start: wagi EMA HomeIMG-1.2B-PL-epoch34 (12 bloków, 1235M).
- Dane: QLNI/FLUX-Reason-6M-flux2-latents, 5,88 mln obrazów, przeskalowanych do 96×96 px (latent 256 px → pełny dekoder FLUX.2 → bicubic z antyaliasingiem → enkoder FLUX.2, latent 6×6×128). Captiony w 50% po polsku (cpral/FLUX-Reason-6M-captions-pl).
- Długość: 6 epok, 8613 kroków × 4096 = 35,3 mln próbek. Kroki 0–2559 z całkowitymi pozycjami RoPE, od kroku
2560 trening wznowiony z checkpointu z
rope_ref64 (strata wróciła do poprzedniego poziomu w kilkaset kroków). - 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: jak w epoch34: 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ę (captiony pakowane bez paddingu). Ok. 900–1000 obrazów/s, ok. 10 h.
Kod: https://github.com/adamo1139/trenowanie_generatora_obrazkow (train_pp.py --res 96 --rope-ref 64, prepare_lowres.py)
Użycie
import torch
from diffusers import DiffusionPipeline
REPO = "cpral/HomeIMG-1.2B-PL-epoch40"
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] # 96x96 px
image.save("kot.png")
Domyślnie pipeline generuje 96×96 px (rozdzielczość treningu) z rope_ref 64 zapisanym w configu. Parametr
resolution= przyjmuje inne kwadratowe rozmiary (wielokrotność 16). Repozytorium zawiera Poziomkę (text_encoder/,
bf16, eksperci w int8) i jej tokenizer; potrzebne są diffusers z AutoencoderKLFlux2.
Ograniczenia
- Etap pośredni, 96×96 px. To checkpoint curriculum, a nie model do generowania w zwykłej rozdzielczości.
- W 96 px jest mało miejsca na detale: twarze, tekst i drobne obiekty są tylko zarysem.
- 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
- 28
Model tree for cpral/HomeIMG-1.2B-PL-epoch40
Base model
cpral/HomeIMG-641M-epoch15






