아주 오래전엔 VGA 는 1개로 고정되어있었다. 도스 시절 이야기인데, int 10h 가 하나의 VGA 만 인식했기 때문. 물론 당시에는 당연하게 생각했지만, 요즘에는 그게 아니다. 여러개의 GPU 를 달아 사용할 수 있다.
- 여러개의 GPU 를 달아 마치 하나의 GPU로 인식시켜 어플리케이션에서 사용하려면 뭔가 특수한 기법이 필요해진다. 또한 여러개의 GPU 성능을 그대로 다 내도록 하려면 하드웨어적으로 뭔가 장치가 필요하다. PCIe 를 사용해 GPU 간 통신하는건 느리기 때문. 그래서 SLI (NV Link)나 CorssFire 와 같은 기술을 사용하곤 했다.
- 하나의 어플리케이션에서 시스템에 설치된 GPU 중 하나의 GPU 를 선택적으로 사용하려면 그건 별다른 기술 없이 윈도10에서 지원해준다. 단 드라이버가 설치되어야 한다. 요즘엔 CPU 에 내장되어있는 GPU 가 있기 때문에 이렇게 구성하기 쉽다.
- 이런 이야기를 하는게, 좀 성능 낮은 GPU 를 모니터 출력용으로 사용하고, GT 1030 을 CUDA 용으로만 사용해 메모리를 아끼려는 심산이었다. 윈도에서 기본으로 400MB 정도의 VRAM 을 사용하기 때문에 이거라도 아끼려고 했다.
아래 캡처본은 그렇게 한 결과다. 남아있던 Radeon HD 5500 를 달아 모니터를 연결해주고, GT 1030 에는 아무것도 연결하지 않았다. 그래서 아래와 같이 부팅 직후에는 GPU 메모리를 사용하지 않고 있다. 원래는 약 400MB 정도 점유하고 있었다.2 GB 에서 400 MB는 크다.
- 그 400MB 가량은 아래와 같이 HD 5500 에서 사용하고 있다.
이렇게 해서 SD 에서 768 x 768 이미지를 생성시킬 수 있었다. 기존에는 메모리 부족해서 이걸 못했다. 나름 만족. 하지만 --medvram 옵션을 줄 수 있을 정도는 안되었다. CUDA 메모리 부족으로 뜬다.
- 이미지 생성시나 보정시에는 HDD 사용해도 되지만, 체크포인트 파일이 최소 2GB 이상이고 커다란 파일은 8GB에 달하기 때문에, 파일 로딩 시간이 30초 내외로 꽤 오래걸린다. (한번 로딩하면 다음 이미지 생성시에는 재사용하므로, 로딩시간이 없다. 따라서 크게 문제될건 아니다) 하지만 체크포인트를 병합하는 등의 작업을 하면 SSD 는 필수다.
- 이미지 생성시 CPU, GPU 사용량은 아래와 같다. GPU 메모리가 부족해 --lowvram 옵션을 주고, 성능 향상을 위해 --xformers 을 주어 실행한 결과다. 1장의 이미지를 생성하는데 기본 옵션 만으로 생성하면 2분 정도, 옵션을 수정하고, 고해상도, 생성 퀄리티를 높이면 30분 넘게도 걸린다. 따라서 새로운 세팅을 찾는건 어렵고, 대신 구글링해서 성공적인 이미지를 생성한 프롬프트를 조금씩 수정해서 사용해보고 있다. 나름 만족해하고 있다.
CPU 사용량
- 사용율을 모니터링 해보면, GPU 사용율이 주기적으로 올라갔다 내려갔다 한다. --lowvram 옵션을 주면 "SYSTEM MEM 데이터 일부를 GPU MEM에 로드 → 계산 → 계산 결과를 SYSTEM MEM에 저장 → SYSTEM MEM 데이터 일부를 GPU MEM에 로드 → 계산 → ..." 이런식으로 진행하기 때문이다. 즉 로드 및 저장시에는 계산하는게 없기 때문에, 사용율이 요동친다. 그리고 이때문에 5배이상 느려진다.
GPU 사용량
- GPU 는 nVidia GeForce 950 2GB 도 가능할 걸로 생각한다. (해보진 않았다) 그 이하는 안된다. 권장하는 사양은 GPU nVidia GeForce RTX 3060 12GB 이다. 개발자는 nVidia GeForce RTX 3090 을 사용하는걸로 알려져있다.
- GPU 가 nVidia 제품이 아니라면 AVX2 가 지원되는 CPU 만으로도 실행해볼 수 있다. AVX2는 4세대 Core CPU 인 하스웰부터 지원한다. 단 이미지 생성 속도는 사용 못 할 정도로 너무 너무 느리다. 필자도 CPU만 사용해서 이미지 생성에 2시간 기다리다가 그냥 포기했다. 32코어나 64코어를 가진 CPU 라면 해볼만하지 않을까 생각한다.
- 생성해본 이미지를 올리고 싶지만 제대로 생성된게 별로 없다. 정말 정말 손가락을 제대로 못 그린다. 어떻게하던 손가락을 숨기는 포즈로 생성 해야 그나마 봐줄만하다. 아직은 이에 대한 명확한 해결책은 없는 상태다. 현재로써는 그냥 보정하거나, 시드 값을 달리해 손가락이 숨겨지는 포즈를 찾아보는 수밖에 없는 듯.
shuimobysim, girl, woman,bare shoulders, (ecchi:0.5), (trees:0.5), (flowers:0.6) ,(birds:0.2), (bamboo:0.1), lakes, Hangzhou, wuchangshuo, wuchangshuo in background, <lora:Moxin_10:0.8>
Negative prompt: EasyNegative, mutated hands, (poorly drawn hands:1.331),(fused fingers:1.61051), (too many fingers:1.61051), bad hands, missing fingers, extra digit
Steps: 28, Sampler: DPM++ SDE Karras, CFG scale: 2, Seed: 2643581225, Face restoration: CodeFormer, Size: 512x768, Model hash: 2537d1a815, Model: guofeng3_v32, ENSD: 31337
꽤 흔한 윈도11의 블루스크린 오류. "IRQL 이 낮거나 같지 않다"는 의미로 IRQL(Interrupts ReQuest Level)이 낮은 채로 실행 중이었는데 IRQL 이 높은 작업이 요청되었다는 의미다. 윈도 커널에서 이 오류를 처리할 수 없기 때문에 STOP 코드가 걸리고, 그래서 블루스크린이 표시된다. 기본적으로 이 오류는 하드웨어와 윈도 커널간의 통신 문제다.
장치관리자에서 IRQ 요청 번호를 확인할 수 있다. 0 번은 시스템 타이머로 고정되어있다.
예전에 1990년대 말 윈도95 시절에는 일주일에 몇번씩 본 오류지만, 지금은 흔하지 않은 오류다. 하드웨어가 IRQ 를 사용하지 않고 작동하도록 디자인되거나, 소프트웨어 IRQ를 사용하는 방향으로 디자인 되기 때문이다.
그런만큼 한번 발생하면 해결하기가 어렵다. 원인 불명이다. 하지만 몇가지 해볼만한게 있다.
- 전원을 완전히 껏다 켜보고 몇 시간동안 아무 작업없이 켜 놓아 보자. 그리고 문제 없으면 그냥 쓰자. 가장 좋은 해결책이다.
- 시스템의 발열을 확인해보자. 열은 모든 PC부품의 적이다. 발열이 있다면 쿨링 솔루션을 변경해보자.
- 시스템에 먼지가 껴 있으면 모두 털어주자. 특히 메모리 슬롯이나 PCIe 슬롯의 먼지는 치명적이나 잘 닦아주자. 접점에 문제가 생기면 하드웨어 오류가 쉽게 발생한다.
- 최근 몇일간 윈도 시스템에 변화를 준게 있으면 롤백해보자. 새로운 장치를 설치하거나, 드라이버를 업데이트하거나, 윈도 업데이트를 설치했으면 업데이트를 취소해보자.
- 윈도 인증 드라이버(WDM 인증 드라이버)가 아닌 미인증 드라이버는 설치하지 말자. 특히 "IRQL_NOT_LESS_OR_EQUAL" 앞에 "DRIVER_" 라는 단어가 있는 경우는 설치된 드라이버 확인해보자.
- 너무 자주 발생해서 못쓰겠다 싶으면 윈도 재설치해보자. 윈도 재설치는 이런 문제를 해결하기 쉬운 방법 중 하나다.
- 필자도 몇일 전에 이 오류를 봤었는데 그때는 노트북 발열이 심했었다. 식혀주고 재시작 하니 다시 발생하지 않았다.
- 또한 필자는 NETIO.SYS 라는 파일에서 발생했다고 나오는 경우도 있었다. 아무래도 네트워크 부분에 문제가 발생하는 듯 하다. 그래서 아래와 같이 드라이버 업데이트 해주었다. 이후엔 발생하지 않았다.
- 윈도7에서 윈도 10 업그레이드 시 재부팅을 몇번하다가 다시 윈도7이 부팅되면서 아래 메시지가 뜨는 현상이 발생했다.
0x80070570 - 0x2000C APPLY_IMAGE 작업 중 오류가 발생하여 SAFE_OS 단계에서 설치가 실패했습니다 The installation failed in the SAFE_OS phase with an error during APPLY_IMAGE operation
- 메시지 코드를 해석하자면
0x80070570: ERROR_FILE_CORRUPT. 파일에 이상이 있다는 의미. 0x2000: SAFE_OS 단계를 의미한다. C: SP_EXECUTION_OP_APPLY_IMAGE 의 의미로 패치 적용하다가 실패 했음을 의미한다.
- 구글링 해보니 기본적으로 이런 문제는 저장 장치 문제라고 한다. 따라서 윈도7을 설치한 디스크 검사를 해보자. 관리자 권한을 가진 명령 프롬프트에서 chkdsk /r 을 입력하고 재시작하면 디스크 검사가 실행된다. 이 방법은 ERROR_FILE_CORRUPT 의 일반적인 해결 방법이다.
- 또한 윈도7을 설치할때 NTFS 의 클러스터 크기를 4096 바이트로 했는지 확인해보자. 드물지만 대용량 저장장치를 사용하는 경우 4096 이상으로 설정되는 경우가 있다. 윈도10은 4096만 사용한다.
- 하지만 전부 안되었다. 재시도 해도 마찬가지. 지금와서 알았지만 재시도로 해결할 수 있는게 아니었다. 거의 하루 정도 삽질하다 결국 해결했다. 이 오류가 윈도10 업그레이드시에 발생했다면, 설치 USB 를 다시 만들어야 한다. 다시 만들어서 설치하니 정상적으로 설치되었다. 즉 USB 저장장치의 문제일 수도 있다는 이야기다. 여태까지 이런 문제는 없었어서 설마 이걸꺼라고는 생각 못했다.