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

글쓴시간
분류 기술,IT/하드웨어 정보
ASUS P10S-V/4L

사용자 삽입 이미지
ASUS P10S-V/4L 은 C236 칩셋을 사용한 서버용 메인보드다. 워크스테이션용이라기 보다는  서버용이다. PCI 슬롯이 4개나 있어 레거시 기기를 사용하기에 좋고, 1G LAN (인텔 I210 칩셋)포트가 4개 있다. 고성능이 필요한게 아니라, 다양한 레거시 기기를 활용할 수 있는 메인보드다.

사용자 삽입 이미지

출시가격은 24만원 정도. 구형 PCI 슬롯이 있는 제품이지만, C236 칩셋이기 때문에 가격은 비쌌다. Sky Lake 와 Kaby Lake 프로세서 외에 XEON E3 12XX V5, V6 CPU 를 사용할 수 있다. (마더보드의 CPU 호환리스트에는 i5-6500, i7-7700 과 같은 i5 이상의 CPU 가 나와있지 않는데, 사용할 수 있다. 필자가 i7-7700K 이 작동하는걸 확인했다) 또한 XEON CPU를 사용하는 경우, ECC 메모리를 사용할 수 있다.

SATA 슬롯이 8개고 SATA-DOM 도 지원된다.

서버용 마더보드답게 ASPEED 사의 VGA 칩셋(AST1400)이 내장되어있다. (이 칩셋은 서버용 초 저 전력 VGA 칩셋이다. 콘솔용이다) 또한 시리얼 포트를 사용한 콘솔을 지원한다. 오디오 기능은 없다. 랙마운트 서버에 사용할 때, 바람이 원활히 불도록 CPU 소켓, 전원 커넥터, 메모리 위치가 변경되어있다.

캐패시터 색상이 금색이다. 뭔가 멋쩌 보인다. 65도에서 136.9년이라는 수명이라고 한다. 초크 모양도 맘에 든다. CPU 전원부는 4 Phase 으로 고효율 전원부라 발열이 적다.

사용자 삽입 이미지





무엇보다 압도적인건 BIOS 들어가보고 놀랬다. 설정할 수 있는게 굉장히 많다. 어쨌든 C236 칩셋이라 풀 스펙이긴 하니 말이다.

Z270 보드 사려고 당근 기웃거리다가 마침 싸게 있길래 재미삼아 구매했다. 1 만냥에 구매했다. 이 마더보드는 현재 3만냥 정도에 판매되고 있다. 다행이 잘 작동한다. 메모리 슬롯 정상, PCIe x16 포트 정상이다.

사용자 삽입 이미지

이제 XEON CPU 를 사야 하남. 문제는 E3 계열 XEON CPU중에서 V5, V6 는 잘 안팔렸기 때문에 구할 수 있을지 모르겠다. (E3 CPU 는 C2XX 보드에서만 사용 가능했기 때문에 많이 안 팔렸다) 그냥 i5-7500 정도 선에서 하나 구할 생각도 하고 있다.
글쓴시간
분류 기술,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 정도 소요된다.