유진의 코딩스토리

Stable Diffusion Web UI 설치 - 리눅스 본문

Azure 실습/Stable diffusion

Stable Diffusion Web UI 설치 - 리눅스

놀고먹는 유진 2024. 9. 30. 21:12

 

클라우드 컴퓨팅의 대표적 모델

SaaS(Software-as-a-Service): 사용자가 장치에 애플리케이션을 설치하는 대신 클라우드에서 구동되는 애플리케이션을 이용하는 서비스 (예: Office 365 등)

PaaS(Platform-as-a-Service): 사용자가 애플리케이션을 구축하는 데 필요한 개발 도구, 인프라, 운영 체제 등을 인터넷을 통한 클라우드에서 사용 (예: MS azure - Machine Learning 등)

IaaS(Infrastructure-as-a-Service): 사용자가 클라우드로부터 서버 등 가상화된 컴퓨팅 리소스를 제공받는 형태 (예: MS Azure IaaS등)

 

 

 

Azure에서 GPU 사용

 

GPU 자원 없이 stable diffusion을 사용하기엔 너무 느림.

GPU를 사용하기 위해서는 NVIDIA 그래픽 카드를 이용하거나 AWS나 Azure의 클라우드 컴퓨팅 자원을 사용하는 방법이 있음.

Azure Machine Learning에서 Computer Instance를 사용하여 GPU자원을 사용할 예정.

Azure Machine Learning을 사용할 경우 ml 패키지, 딥러닝 프레임워크 등 인공지능을 위한 다양한 도구들이 미리 설치되어 있음.

Azured의 컴퓨팅 리소스를 사용하여 laas형식으로 stable diffusion을 설치해보도록 하자

 

리소스 그룹 생성 

저번 wordpress 설치 실습 때 Azure에서 리소스를 미리 만들어뒀으므로 그대로 사용.

 

 

 

Azure Machine Learning 작업 영역 추가 > muchine learning studio에서 computing instance 생성

 

반드시 ssh privit키 다운로드!!!(이거 다운로드 못하면 다시 처음부터 생성해야함)

확인해햐할 것 : 사용자 이름, public ip주소, 포트 번호     -> ssh 명령러 실행 시 필요!

 

 

 

ssh키를 이용하여 virtual machine에 접근

ssh -i <경로/프라이빗키> <사용자이름>@<IP주소> -p <포트번호>

* 경로 설정 시 절대경로 잘 확인!!(계속 오류나길래 봤더니 경로 설정이 잘못되어 있었음.) 

 

 

Stable Diffusion WebUI(웹 인터페이스)를 설치

 

# 현재 경로를 확인하자!

> pwd

 

[ GIT  AUTOMATIC1111의 Stable Diffusion WebUI 복사(클론) ]

# Stable Diffusion을 더 쉽게 사용하기 위해 제공되는 웹 인터페이스

> git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

 

[ Stable Diffusion 모델을 저장할 위치로 경로 설정 ]
> cd /home/azureuser/stable-diffusion-webui/models/Stable-diffusion

 

 

 

 

 

Hugging Face Access token 생성

https://huggingface.co/

 

Hugging Face – The AI community building the future.

The Home of Machine Learning Create, discover and collaborate on ML better. We provide paid Compute and Enterprise solutions. We are building the foundation of ML tooling with the community.

huggingface.co

Hugging Face에 등록된 Stable Diffusion 모델들을 다운받기 위해 Access key 발급받은 후 키 저장

 

 

 

Hugging Face에서 Stable Diffusion 모델들 다운

v1-5pruned-emaonly, sd_xl_base_1.0, sd_xl_refiner_1.0 다음 3가지 모델을 다운

 

curl : 데이터 다운로드 시 사용

- H "Authorization: Bearer <나의 Hugging Face Token>" : Hugging Face API를 사용하여 인증을 위한 헤더

--location : HTTP 리다이렉션을 따라가는 옵션

--output v1-5-pruned-emaonly.ckpt: 다운로드된 파일을 v1-5-pruned-emaonly.ckpt라는 이름으로 저장

 

* 여기서 3가지 모델의 확장자가 다른데 .ckpt 는 pytorch 모델의 확장자, .safetensors 는 허깅페이스에서 개발한 새로운 형식의 모델 확장자로 주로 모델의 가중치만 저장(덜 유연함)

마지막 결과를 보면 3개의 모델 파일이 저장되어있는 것을 확인할 수 있다!

 

Conda 환경 생성 & 설정 

Conda란 가상환경을 만들고 관리하는 도구

 

가상환경 설정하기 전에 최상위 폴더로 경로를 설정!

상위 경로로 옮겨가서 /home/azureuser/stable-diffusion-webui 경로 설정

 

-n a1111-sdwebui : a1111-sdwebui라는 이름의 새로운 가상 환경을 만듦

python=3.10: 이 환경에서 Python 3.10 버전을 사용

-y: 설치 중에 나오는 모든 확인 메시지를 자동으로 "yes"로 처리

 

Conda 환경 활성

 

conda activate sdwebui : 이후의 모든 명령이 이 환경 내에서 실행

conda env list : 시스템에 설치된 모든 Conda 가상 환경의 경로와 이름

필수 라이브러리 설치

 

-r requirements_versions.txt : 이 파일에는 설치해야 할 패키지 목록과 특정 버전이 명시. 이 파일을 기반으로 필요한 파이썬 패키지 모두 설치


Conda를 통해 PyTorch와 관련된 라이브러리들을 설치

 

Conda를 사용해서 라이브러리를 설치할 경우여러 채널에서 여러 라이브러리 땡겨올 수 있다는 장점 (PyTorch와 NVIDIA의 공식 채널)

 

  • pytorch : PyTorch 딥러닝 라이브러리.
  • torchvision : PyTorch와 함께 이미지 데이터를 다루기 위한 라이브러리.
  • torchaudio : 오디오 데이터 처리를 위한 라이브러리.
  • pytorch-cuda=12.4 : CUDA 12.4 버전을 사용하는 PyTorch를 설치하여 NVIDIA GPU에서의 가속을 지원.
  • -c pytorch, -c nvidia : PyTorch와 NVIDIA의 공식 채널을 사용해 패키지를 다운로드하도록 지정.



xFormers 설치

 

 xFormers란 PyTorch에서 사용할 수 있는 최적화된 메모리 관리 및 속도 향상 라이브러리

- c xformers/label/dev : Conda의 xformers/label/dev 채널에서 최신 개발 버전의 xFormers를 설치

첫번째 명령어는 "Git에서 발생할 수 있는 소유권 오류를 방지하기 위한 설정"이라고 하는데 잘 이해를 못함..ㅎ

 

 

civitdl 패키지 설치

 

civitdl란 Stable Diffusion 모델들을 제공하는 플랫폼으로 Stable Diffusion 모델을 다운로드하는 데 사용

https://civitai.com/

 

Civitai: The Home of Open-Source Generative AI

Explore thousands of high-quality Stable Diffusion & Flux models, share your AI-generated art, and engage with a vibrant community of creators

civitai.com

 

 

 

 

 

 

Stable Diffusion WebUI 실행

 

모든 준비과정은 끝났다!!

이제 stable Diffusion 웹사이트를 실행해보자!!

 

 

 

 

 

  • accelerate launch : Hugging Face의 accelerate 패키지를 사용하여 모델을 더 효율적으로 실행합니다. 이는 대규모 모델의 분산 실행 및 최적화에 도움을 줍니다.
  • --mixed_precision=bf16: 혼합 정밀도를 사용하여 BF16(Brain Floating Point 16-bit)으로 연산을 수행합니다. 이는 메모리 사용량을 줄이고 성능을 개선하는 데 유용합니다.
  • --num_cpu_threads_per_process=6: 프로세스당 6개의 CPU 스레드를 사용하여 모델을 실행하도록 설정합니다. 이는 시스템의 성능에 맞게 조정할 수 있습니다.
  • launch.py: Stable Diffusion WebUI를 시작하는 Python 스크립트입니다.
  • --share: Gradio 서비스를 통해 WebUI를 외부에 공유할 수 있도록 합니다. 이를 통해 다른 사람들도 웹 인터페이스에 접근할 수 있습니다.
  • --enable-insecure-extension-access: 웹 인터페이스에서 불안전한 확장 기능의 접근을 허용합니다. 이 옵션을 사용할 때는 주의해야 합니다.
  • --xformers: 설치된 xFormers 라이브러리를 사용하여 메모리 최적화를 활성화합니다.
  • --no-half-vae: VAE(Variational Autoencoder)에 FP16 대신 FP32 정밀도를 사용하여 더 안정적인 처리를 합니다. 일부 경우에서 VAE가 FP16에서 정확도가 떨어질 수 있기 때문에 이 옵션을 사용합니다.
  • --gradio-auth <username:password>: Gradio 인터페이스에 접속할 때 사용할 인증 정보입니다. <username:password>는 실제로는 사용자가 원하는 사용자 이름과 비밀번호로 대체해야 합니다. 이 설정을 통해 WebUI에 접근하려면 인증이 필요합니다.

 

 

이대로 성공하나 싶었는데 중간에 오류남..

중간에 강사님께 물어봤더니 한번 conda를 업데이트해보라고 하셔서 업데이트를 진행함.

업데이트 후 나머지 라이브러리 다시 설치 

다시 stable Diffusion 웹사이트를 실행해보았더니 오류없이 성공~

버전 문제인건지 아직까지는 이유를 잘 모르겠다..

 

실행결과에 있는 URL을 가지고 웹사이트를 열어서 stable diffusion을 통해 이미지를 생성해보았다.

확실히 GPU를 사용하니 정말 빠르다..!!