요즘엔 4K 이미지에 대한 목표가 없어졌다. 예전엔 그렇게도 생성하고 싶었었는데, 막상 할 수 있게 되고보니 그다지 갈망하지는 않는거 같다.
좀 다른 방법을 소개한다. Tiled Diffusion 플러그인을 사용하는 방법이다. 하는 방법은 아래와 같다.
1. SDUI 에서 Extensions 탭으로 간 후, TiledDiffusion with Tiled VAE manipulations 을 설치한다.
2. txt2img 탭으로 가서 이미지를 생성하기 위한 설정(프롬프트)을 하고, Hires Fix 를 선택한다. 최종 해상도가 4K 이상이 되도록 배율을 선택한다.
3. Tiled VAE 를 선택한다. 최소한 아래와 같은 설정이 필요하고 나머지 2개도 필요하면 체크해준다.
Encoder/Decoder Tile Size 는 가급적 크게 주는게 좋은데, 너무 크게 주면 CUDA error: out of memory 오류가 발생한다. 적당히 크게 세팅하자. 16GB VRAM 의 경우 1536, 96 으로 세팅한다. 8GB VRAM 의 경우 1024, 64 정도면 될것이다. 그 이하의 VRAM 을 사용하면 더 낮게 세팅해도 된다. 최소값은 256, 48 이다.
4. 생성을 눌러 이미지를 생성하자.
콘솔을 보면 아래와 같이 생성되는걸 확인해볼 수 있다.
100%|████████████████████████████████████████| 38/38 [02:51<00:00, 4.52s/it] 100%|████████████████████████████████████████| 76/76 [03:32<00:00, 3.83s/it] [Tiled VAE]: input_size: torch.Size([1, 4, 320, 192]), tile_size: 96, padding: 11 [Tiled VAE]: split to 4x2 = 8 tiles. Optimal tile size 96x96, original tile size 96x96 [Tiled VAE]: Fast mode enabled, estimating group norm parameters on 57 x 96 image [Tiled VAE]: Executing Decoder Task Queue: 100%|███████████| 984/984 [00:04<00:00, 213.04it/s] [Tiled VAE]: Done in 5.675s, max VRAM alloc 3613.766 MB Total progress: 100%|██████████████████████████████| 76/76 [03:41<00:00, 2.92s/it]
Tiled VAE 사용하지 않은 이미지와 사용한 이미지와는 차이나지 않는다.
VRAM 이 부족하지 않아도 이미지 생성시 GPU가 공유 메모리도 사용하고 있다면 Tiled VAE 를 사용해볼만 하다. 상당히 빨라진다. 필자의 경우 4:59 소요되던 스케일링 작업이 Tiled VAE 를 사용하면 3:45 정도 소요된다.