윈디하나의 누리사랑방. 이런 저런 얘기

글쓴시간
분류 기술,IT/스테이블 디퓨전
SDXL 으로 생성할 때의 표준 해상도이다.

SDXL 은 다양한 해상도를 가진 이미지로 학습되어있는데, 이 해상도의 기준이 1024 x 1024 이다. 또한 내부적으로 64px 의 디멘션을 사용하기 때문에, 해상도는 64의 배수가 되어야 한다.

학습한 해상도인 1024 x 1024 가 가장 좋고, 512 ~ 1536 사이의 값으로 64 의 배수값으로 사용한다. 전체 픽셀수는 1.04M (1,090,519) 을 넘어서는 안된다.

보통 이미지는 아래 해상도로 생성하면 된다.

해상도      픽셀수    비율    
---------- --------- -------------
1344 x 768 1,032,192 1.75:1 16:9
1216 x 832 1,011,712 1.46:1 3:2
1152 x 896 1,032,192 1.28:1 4:3
1024 x 1024 1,048,576 1.00:1 1:1
1536 x 640 983,040 2.40:1 2.39:1

가로/세로를 바꿔서 생성해도 된다. 비율은 16:9 비율이 약 1.77:1 비율임을 생각하면 된다. 참고로 2.39:1 은 시네마스코프 비율이다.

필자의 경우 768 x 1344 를 선호한다. 16:9 에 가장 가깝기 때문에 그렇다. 두번째로는 832 x 1216 을 사용한다. 대략 3:2 비율이기 때문이다.

SDXL 은 생성할 이미지의 비율에 따라 이미지의 구도가 달라지기 때문에, 생성해보다가 구도가 맞지 않으면 다른 걸 사용해도 된다.

아래 이미지를 보자.

사용자 삽입 이미지

1536 x 640


사용자 삽입 이미지

1344 x 768


사용자 삽입 이미지

1216 x 832


사용자 삽입 이미지

1152 x 896


사용자 삽입 이미지

1024 x 1024


모두 동일한 프롬프트와 시드에서, 해상도만 변경해서 생성한 이미지다. 머리 모양과 흩날리는 정도가 이미지 비율에 따라 변경되는걸 볼 수 있다.
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - VAE FP16 vs FP32

SDXL 에서 VAE 는 FP32 으로 사용하곤 한다. FP16 으로 된 VAE 라도, FP32 으로 변환해서 사용한다. 이렇게 하는 이유가 SDXL 의 경우 VAE 를 사용해 이미지를 변환할 때, NaN 오류가 많이 발생하기 때문이다.

- 그래서 필자도 Stable Diffusion webUI (SDUI) 에서 --no-half-vae 옵션을 주어 사용했다. 이렇게 하면 NaN 이 발생하지 않아 이미지가 검게 생성되는 현상을 없앨 수 있었다. 반대로 이 옵션을 주지 않으면, 매우 자주 발생한다.

여태까지 --no-half-vae 옵션을 주면서 사용하다가, 최근에 이에 대한 패치가 나온걸 알 았다. VAE 에 대한 FP16  FIX 이다. SDXL-VAE-FP16-Fix 에 나와있는

https://huggingface.co/madebyollin/sdxl-vae-fp16-fix/resolve/main/sdxl.vae.safetensors

을 다운로드 받아 사용하면 된다.

- VAE를 받아 SDUI 의 VAE 디렉토리에 넣고 이 VAE 를 사용하도록 세팅한다. 그리고 --no-half-vae 옵션을 사용하고 SDUI 를 실행해보면, 이미지 생성시 아래와 같이 메모리 사용량이 줄어드는걸 볼 수 있다.

사용자 삽입 이미지

SDXL 에서 FP16 VAE 으로 세팅하고 이미지를 생성시 전용 GPU 메모리 사용량



사용자 삽입 이미지

SDXL 에서 FP32 VAE 으로 세팅하고 이미지를 생성시 전용 GPU 메모리 사용량


FP32 VAE 사용시 마지막 단계에서 FP32 VAE 를 사용하기 위해 메모리 사용량이 급격히 (2배) 늘어나는걸 볼 수 있다. 이미지 품질에는 영향이 없기 때문에 FP16을 사용할 수 있으면 사용해야 한다.

- 시간과 메모리 사용량은 아래와 같이 비교된다.

FP32 VAE: 생성시간 4 min. 18.3 sec. A: 8.37 GB, R: 26.08 GB, Sys: 16.0/15.9961 GB (100.0%)
FP16 VAE: 생성시간 3 min. 49.4 sec. A: 5.22 GB, R: 9.99 GB, Sys: 11.2/15.9961 GB (69.8%)

- 또한 HiResFix 나 Upscale 작업시에는 VRAM 이 부족한 경우가 많다. 부족한 경우 Tiled VAE 를 사용할 수도 있지만, FP16을 사용할 수도 있을것 같다. 아니면 두가지 모두 사용하거나 말이다.

- FP16 VAE 를 사용해서 문제가 생기면(검은색 이미지가 생성되면) SDUI 의 아래 옵션을 체크해보자. NaN 이 발생하는 경우 자동으로 BF16이나 FP16으로 변환해 사용한다. BF16 을 사용하는 경우 GPU 에서 지원하는지 반드시 확인해야 한다. 잘 모르겟으면 해제하면 된다.

☑ Automatically convert VAE to bfloat16
☑ Automatically revert VAE to 32-bit floats

- FP16 VAE 설명을 보면, NaN 이 자주 발생하는건 일부 활성화 값이 너무 크기 때문이라고 한다. 이 값을 조절하기 위해 몇가지 작업을 했다고 한다.

사용자 삽입 이미지

활성화 값이 큰 예시

글쓴시간
분류 기술,IT
VRAM 8G 이하의 GPU

남는 PC에서 Stable Diffusion 1.5 를 원활히 돌리기 위해 8G 이하의 GPU 를 구매하려 한다. 중고로 5만원 정도에 SD1.5 에 사용할 수 있는 쓸만한 4G VRAM 을 가진 GPU 를 구매하는게 목표다. 아직은 그이상 투자하려는건 아니다.

VRAM  10xx    16xx  20xx   30xx  40xx  50xx
4G 1050Ti 1650
6G 1060 1660 2060 3050
8G 1070 2060S 3050 4060 5050

- 2025.03.05 현재 가격. 중고 업자에게 구매할 수 있는 가격이며, 직거래하는 경우 더 저렴한 가격에 구매할 수 있다.

모델   VRAM TGP  CUDA FP32   PRICE     VARIATION
------ ---- ---- ---- ------ --------- ---------------------------
1050Ti 4G 75W 768 2.138T 9만 중고
1650 4G 75W 896 2.984T 11만 중고 GDDR6, TU106, TU116, 1650S
1060 6G 120W 1280 4.375T 13만 중고 3G, 5G, GDDR5, GDDR5X
1660 6G 120W 1408 5.027T 16만 중고 1660S, 1660Ti
2060 6G 160W 1920 6.451T 19만 중고 12G
2060S 8G 175W 2176 7.181T 25만 중고
3050 6G 70W 2304 6.774T 25만
3050 8G 130W 2560 9.098T 32만 GA107 (115W)
4060 8G 115W 3072 15.11T 45만 Ti
5050 8G 100W 2560 12.90T 250$ (예상)

※ 1650 은 기본 모델은 추가 전원 핀이 없지만, TU106, TU116 을 사용한 후기 버전은 추가 전원핀이 있고 전력을 더 소모한다. 이건 장단점이 있는데, 필자처럼 마더보드의 전력을 끌어 쓰지 않도록 구성하는걸 선호하는 경우에는 오히려 좋다. 마더보드의 전력은 CPU와 메모리에 집중해야 한다.

사용자 삽입 이미지

PALIT GeForce RTX™ 3050 KalmX 6GB. 3050 에서 유일한 무소음이다.



※ 글을 쓰다보니 3050이 눈에 보인다. 이건 중고가격도 15만원대다. 3050 은 3가지 버전이 있다.

- 3050 8G (GA106, 130W, 2560, 9.098T, 8핀) * 2022.01 출시
- 3050 8G (GA107, 115W, 2560, 9.098T, 6핀) * 2022.12 출시. MSI 에서 주로 출시했다.
- 3050 6G (GA107, 70W, 2304, 6.774T, X) * 2024.02 출시

3050 8G 인데 115W 인 GPU 가 있어서 찾아봤다. 주로 MSI 에서 발매한 기종으로 아래와 같다. 단종/판매중이라고 쓴 제품은 실제 우리나라에서 수입된 제품이다.

Colorful iGame RTX 3050 Ultra W DUO OC V2 (2팬, 249mm) 단종
Colorful Tomahawk RTX 3050 DUO V2         (2팬, 255mm) 단종
MSI RTX 3050 AERO ITX OCV1                (1팬, 168 mm)
MSI RTX 3050 AERO ITX V1                  (1팬, 168 mm)
MSI RTX 3050 VENTUS 2X OCV1               (2팬, 236 mm) 단종
MSI RTX 3050 VENTUS 2X V1                 (2팬, 236 mm)
MSI RTX 3050 VENTUS 2X XS                 (2팬, 205 mm)
MSI RTX 3050 VENTUS 2X XS OC              (2팬, 205 mm) 판매중. DVI 커넥터가 있다.

사용자 삽입 이미지

MSI RTX 3050 VENTUS 2X OCV



쓰고보니 3050이 좋아보인다. 에혀.

----

2025.03.10 수정
생각을 바꿨다. SDXL 까지 되는걸로 해야겠다. 지금 최소 필요한 용량을 확인해보고 있는 중이다. Tiled VAE 사용해도 최소 6GB 는 필요할 것으로 생각한다.
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion WebUI 4K 이미지 생성 - Tiled VAE 사용

요즘엔 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 정도 소요된다.
글쓴시간
분류 기술,IT
소프트웨어 업그레이드로 인한 CPU 발열 증가

- Ubuntu 22.04 -> 24.04 으로 업그레이드 했다.

사용자 삽입 이미지

- 이때문에 Stable Diffusion WebUI도 다시 설치하고, nVidia 드라이버를 다시 설치했는데 실행하고 보니 발열이 많아졌다.

상세하게 말하자면, GPU 의 발열은 줄었는데, CPU 의 발열은 늘었다.

GPU: 80°C -> 75°C
CPU: 70°C -> 80°C

- nVidia GPU 드라이버는 570.86 으로 변경했다. 현재 최신버전이다.

- Stable Diffusion WEBUI 에서의 PyTorch 와 CUDA 버전도 2.1.2+cu121 -> 2.3.1+cu121 으로 달라지긴 했다. 옵션은 동일하다. 메모리도 45% 정도 사용하던게 50% 정도 사용하고 있다.

뭔가 CPU에서 발열이 더 일어나고 있고, GPU 에서 발열이 적게 일어나는식으로 튜닝이 된 느낌이다. 마치, AVX2 를 사용하는 것 처럼 말이다. ( Intel® Core™ i7-7700K 발열 참조 )  문제는 CPU가 그것때문에 80도가 "유지"된다는거. 순간적으로는 100°C 으로도 올라가는거 같다. 수냉 쿨러를 점검해봤지만 이상 없었다.

- 이미지 생성이 느려진다는건 아니라서 그냥 쓰고는 있는데 뭔가 찜찜하긴 하다. 예정에도 없던 수냉 쿨러 바꿀 준비 해야할지도 모르겠다.
글쓴시간
분류 기술,IT/스테이블 디퓨전
3.1 절기념 한복 그림

3.1 절이기도 해서 한복 비슷한 그림으로 그려보았다. 요맘때랑 광복절때 한복을 그려야 겠다는 생각을 한다.

현재 AI 에서는 우리나라 전통 한복을 완전하게 그리지는 못한다. (아마 앞으로도 완전하게는 못그릴거 같다) 특히 옷 매듭이 어렵고, 윗 저고리도 한복처럼 잘 안나온다. 어딘가 일본의 기모노와 중국의 한푸, 치파오가 섞여있는 느낌이다.

생성한 것 중 그나마 비슷하다고 생각되는 걸로 골라 올린다. 오늘 하루종일 이 이미지만 생성한거 같다. CIVITAI 에 올려놓은 한복 LoRA를 사용해 생성했다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 노을 2

후면 이미지로도 생성해보았다. 오히려 뒷 모습을 그리는게 옷이 휘날리는 프롬프트에 더 부합하는 느낌이다.

실제 이런 옷을 볼 수는 없겠지만 언젠가 비슷한 거라도 있었으면 한다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지
글쓴시간
분류 기술,IT
윈도 11 전각/반각 문자 입력

윈도 11을 사용하다 보면 키보드로 문자를 입력할 때 전각 문자로 변경되는 경우를 경험할 수 있다. 전각 문자란, 높이/너비가 같은 문자로, 이런 용어가 한자문화권에 있다. 바꿔말하면 영문자에 비해 폭이 두배 정도 되는 문자다.

※ 반각 문자
windy.luru.net

※ 전각문자
windy.luru.net

해결방법은 아래와 같다.

1. 아래한글을 사용하는 경우 IME 를 확인해보자. "한"을 클릭하면 자판배열을 변경할 수 있는 창이 나온다. "Microsoft 입력기"를 선택한다.
사용자 삽입 이미지

2. Microsoft 입력기인데도 전각으로 입력되면 Alt + = 를 눌러 전각/반각을 전환하면 된다.
윈도 오른쪽 아래의 "가" 또는 "A" 아이콘을 눌러 문자너비 → 반자를 선택하면 된다.

사용자 삽입 이미지
글쓴시간
분류 기술,IT/하드웨어 정보
3RSYS L600/L610 측면 스토리지 파트

L610 케이스에 3.5인치 하드디스크를 추가 할 수 있는 부품을 주문했다. "측면 스토리지 파트"라고 부르는데 3RSYS 의 L600, L610 케이스에서 HDD 를 더 장착할 수 있도록 해주는 부품이다.

L610 케이스에 하드 디스크 장착하라고 되어있는, 케이스 하단에 있는 하드 디스크 장착 부품과 같은거다.  따라서 이 부품엔 2.5 인치 SSD도 장착 할 수 있다.

L610에는 총 4개의 파트를 추가할 수 있는데, 파트당 2개씩 HDD를 장착할 수 있다. 따라서 4개의 파트를 추가하게 되면, 원래있던 1개의 파트에 장착할 수 있는 2개의 HDD를 포함해, 총 10개의 HDD 를 장착할 수 있게 된다. 빅 타워 케이스를 제외하고는 이렇게 많은 HDD를 장착할 수 있는 케이스가 흔하진 않다.

사용자 삽입 이미지

3RSYS L600/L610 측면 스토리지 파트



스토리지 파트는 흰색과 검은색이 있는데, 흰색으로 주문했다. 케이스가 흰색이 더 많이 팔렸을 것이라 흰색 재고가 항상 별로 없다. 마침 4개 재고가 있길래 바로 주문했다. 개당 4000원이다.

HDD 를 4개 설치할 것이라 필요한 파트는 2개였지만, 막상 설치하고 보니 4개 주문하길 잘했다.  하나의 파트에 HDD를 2개 설치하기가 쉽지가 않다. 케이블간의 간격도 좁아져서 연결하기 힘들고, 케이스와도 간섭이 있는 경우가 있다. 그래서 그냥 파트마다 1개씩 넣어서 편하게 조립했다.

사용자 삽입 이미지

"측면 스토리지 파트"는 L610의 측면 패널에 다는 것이기 때문에, 측면 패널에 팬을 달 수 없다. 아쉽긴 하다.

하드 디스크용 나사도 필요한 만큼 동봉되어있는데, 하드 디스크마다 6개씩 나사를 사용하지는 않아서, 나사에 제법 여유가 있다.

----

글쓴시간
분류 기술,IT
nVidia RTX 50시리즈 문제

원래 제품이 나오면 초반에는 이슈가 있곤 했습니다. 특히 GPU는 드라이버 이슈가 많았죠. 게다가 RTX 4090 나올 때에는 전원부가 타버리는 이슈가 있었습니다. 하지만 이번엔 전원부가 타버리는 것 외에도 조금 특이한게 더 있네요.

사용자 삽입 이미지

50xx 칩의 ROP 모듈이 스펙보다 적게 나온 경우가 있다고 합니다. 5090, 5080, 5070 전부 해당된다고 합니다. ROP 모듈이 적게 들어가면 게임할때 눈에 띄게 성능이 떨어집니다. 5% 정도 차이난다고 하네요. 어쨌든 스펙보다 잘못된거기 때문에 이런 제품은 교환해준다고 합니다.

ROP(Raster Operations Pipeline)는 GPU에서 픽셀의 색상을 처리하는 핵심 요소로, ROP의 개수는 성능에 직접적인 영향을 줍니다. ROP를 거친 데이터는 프레임 버퍼에 모이고 바로 모니터로 출력됩니다.

             5090 5080 5070Ti 5070
ROP 176 112 96 64
비정상 ROP 168 104 88 -

불량품은 ROP가 8개 부족합니다. 이게 칩 제조단계에서 걸러지지 않았다는게 더 의아할 뿐입니다. 5070Ti 까지 발견되었으며, 5070 에서는 불량 보고가 없네요.

어차피 못 사는 제품이긴 하지만, 조금 아쉽네요. 현재 블랙웰 아키텍처를 사용한 GPU는 PCIe 를 사용한 제품이 50 시리즈 밖에 없습니다. 예전에 썼던 GB200 은 플랫폼으로 판매하는 거라 PCIe 를 사용하지 않습니다. 즉 데이터센터에서 사용할 수 있는 PCIe 제품은 H100 까지입니다. 블랙웰은 발열이 많아서 공랭으로는 어렵다고 하네요. 반드시 수랭을 써야 한다는거 같네요. 에혀.

이번 5090 도 기존보다 발열은 제법 있습니다. 그냥 성능 향상분 만큼의 발열이 있다고 생각하면 쉬울거 같네요.

어서 안정화 되고 어서 32 GB 이상 메모리를 가진 저렴한 모델이 나왔으면 좋겠네요. 그래야 업스케일 없이 4K 이미지를 만들 수 있을 것 같네요.