File size: 5,456 Bytes
b421b6a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# Redrob Image

[English](./README.md)

**Redrob Image**๋Š” [Redrob](https://redrob.io)์˜ ์˜คํ”ˆ์›จ์ดํŠธ ํ™•์‚ฐ ๋ชจ๋ธ์ด๊ณ , [์ด์žฅํ›ˆ (Janghoon Lee)](https://www.janghoonlee.com)๊ฐ€ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

Redrob์˜ ๋น„์ „์€ AI๋ฅผ ๋ฏผ์ฃผํ™”ํ•˜๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ์š”. ์ด ๋ชจ๋ธ์€ [Apache License 2.0](./LICENSE) ์•„๋ž˜์—์„œ ๋ฌด๋ฃŒ๋กœ ์“ฐ๊ณ , ์ƒ์—…์ ์œผ๋กœ๋„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

## ์™œ ์ด ๋ชจ๋ธ์ธ๊ฐ€

- ๋ฒ ์ด์Šค๋ณด๋‹ค ํ˜„์‹ค์ ์ธ ์ชฝ์œผ๋กœ ๋งž์ท„์Šต๋‹ˆ๋‹ค. ํ”ผ๋ถ€, ๋น›, ์งˆ๊ฐ์ด ๋‚ซ๊ณ , ํ”Œ๋ผ์Šคํ‹ฑํ•œ AI ํ”ผ๋ถ€ ํ‹ฐ๊ฐ€ ๋œํ•ฉ๋‹ˆ๋‹ค.
- ์‚ฌ์ง„, ํฌํŠธ๋ ˆ์ดํŠธ, ๋ถ„์œ„๊ธฐ ์ด๋ฏธ์ง€์—์„œ ๊ฐ•ํ•ฉ๋‹ˆ๋‹ค.
- Turbo ์Šคํƒ€์ผ ์ƒ˜ํ”Œ๋ง์ด๋ผ DiT ๊ธฐ์ค€ ์•ฝ 8์Šคํ…์ž…๋‹ˆ๋‹ค.
- Diffusers๋กœ ๊ทธ๋ƒฅ Python์—์„œ ๋Œ๋ฆฌ๊ฑฐ๋‚˜, ComfyUI์—์„œ๋Š” ๋จธ์ง€๋œ UNET ํ•˜๋‚˜๋กœ ์”๋‹ˆ๋‹ค.
- Apache-2.0: ์‚ฌ์šฉ, ์ƒ์—… ์ด์šฉ, ์žฌ๋ฐฐํฌ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

## ํ•œ๊ณ„

์ฝํžˆ๋Š” ํ…์ŠคํŠธ๋Š” ์•ฝํ•ฉ๋‹ˆ๋‹ค. ํ•œ๊ธ€, ๋ฐ๋ฐ”๋‚˜๊ฐ€๋ฆฌ, ๋น„๋ผํ‹ด ์Šคํฌ๋ฆฝํŠธ ๋Œ€๋ถ€๋ถ„๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํ…์ŠคํŠธ๊ฐ€ ์ค‘์š”ํ•œ ํ™”๋ฉด์€ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ๋นผ๋Š” ๊ฒŒ ๋งž๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”ฝ, ์ธ์‡„, ํƒ€์ดํฌ ์ค‘์‹ฌ ์ž‘์—…๋„ ์‚ฌ์ง„/ํฌํŠธ๋ ˆ์ดํŠธ๋ณด๋‹ค ์•ฝํ•ฉ๋‹ˆ๋‹ค.

Turbo ์ƒ˜ํ”Œ๋ง์€ classifier-free guidance ์—†์ด ๋•๋‹ˆ๋‹ค (`guidance_scale=0` / ComfyUI `cfg 1`). ๊ทธ๋ž˜์„œ **๋„ค๊ฑฐํ‹ฐ๋ธŒ ํ”„๋กฌํ”„ํŠธ๋Š” ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค**. ํ”ผํ•˜๊ณ  ์‹ถ์€ ๊ฑด ํฌ์ง€ํ‹ฐ๋ธŒ ์ชฝ์— ๋„ฃ์œผ์„ธ์š”.

## ๋น ๋ฅธ ์‹œ์ž‘ (Diffusers / Python)

์—”ํ„ฐํ”„๋ผ์ด์ฆˆยทํ”„๋กœ๋•์…˜ ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค. Hugging Face ์—…๋กœ๋“œ์— `transformer/`๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์œผ๋ฉด, ๊ทธ Diffusers transformer๋ฅผ ๋กœ๋“œํ•˜๊ณ  ํ…์ŠคํŠธ ์ธ์ฝ”๋” / VAE๋Š” ๋ฒ ์ด์Šค ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

```bash
pip install -U torch transformers accelerate safetensors
pip install -U diffusers
```

```python
import torch
from diffusers import ZImagePipeline, ZImageTransformer2DModel

transformer = ZImageTransformer2DModel.from_pretrained(
    "redrob-labs/redrob-image",
    subfolder="transformer",
    torch_dtype=torch.bfloat16,
)

pipe = ZImagePipeline.from_pretrained(
    "Tongyi-MAI/Z-Image-Turbo",
    transformer=transformer,
    torch_dtype=torch.bfloat16,
)
pipe.to("cuda")

prompt = "A documentary portrait in natural window light, shallow depth of field"
image = pipe(
    prompt=prompt,
    height=1024,
    width=1024,
    num_inference_steps=9,  # DiT forward 8ํšŒ
    guidance_scale=0.0,     # Turbo์—์„œ ํ•„์ˆ˜
    generator=torch.Generator("cuda").manual_seed(42),
).images[0]
image.save("redrob-image.png")
```

์ž‘์€ GPU๋ฉด `pipe.enable_model_cpu_offload()`๋ฅผ ์“ฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

## ๋น ๋ฅธ ์‹œ์ž‘ (ComfyUI)

| ํŒŒ์ผ                              | ์œ„์น˜                       | ์ถœ์ฒ˜                                                                      |
| --------------------------------- | -------------------------- | ------------------------------------------------------------------------- |
| `redrob-image.safetensors`        | `models/diffusion_models/` | ์ด ์ €์žฅ์†Œ                                                                 |
| `qwen_3_4b_fp8_mixed.safetensors` | `models/text_encoders/`    | [Comfy-Org/z_image_turbo](https://huggingface.co/Comfy-Org/z_image_turbo) |
| `ae.safetensors`                  | `models/vae/`              | ๊ฐ™์€ Comfy-Org ํŒฉ                                                         |

1. `UNETLoader` -> `redrob-image.safetensors`
2. `CLIPLoader` -> `qwen_3_4b_fp8_mixed.safetensors` (`type: lumina2`)
3. `VAELoader` -> `ae.safetensors`
4. ์ƒ˜ํ”Œ๋Ÿฌ: **8 steps**, **cfg 1**, `res_multistep` / `sgm_uniform`

์ตœ์†Œ ๊ทธ๋ž˜ํ”„๋Š” `workflows/redrob-image-api.json`์ž…๋‹ˆ๋‹ค. ๋„ค๊ฑฐํ‹ฐ๋ธŒ ์ปจ๋””์…”๋‹์€ `ConditioningZeroOut`์œผ๋กœ ๋น„์›๋‹ˆ๋‹ค. ๋„ค๊ฑฐํ‹ฐ๋ธŒ ํ…์ŠคํŠธ๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ”๊ฟ€ ๊ฑฐ๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€ ๋งˆ์„ธ์š”.

## ํŒŒ์ผ

| ๊ฒฝ๋กœ                              | ์—ญํ•                                   |
| --------------------------------- | ------------------------------------- |
| `redrob-image.safetensors`        | ComfyUI ๋จธ์ง€ UNET (LFS, ~12 GiB)      |
| `transformer/`                    | Diffusers ๋ ˆ์ด์•„์›ƒ (HF ์—…๋กœ๋“œ ์‹œ ์ƒ์„ฑ) |
| `workflows/redrob-image-api.json` | ์ตœ์†Œ ComfyUI API ๊ทธ๋ž˜ํ”„               |
| `README.md` / `README.ko.md`      | ๋ชจ๋ธ ์นด๋“œ (์˜์–ด / ํ•œ๊ตญ์–ด)             |
| `LICENSE`                         | Apache License 2.0                    |
| `NOTICE`                          | ์ถœ์ฒ˜ ํ‘œ๊ธฐ                             |

`transformer/`๋Š” git์— ์—†์Šต๋‹ˆ๋‹ค. Hugging Face ์—…๋กœ๋“œ ๋•Œ `scripts/push_hf.sh`๊ฐ€ Comfy UNET์„ Diffusers ํฌ๋งท์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜, ๋ฏธ๋ฆฌ ๋งŒ๋“  `TRANSFORMER_DIR`์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋กœ์ปฌ์—์„œ Comfy UNET์„ ์ง์ ‘ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด:

```bash
python scripts/comfy_to_diffusers_zimage.py \
  --input redrob-image.safetensors \
  --output-dir transformer/
```

## ๋ผ์ด์„ ์Šค

[Apache License 2.0](./LICENSE). ์ €์ž‘๊ถŒ์€ [Redrob](https://redrob.io). ์ œ์ž‘์€ [์ด์žฅํ›ˆ (Janghoon Lee)](https://www.janghoonlee.com). ์—…์ŠคํŠธ๋ฆผ ํ‘œ๊ธฐ๋Š” [NOTICE](./NOTICE). ์žฌ๋ฐฐํฌํ•  ๋•Œ๋Š” NOTICE๋ฅผ ๊ฐ€์ค‘์น˜์™€ ํ•จ๊ป˜ ์œ ์ง€ํ•˜์„ธ์š”.

## ์ €์ž‘ / ์ถœ์ฒ˜

- **์ €์ž‘๊ถŒ:** Redrob ([redrob.io](https://redrob.io))
- **์ œ์ž‘:** [์ด์žฅํ›ˆ (Janghoon Lee)](https://www.janghoonlee.com) ([@savagemanage](https://github.com/savagemanage))
- **์ €์žฅ์†Œ:** [redrob-labs/redrob-image](https://huggingface.co/redrob-labs/redrob-image)
- **๋ฒ ์ด์Šค:** [Tongyi-MAI/Z-Image-Turbo](https://huggingface.co/Tongyi-MAI/Z-Image-Turbo) - Apache License 2.0