- 나이 : 96년생
- 특이사항 : 조금씩 늙어가고 있음
- 좋아하는 음식 : 햄부기, 치킨, 고기
🥷기술
🐱 우리집 고양이 소개


- 이름 : 콜라
- 나이 : 14년생
- 종 : Nado moreum
📱 개인 프로젝트
🏢 참여한 프로젝트
🌱 내 잔디밭
구글에 고성능 GPU 컴퓨터 빌려서 StableDiffusion-WebUI 구동하기 본문
| GCP 의 ComputeEngine?
구글 클라우드 플랫폼 기능 중 Compute Engine 은 AWS와 같은 대표적인 클라우드 컴퓨팅 서비스 입니다. 최근 Stable Diffusion과 같은 높은 수준의 GPU를 요구하는 서비스를 구동하려면 비싼 GPU가 필요한데 최소 200-300만원 짜리 그래픽 카드가 필요합니다. 저희 집 컴퓨터 그래픽 카드는 GTX970이라.. GCP의 Compute Engine 서비스를 이용해서 직접 오픈소스인 StableDiffusion-WebUI (AUTOMATIC1111)을 구동시키는 과정을 진행해봤습니다.
| GCP의 Compute Engine을 선택한 이유
- AWS도 괜찮은데 개인이 사용하기에는 GCP의 Compute Engine이 10%~20% 저렴합니다.
- (지역 마다 다르지만 대충 미국 동부 기준약 사용 시간당 AWS 0.55달러 / GCP 0.4 달러)
- 네이버 클라우드는 인스턴스 미사용일때도 요금이 부과되기 때문에 제외
| GCP 에서 GPU 인스턴스 생성하기
GCP 계정이 있다고 가정하고, 프로젝트를 하나 만들거나 기존에 있던 거 선택 후 Compute Engine API 을 검색해서 활성화 해주세요!
그리고 GPU 할당량 증가 요청 부터 해야 합니다. https://cloud.google.com/docs/quotas/view-manage?hl=ko 에 들어가서 필터에 "compute.googleapis.com/gpus_all_regions" 를 입력해 검색해보세요.
할당량의 값이 0으로 되어 있는게 보이는데 이게 0이면 그래픽 카드를 보유한 인스턴스를 빌릴 수 없습니다. 그래서 할당량 증가 요청을 먼저 해주세요. Compute Engine API 를 체크하면 상단에 [Edit] 버튼이 생깁니다. 클릭하면 다음 화면이 나옵니다.
값을 1로 요청하겠습니다. 저는 NVIDIA T4 GPU 하나만 빌리려고요. 요청이 수락 되기 까지 보통 2일 정도 걸립니다..
참고로 AWS에서 GPU 인스턴스를 빌리려고 해도 할당량 증가 요청을 해야 하는데, 짧으면 4일 길면 5-6일 까지도 걸립니다.
(약 2일 후....)
요청이 승인 되었다는 메일을 받고 다시 API 할당량 조회를 해보면 값이 '1'로 바뀌었습니다! 이제 그래픽 카드 달린 컴퓨터를 빌릴 수 있게 되었어요.
GCP 의 Compute Engine 메뉴에서 [Create Instance]를 누릅니다.
여기서 Name은 대충 아무거나 하고, GPUs는 NVIDIA T4를 선택해줍니다. 아래 Machine type은 n1-standard-4를 선택해주세요. 마지막으로 Region과 Zone이 중요합니다. https://cloud.google.com/compute/docs/gpus/gpu-regions-zones 에서 N1+T4를 지원하는 지역을 확인해서 골라주면 됩니다.
좌측에 OS and storage 카테고리로 들어가서 [CHANGE] 버튼을 클릭합니다.
운영체제는 Ubuntu 20.04 LTS, Size는 60GB(나중에 필요시 변경 가능)정도로 합니다.
Networking 카테고리로 넘어가서 HTTP/HTTPS 트래픽 허용 둘 다 체크하고 인스턴스 생성하기 버튼 누르면 됩니다.
근데 간혹 할당량을 늘렸는데도 이런 에러가 뜰 수 있는데..
이 경우 해당 지역에 현재 빌려줄 수 있는 GPU가 없는 경우 생기는 에러입니다. 최근 GPU 수요가 많아지면서 그런 것 같은데 지역 바꿔가면서 시도하면 됩니다. (저는 결국 좀 비싼 한국으로 선택해서 생성했어요.)
| AUTOMATIC1111 (StableDiffusion-WebUi) 구축하기
인스턴스의 SSH로 접속합니다.
다음 명령어로 시스템 업데이트, 필수 패키지를 설치합니다.
sudo apt update && sudo apt upgrade -y
sudo apt install build-essential dkms
1. NVIDIA 드라이버 설치하기
설치 가능한 NVIDIA 드라이버 목록을 찾아야 합니다. 다음 명령어로 패키지를 설치합니다.
sudo apt install ubuntu-drivers-common
그다음 아래 명령어로 드라이버 목록 확인
sudo ubuntu-drivers devices
recommended로 되어 있는 535로 설치할게요.
sudo apt-get install nvidia-driver-535
드라이버 설치 끝났으면 인스턴스 재부팅
sudo reboot
Connection Failed 뜨면 SSH 잠시후 Retry로 재접속 하면 됩니다.
재부팅 후 다시 SSH에 접속해서 드라이버가 깔려있는지 조회합니다.
nvidia-smi
잘 깔린 것 같아요.
2. 파이썬 & Git 설치하기
sudo apt install python3 python3-venv python3-pip git -y
3. AUTOMATIC 1111 설치하기
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
git 에서 먼저 AUTOMATIC1111 저장소를 받아옵니다.
cd stable-diffusion-webui
./webui.sh --listen
stable-diffusion-webui 폴더로 이동해서 webui.sh 스크립트를 실행시키면 설치가 진행됩니다.
이 때 반드시 파라미터로 '--listen' 을 해야지 외부에서 접속할 수 있게 됩니다.
에러 없이 마지막에 "Model loaded in ... " 라고 표시되면 잘 설치되었다고 볼 수 있습니다.
근데 구동된 AUTOMATIC1111 웹에 접속하려면.. 포트 개방을 해야합니다.
4. 웹 접속을 위해 포트 개방하기
GCP에서 Firewall 을 검색해서 메뉴에 들어가줍니다.
name 은 아무거나 (allow-automatic1111 이런 이름..) 지어주고 위와 동일한 설정으로 [CREATE] 합니다.
이제 인스턴스 목록에서 External IP (외부 IP) 를 확인하고, 인터넷 브라우저에서 http://<인스턴스 외부 IP>:7860 로 접속하면 접속되는지 확인할 수 있습니다.
짠! 나만의 StableDiffusion을 구축했습니다.
주의사항으로 인스턴스는 시간당 사용량 비례로 비용이 청구되기 때문에 사용하지 않을 때는 인스턴스를 중단시키는게 좋습니다. 그러면 비싼 GPU를 직접 구매하는 것 보다는 괜찮을거에요.
아래는 추가적으로 찾을만한 내용을 정리하였습니다.
| 모델 추가로 다운 받아서 넣기
모델을 찾습니다. HuggingFace에서 받는다고 가정하면 https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0
stabilityai/stable-diffusion-xl-base-1.0 · Hugging Face
SD-XL 1.0-base Model Card Model SDXL consists of an ensemble of experts pipeline for latent diffusion: In a first step, the base model is used to generate (noisy) latents, which are then further processed with a refinement model (available here: https://hu
huggingface.co
위 링크 (SDXL 모델) 예시로 접속한 후 Files and versions 탭에서

모델 파일(*.safetensors) 우클릭 후 링크 주소 복사를 합니다
cd /stable-diffusion-webui/models/Stable-diffusion
이제 SSH로 접속 후 Stable-diffusion 설치된 폴더의 models/Stable-diffusion 으로 이동합니다.
wget -O sdxl-v1.safetensors "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors?download=true"
wget 명령어로 모델을 다운로드 받으면 됩니다.
Lora 파일 적용도 같은 방법인데 폴더만 /stable-diffusion-webui/models/Lora 에 다운 받으면 됩니다.
| 중단후 시작할 때 자동으로 Automatic 1111도 구동되도록 하기
SSH 로 접속 후 인스턴스 부팅시 동작할 서비스 파일을 작성해야 합니다.
sudo nano /etc/systemd/system/automatic1111.service
automatic1111.service 파일을 편집하는 화면에서 다음 내용을 편집해서 추가합니다.
[Unit]
Description=AUTOMATIC1111 Stable Diffusion Web UI
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=<user>
WorkingDirectory=/home/<user>/stable-diffusion-webui
ExecStart=/home/<user>/stable-diffusion-webui /webui.sh --listen
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
다음 명령어로 시스템 파일을 등록합니다. 위 파일 내용중 <user> 부분은 SSH 접속할때 사용한 user 계정 이름으로 넣어야 합니다. whoami 명령어로 현재 user 계정 이름을 알 수 있습니다.
sudo systemctl daemon-reload
sudo systemctl enable automatic1111.service
sudo systemctl start automatic1111.service
| 이슈 모음
webui.sh 스크립트 실행시 발생한 이슈와 해결 방법을 정리해두었습니다.
1. Cannot locate TCMalloc..
sudo apt-get install libgoogle-perftools4 libtcmalloc-minimal4 -y
※ 참고 : https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/10117#issuecomment-1537294185
2. ERROR : No matching distribution found for numpy==1.26.2
현재 파이썬 버전이 numpy 1.26.2를 지원하지 않는 경우 발생합니다. 요구하는 numpy 버전을 조정하기 전에 현재 파이썬 버전을 확인합니다.
python3 --version
저의 경우 파이썬이 3.8.10 으로 깔려버렸는데, numpy 1.26.2는 이 파이썬 버전과 호환되지 않습니다.
sudo apt install python3.9 python3.9-venv python3.9-dev
파이썬 3.9를 따로 설치해줍니다. 그리고 시스템이 가리키는 파이썬 버전을 바꾸기 위해 다음 명령으롤 입력합니다.
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
sudo update-alternatives --config python3
아래와 같은 프롬프트가 나오는데..
변경 할 파이썬 버전인 2번을 선택합니다.
python3 --version
다시 파이썬 버전을 확인해서 3.9 가 나오는지 확인합니다.