Windows에서 Stable Diffusion WebUI 완벽 설치 (NVIDIA GPU 기준)

AUTOMATIC1111 WebUI를 사용하여 윈도우에서 Stable Diffusion을 사용하는 방법을 정리 합니다. 여기서는 CUDA를 지원하는 적절한 그래픽카드를 보유중이라고 가정하고 진행하겠습니다. AMD의 그래픽카드 혹은 CPU를 활용하는 경우는 참고하기에 부적절할 수 있습니다.

1) 내가 가지고 있는 그래픽카드가 무엇인지 확인 후 적절한 CUDA Toolkit, cuDNN을 설치

1. 윈도우 시작 버튼을 누르고 다음의 명령어를 실행합니다.

control /name Microsoft.DeviceManager

2. “디스플레이 어댑터” 항목에서 내 그래픽 카드가 무엇인지 확인합니다.

3. CUDA를 지원하는 NVIDIA GeForce RTX 4090을 확인 하였습니다. 이 그래픽 카드의 아키텍쳐를 확인해야 하는데 저는 구글링을 통해서 Ada Lovelace 아키텍쳐임을 확인하였습니다.

4. CUDA Toolkit, Driver and Architecture Matrix 문서를 확인하여 내 그래픽카드가 지원하는 가장 최신의 CUDA Toolkit이 어떤 버전인지 확인합니다. 아직 Ada 아키텍쳐는 Ongoing이네요. Ada의 경우 11.8부터 가장 최신의 CUDA Toolkit을 설치해도 됩니다. 정확한 버전이 표기되어있을 경우 그 버전까지만 지원한다는 의미입니다.

5. Ongoing인 경우 최신 버전의 CUDA Toolkit 또는 구 버전의 CUDA Toolkit을 적절하게 선택하여 다운로드 후 설치를 진행합니다. 저의 경우에는 Windows 11을 사용하기에 다음과 같은 선택을 하였습니다.

다음의 명령어를 사용하여 정상적으로 설치가 되었는지 확인 해 봅니다. PowerShell에서 nvcc 및 nvidia-smi 명령어가 정상적으로 실행이 된다면 잘 설치되었다고 보셔도 됩니다.

PS > nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Fri_Nov__3_17:51:05_Pacific_Daylight_Time_2023
Cuda compilation tools, release 12.3, V12.3.103
Build cuda_12.3.r12.3/compiler.33492891_0

PS > nvidia-smi
Fri Dec  8 18:59:10 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 546.29                 Driver Version: 546.29       CUDA Version: 12.3     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                     TCC/WDDM  | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce RTX 4090      WDDM  | 00000000:01:00.0 Off |                  Off |
|  0%   35C    P8              11W / 450W |   1426MiB / 24564MiB |      6%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
+---------------------------------------------------------------------------------------+

2) Python 설치

1. Python 3.10.6 버전을 설치합니다. “Windows installer (64-bit)”를 받으면 되며 더 높은 버전은 지원하지 않으니 주의 바랍니다.

설치 시 “Add Python 3.10 to PATH”를 선택하여 환경변수에 PATH가 추가될 수 있도록 해줍니다.

2. 정상적으로 설치가 되었는지 PowerShell에서 확인 해 봅시다. 다음과 같이 버전이 출력되면 정상적으로 설치 된 경우입니다.

PS > python --version
Python 3.10.6

3) Git 설치

1. Windows 용 Git 다운로드 페이지에 방문하여 64-bit Installer 버전을 다운받아 설치 해 줍니다.

2. 다음과 같이 PowerShell에서 버전 출력이 되는지 확인 해 봅니다. 

PS> git --version
git version 2.43.0.windows.1

4) Stable Diffusion WebUI 설치 및 실행

1. stable-diffusion-webui 를 git clone 받습니다.

PS> git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
Cloning into 'stable-diffusion-webui'...
remote: Enumerating objects: 28980, done.
remote: Counting objects: 100% (28/28), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 28980 (delta 14), reused 20 (delta 11), pack-reused 28952Receiving objects: 100% (28980/28980), 29.28 MiB Receiving objects: 100% (28980/28980), 32.87 MiB | 11.70 MiB/s, done.

Resolving deltas: 100% (20288/20288), done.

2. webui-user.bat 설정을 변경합니다. (COMMANDLINE_ARGS 값을 추가)

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--xformers --no-half-vae --medvram

call webui.bat

3. webui-user.bat를 통해서 Stable Diffusion WebUI를 실행 해 줍니다. 최초 실행 과정에서 필요한 라이브러리를 알아서 다운로드 받습니다.

PS> ./webui-user.bat

필요한 패키지를 순차적으로 다운받은 뒤 자동으로 웹브라우저에서 WebUI가 실행 됩니다.

5) NVIDIA cuDNN 설치

1. 이번에는 cuDNN(CUDA Deep Neural Network)를 설치합니다. 이미지 생성 속도를 2배 가까이 빠르게 해준다고 합니다. CUDA Toolkit 과는 다르게 NVIDIA Developer 계정을 가지고 있어야 다운로드를 할 수 있습니다. 가입이 어렵지 않으므로 가입을 해 줍니다.

다운로드 화면에 진입하면 어떤 CUDA 버전에 호환되는 cuDNN을 받을지 선택할 수 있습니다. 정확한 버전을 확인하려면 GPU, CUDA Toolkit, and CUDA Driver Requirements 문서를 확인해 보시면 됩니다. 설치한 CUDA Toolkit 버전에 맞추어 설치를 하면 됩니다. 저는 12.x 지원 버전으로 “Local Installer for Windows (Zip)”을 선택하여 다운로드 하겠습니다.

2. 다운로드 받은 파일은 단순히 압축 파일이며 압축을 해제한 뒤에 dll 파일들을 직접 옮겨야 합니다.

압축 해제한 디렉토리의 bin/ 디렉토리 밑에 있는 DLL 파일들을 모두 Stable Diffusion WebUI가 설치된 디렉토리의 다음의 위치로 복사 해 줍니다.

STABLE_DIFFUSION_WEBUI/venv/Lib/site-packages/torch/lib/

6) 완료

이제 모든 준비는 완료 되었습니다. webui-user.bat를 통해서 다시 실행 해 보시면 되며, 추가적인 Model, LoRA, Extension 들을 찾아가며 업그레이드 해 나가시면 됩니다.

에버노트 Evernote 한번에 모든 노트 Enex 추출하기

최근에 애증의 에버노트로부터 메일이 왔다. 구독 서비스의 요금을 올린다고 한다. 매 업데이트때마다 문제가 늘어나는것을 참아가며 쓰고 있었는데 계기를 제공하는것인가. 에버노트의 대안을 찾기로 하였다.

어떤 노트 어플리케이션으로 이동하냐를 떠나서 보니깐 대부분의 마이그레이션 툴들이 막혀있고 노션의 경우에는 마이그레이션 기능을 제공하지만 매우 오래걸린다. 결국 에버노트에서 제공하는 Enex라는 형태의 내보내기된 파일이 필요한데 윈도우에서는 50개, 맥에서는 100개 제한이 걸려있다.

이미 몇천개의 글이 에버노트에 있는 나로써는 난감한 상황. 그런데 찾아보니 엄청 편리한 툴을 발견하였다.

https://github.com/vzhd1701/evernote-backup

이곳에서 자신의 OS에 맞는 버전을 다운로드 하자. 물론 맥에서는 brew로 설치해도 된다. 다음의 과정을 통해서 모든 노트를 Enex로 추출할 수 있다.

$ evernote-backup init-db
Username or Email: user@example.com
Password:
Logging in to Evernote...
Enter one-time code: 120917
Authorizing auth token, evernote backend...
Successfully authenticated as user!
Current login will expire at 2022-03-10 10:22:00.
Initializing database en_backup.db...
Reading database en_backup.db...
Successfully initialized database for user!

$ evernote-backup sync
Reading database en_backup.db...
Authorizing auth token, evernote backend...
Successfully authenticated as user!
Current login will expire at 2022-03-10 10:22:00.
Syncing latest changes...
  [####################################]  6763/6763
566 notes to download...
  [####################################]  566/566
Updated or added notebooks: 23
Updated or added notes: 566
Expunged notebooks: 0
Expunged notes: 0
Synchronization completed!

$ evernote-backup export output_dir/
Reading database en_backup.db...
Exporting notes...
  [####################################]  23/23
All notes have been exported!

export 명령을 실행할 때 지정한 디렉토리에 가보면 내가 설정해둔 노트북(카테고리) 그대로 파일이 이쁘게 추출되어있는것을 확인할 수 있다. 이렇게 나이스 할수가!