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

글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - FP16 을 사용한 사진 네장

FP16 을 사용해서 생성했다. FP32 를 사용한 것과 차이는 느껴지지 않는다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지
글쓴시간
분류 기술,IT
nVidia FP16,  FP32, FP64 성능

사용자 삽입 이미지


nVidia 제품에서, FP32 와 FP16 성능이 얼마나 차이나는지 확인해보려다가, 이왕 하는거 CUDA 가 들어있는 세대부터 FP16, FP32, FP64 성능을 정리해봤다. 기준이 되는 모델은 각 세대의 xx60 모델이다. 단위는 Flops 으로 GPU Database | TechPowerUp 에 나와있는걸 인용했다. 이 수치는 레퍼런스 스펙을 가질때의 이론상의 스펙이다. G 는 Giga, T 는 Tera 의 약어로 1T Flops = 1000G Flops 이다. flops 는 FLoating point Operations Per Second 의 약어로, 1초동안 수행할 수 있는 부동소수점 연산의 개수를 의미한다.

Product     Code name    CUDA FP16          FP32        FP64            FP32향상비율
----------- ------------ ---- ------------- ----------- -------------- -----------
8600 Tesla x 92.80G x
9600 x 278.4G x 3.00
260 x 476.9G 59.62G (1:8) 1.71
460 Fermi 2.1 x 907.2G 75.60G (1:12) 1.90
560 x 1,089G 90.72G (1:12) 2.28
660 Kepler 3.0 x 1.981T 82.56G (1:24) 1.82
760 x 2.378T 99.07G (1:24) 1.20
960 Maxwell 5.2 x 2.413T 75.39G (1:32) 1.01
1060 6G Pascal 6.1 68.36G (1:64) 4.375T 136.7G (1:32) 1.81
1660 Turing 7.5 10.05T (2:1) 5.027T 157.1G (1:32) -
2060 12G 14.36T (2:1) 7.181T 224.4G (1:32) 1.64
3060 12G Ampere 8.6 12.74T 12.74T 199.0G (1:64) 1.77
4060 Ada Lovelace 8.9 15.11T 15.11T 236.2G (1:64) 1.18

참고
3060 Ti Ampere 8.6 16.20T 16.20T 253.1G (1:64)
4060 Ti 16G Ada Lovelace 8.9 22.06T 22.06T 344.8G (1:64) 1.36
3070 8.6 20.31T 20.31T 317.4G (1:64)
4070 8.9 29.15T 29.15T 455.4G (1:64) 1.43

가장 처음 CUDA 를 선보인건 GeForce 8000번대 제품 부터다. 이때에는 FP32 만 지원되었다. 이후 200번대에 와서 FP64가 지원되고, 이후 1000 번대부터 부터 FP16이 지원되었다. FP16은 AI 연산에서 사용된다.

올해 7월 출시 예정인 4060으로 변경할 생각은 있긴 한데 VRAM 이 12GB 이 나오지 않는다고 한다. 이렇게 되면 4060Ti 16GB 모델로 변경해야할것 같다. 어쨌든 같은 성능에 전력소모는 확 줄어들것이기 때문에 쓰긴 써야 한다고 생각한다. 게임하는데에는 안좋지만 말이다. 하나 더 걸리는게 4060을 사용해도 예상대로라면 2060 FP16보다 1.35배 성능이 빨라진다. 가격은 1.35배 차이가 아닐 것 같은데 말이다. 에혀.

지금은 Stable Diffusion 실행시킬 때 FP32 을 사용하고 있지만, 이 표를 보니 FP16 써야 할것 같다. 지금 사용하고 있는 2060은 FP16 연산 능력이 FP32에 비해 2배 빠르기 때문이다. 또한 FP16으로 실행하면, 12GB VRAM 으로도 4K 이미지를 생성할 수 있을것 같기도 하고 말이다.

----

Stable Diffusion - FP16, FP32 성능

----

2023.04.17

RTX2060 12GB에서 FP16으로 이미지를 생성하고 있긴 하지만, 4K 이미지는 생성 못하고 있다. VRAM 메모리 부족때문이다. 뭔가 방법을 찾는 중.

----

2023.09.28

4K 이미지는 Upscaler 사용해서 생성하고있다.
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - R-ESRGAN General 4xV3 스케일 업

매일매일 그림 생성하는 작업. 물론 다른일도 병행하고 있다. 단지 배치 돌려두고 다른 일 하다가 생성된 그림 검토하고, 맘에 드는건 스케일 업 해서 블로그에 게시한다.

생각외로 스케일 업이 쉽지 않다. 몇 번은 시도해봐야 하고, 다양하게 파라메터를 줘야 성공하는듯.

스케일 업할 때 자주 사용하는 옵션은 R-ESRGAN General 4xV3 이고 Upscale by 2, Denoising strenth 0.4 이다. 나머지는 기본값으로 사용한다.

사용자 삽입 이미지

사용자 삽입 이미지
글쓴시간
분류 기술,IT/하드웨어 정보
3RSYS L610 Quiet 화이트

사용자 삽입 이미지

도저히 GPU 온도를 잡을 수가 없어서 결국 케이스 변경했다. 가격은 101,000 냥. 택배 2,500 별도다.

GPU 에서 발산하는 185 W 발열을 효과적으로 배출하는게 불가능했다. 공기순환 자체가 안되더라. 팬을 몇개 더 달아봤지만 안되었고, 결국 케이스 교체. 교체후에는 85도 육박하는 GPU 온도가 75도 정도로 내려갔다. 여태까지 케이스가 오래되고 낡아서 교체한경우는 있어도 발열때문에 교체한적은 없었다. 이런 경우는 처음이기도 하다.

사용자 삽입 이미지

나중에 수직 장착도 할 생각이라 수직 장착 지원되는 제품으로 골랐다. 하단 파워 서플라이와, 측면 흡/배기구도 고려했다.

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

Stable Diffusion - SD 2.1  Replicant-V1.0 사진 #2

미세조정 중. 일부 키워드는 아예 먹히지 않는게 있다. 그래도 맘에 드는거 5장 추려서 올린다.

요즘에 사용하는 이미지 생성 방식은, 960 x 540 또는 540 x 960 크기의 그림을 스텝 20 정도로 100장 이상 배치로 생성한 후, 그중에 맘에 드는 구도가 있으면 동일한 설정으로 2배 스케일링 해서 뽑는다. 지금 사용하는건 스케일링 모델은 "R-ESRGAN General 4xV3" 인데, 나름 괜찮다. 스케일링하다가 심하게 깨지면 Denoising strength 를 0.5 이하로 줄여서 (기본값은 0.7이다) 다시 해보면 거의 원본대로 확대된다.

이미지의 메타 태그를 읽으면 프롬프트를 볼 수 있다.

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지



글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - SD 2.1  Replicant-V1.0 사진

요즘에 주로 사용하는 모델이 Stable Diffusion 2.1 768 기반의 Replicant-V1.0 이라는 모델이다. SD 2.1 기반이라서 그런지 꽤 좋다. WD 1.5 Beta2 기반이라고 하는데, 나중에 WD 정식버전 나오면 갱신될거라 생각한다.

SD 1.x 버전과 SD 2.x 버전의 차이는 꽤 크다. 몇일전에 Unclip 버전이 나오기도 했는데 아직 사용하보진 못했다. 조만간 사용해볼 예정.

VRAM 이 많으니 1080p 이미지도 생성 가능한게 좋다. 하루에 1000장은 뽑는듯.

이미지 프롬프트는 이미지 파일 안에 있다.  PNG 메타태그 리더에서 읽어올 수 있다.

사용자 삽입 이미지

사용자 삽입 이미지
글쓴시간
분류 기술,IT/하드웨어 정보
nVidia GeForce RTX 2060 - GPU-Z

사용자 삽입 이미지


Stable Diffusion (SD) 을 원활히 실행시키기 위해 GPU 업그레이드. RTX 2060 12GB 으로 샀다. 이 제품이 12GB VRAM 을 가진 가장 저렴한 모델일 것이다. 당근에서 20만냥. 일단 급하니 좀 비싼감이 있어도 그냥 샀다. SD 할건데 1, 2만냥에 기다리고 싶지는 않다. 게다가 12GB 버전은 중고로 잘 안나오기도 하고 말이다. 다행이도 양품이다.

사용자 삽입 이미지

스펙의 일부는 2060s 와 같다. GPU 클럭은 1680MHz 으로 30MHz 오버되어있다. 1650MHz 이 기본이다.

제품명     FP32CC:TC:TMU:ROP VRAM MEM BUS TGP  출시    중고(만원)
---------  ----------------- ---- ------- ---- ------- ----------
2070 2304:288:144:64 8GB 256bit 175W 2018.10 23
2060s      2176:272:136:64   8GB 256bit 160W 2019.07 20
2060 12GB  2176:272:136:48   12GB 192bit 185W 2021.12 20
2060       1920:240:120:48   6GB 192bit 160W 2019.01 18
ROP(Render Output Unit)개수가 적으면 렌더링 성능이 떨어지기 때문에 게임 할때는 성능이 낮아진다. 따라서 스펙으로 미루어보건데, 2060 12GB 의 용도는 바로 AI 라는 의미다. 게임을 위해서는 2060과 성능 동일하니 비싼돈 들여 12GB 를 살 필요는 없다. 2060s 사야 한다.

12GB 모델의 TGP(Total Graphic Power) 가 메모리가 많아서 더 높다. 25W 차이라면 무시 못하는 수준이다. 그만큼 발열에 좀 더 신경써야 한다.

또한 2060 12GB 모델은 2021.12.07에 출시한 터라 3년 A/S 기간을 감안하면 12GB 모델은 A/S 기간이 남아있다. 그래서 구매한거기도 하다. 제조사도 2060을 제조한 노하우가 쌓여있던터라 발열 이슈가 없다. 특히 20시리즈 출시초기 화면에 ㅇㅈ 처럼 생긴 문자가 뜨면서 화면이 꺼지는 (즉 GPU 가 고장나는) 현상이 꽤 많이 보고되었기 때문에, 오래된걸 구매하기는 꺼려진다.

SD 이미지 생성시에는 아래와 같이 풀로드가 걸린다. 그리고 GPU 온도가 85도까지 오르고 케이스 내부를 뜨겁게 만든다. 이 영향을 받아 CPU도 70도 넘게 나온다. TDP 180W 가 괜히 그런게 아닌 셈. 2060에는 8핀 보조 전원이 필요하니 말이다. 파워는 650W 급을 쓰고 있으니, 조만간 케이스 교체가 필요할것 같다.

사용자 삽입 이미지

풀 로드가 걸리지만 왠지 작업관리자에서는 GPU 로드가 보이질 않는다. 모니터가 RTX 2060 에 연결된게 아니라, 마더보드에 연결되어있기 때문에 보이지 않는다.

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

업그레이드한 기념으로 SD 2를 사용해 보았다. 업그레이드 하기 전에는 사용하지 못했다. VRAM 부족으로 말이다.

샘플 이미지대로 프롬프트 넣고 만들었다. PNG 파일에 프롬프트 들어있으니 읽으면 된다. 비슷하게 잘 나온거 같아 올려본다.

사용자 삽입 이미지

확실히 SD 1.5 보다는 좀 더 디테일 있는 이미지를 쉽게 만들 수 있는듯 하다. 아직 체크포인트가 많지 않은게 아쉽다. 다른 것들도 빨리 호환되는 버전이 나왔으면 한다. WD 체크포인트가 지금 베타버전이니 조만간 나올거라 기대한다.
글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - 업그레이드 2차

- SD 를 사용할 PC를 업그레이드 했다.

CPU:  i3-6100 (변경없음)
M/B: H110 (변경없음)
MEM: DDR4 8GB (변경없음)
GPU: nVidia GT 1030 -> nVidia GT2060 12GB

가장 드라마틱하게 변한게 아닐까 생각한다. VRAM 부족으로 아예 못하는 작업이 있음을 확인한 후 계속 GPU 업그레이드를 노려왔다. 그리고 오늘 단행했다.

기존 9:21 걸리던 이미지 생성 작업이 GPU 만 바꿨을 뿐인데 2:24로 단축되었다. 마지막으로 --lowvram 옵션을 빼고 하니 0:53 으로 단축되었다.

즉 561 초 -> 144 초 -> 53 초로 약 1/10 정도로 단축된 셈이다.

이제 이미지 업스케일 옵션을 줄 수 있다. 1920x1080 해상도의 이미지 생성 가능해졌다. 얏호~! (여태까지는 VRAM 부족으로 못했다)

--lowvram 옵션을 빼고 --no-fp16 옵션을 주고 실행한다. --no-fp16 에 따른 이미지 화질차이는 그다지 느껴지진 않는다. 이미지 리사이즈가 화질에 꽤 큰 영향을 준다.

사용자 삽입 이미지

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

사진을 뽑는게는 슬슬 익숙해지는 듯. 최소 100장 뽑아서 그중에 맘에 드는거, 그나마 손가락이 잘 표현된 또는 손가락을 잘 숨긴 사진을 뽑아내면 거의 성공이다. 다른 부분은 큰 위화감 없이 출력해준다.

이미지 생성할 때는 보통 civitai 에 가서 샘플로 올라온 것 중에 맘에 드는걸 이리저리 프롬프트 수정해보고 뽑는다. 그래서 몇백장 뽑아보면 잘 뽑힌게 나온다. 아래 사진도 그렇게 뽑았다.

PNG 파일 안에 사용한 프롬프트 정보 담겨있다.

사용자 삽입 이미지

정말 좋은 구도에 좋은 손가락만 빼면 좋은 사진이 많긴 한데, 손가락때문에 못 올린다. 어케 손가락 부분만 보정해주는 AI 안나오남...