주:
- 이 사용지침서에서는 Oracle Cloud에 접근해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 완료하면 이러한 값을 클라우드 환경에 고유한 값으로 대체합니다.
Oracle Cloud Infrastructure GPU에 안정적인 확산 Automatic1111 배포
인공 지능(AI)과 머신 러닝(ML)의 끊임없이 변화하는 환경에서 연구원과 엔지니어는 가능한 것의 경계를 끊임없이 추진하고 있습니다. 최근 몇 년 동안 추진력을 얻은 놀라운 발전 중 하나는 안정적인 확산 모델입니다. 이 첨단 기술은 상당한 이점을 제공하고 광범위한 사용 사례를 약속하며 계속해서 흥미로운 발전을 거듭하고 있습니다. 이 튜토리얼에서는 Stable Diffusion AI/ML 모델의 세계를 살펴보고, 이 흥미로운 분야의 이점을 살펴보고, 사용 사례를 살펴보고, 최신 개발에 대해 논의합니다.
소개
안정적인 확산: 안정적인 확산은 AI와 ML의 세계에서 비교적 새롭고 혁신적인 접근 방식입니다. 이 모델은 고품질 데이터 샘플을 생성하는 능력과 다양한 교육 조건에 대한 견고성으로 인해 눈에 띄게 발전한 확률적 세대 모델입니다. 확산 프로세스를 기반으로 하는 안정적인 확산 모델은 제어된 데이터 생성 및 조작을 허용합니다. 주요 구성요소에 대한 간략한 개요는 다음과 같습니다.
Diffusion 프로세스: 안정적인 확산 모델의 핵심 아이디어는 시간 경과에 따른 데이터 분산의 발전을 모델링하는 확산 프로세스입니다. 여기에는 원하는 분포로 수렴될 때까지 데이터에 노이즈 프로세스를 반복적으로 적용하는 작업이 포함됩니다.
자동 인코더 제거: 확산 프로세스 내에서 부정 자동 인코더는 시끄러운 샘플에서 원본 데이터를 복구하는 데 사용됩니다. 이 프로세스는 모델이 의미 있는 데이터 기능을 학습하고 캡처하는 데 도움이 됩니다.
목표
Automatic1111 안정적인 확산은 AI 생성 이미지 영역에서 획기적인 도구입니다. 이 혁신적인 WebUI는 AI 생성 이미지 환경을 재구성하는 사용자 친화적인 플랫폼을 제공합니다. 이를 통해 사용자는 이미지 생성 전용의 AI 모델을 원활하게 작동하고 감독할 수 있습니다. Oracle Linux 8에서 선호하는 안정적 확산 모델을 추론하기 위해 Automatic1111 및 해당 필요 조건을 배포할 예정입니다.
필요 조건
-
A10 GPU 제한이 포함된 Oracle Cloud Infrastructure(OCI) 테넌시. 하나 이상의 A10이 필요합니다.
-
공용 서브넷이 하나 이상 있고 공용 IP에 대한 제한이 있는 기존 OCI VCN(가상 클라우드 네트워크)입니다.
-
좋아하는 Huggingface Creator의 안정적인 확산 모델 체크포인트입니다. 모델을 v1-5 및 v2-1로 제한합니다. 안정적인 확산 XL은 단일 A10 GPU에서 로드하기 어렵습니다. 안정적인 확산 모델 - Hugging Face를 참조하십시오.
작업 1: OCI에서 GPU 컴퓨트 인스턴스 프로비전
-
공용 서브넷이 있는 기존 VCN을 사용하여 OCI에서 컴퓨트 인스턴스를 실행합니다. 자세한 내용은 컴퓨트 인스턴스 실행을 참조하십시오.
-
사용 가능한 GPU.A10 구성에서 단일 A10 GPU 인스턴스를 선택합니다.
VM.GPU.A10.1 -
컴퓨트 인스턴스를 실행할 때 위 구성 중 하나로 구성이 변경됩니다. GPU.A10 VM을 실행하려면 전문 분야 및 이전 세대를 누르고 VM.GPU.A10.1 구성을 선택합니다.
-
테넌시에 GPU.A10에 대해 설정된 서비스 제한이 없는 경우 해당 구성은 구성 목록에 포함되지 않습니다.
-
OCI 콘솔에서 테넌시 제한을 확인하려면 GPU.A10 컴퓨트 인스턴스를 프로비전할 영역을 설정하고 탐색 메뉴를 열고 거버넌스 및 관리를 누릅니다.
-
테넌시 관리에서 제한, 할당량 및 사용을 선택합니다.
-
서비스를 Compute로 설정하고 범위 필드에서 가용성 도메인 중 하나를 선택한 다음 리소스 필드에 GPU.A10를 입력합니다.
-
A10 기반 VM의 GPU 및 BM 인스턴스를 선택합니다.

-
-
컴퓨트 제한은 가용성 도메인당입니다. 리전의 가용성 도메인에 제한이 설정되어 있는지 확인합니다. 모든 가용성 도메인에 대해 서비스 제한이 0으로 설정된 경우 "서비스 제한 증가 요청" 링크를 누르고 이 리소스에 대한 제한 증가 요청을 제출할 수 있습니다.
참고: 제한, 할당량 및 사용에 액세스하려면 테넌시 관리자 그룹의 멤버이거나 그룹에 LimitsAndUsageViewers 읽도록 지정된 정책이 있어야 합니다.
- 자세한 내용은 서비스 한도를 참조하십시오.
-
현재 OCI GPU.A10 컴퓨트 구성은 Oracle Linux, Ubuntu, Rocky Linux를 지원합니다. Windows는 VM 구성에서만 지원됩니다.
참고: Rocky Linux는 NVIDIA에서 공식적으로 지원되지 않습니다.
-
OCI에서 컴퓨트 인스턴스를 프로비저닝할 때는 표준 Oracle Linux 8 OS 이미지 또는 Oracle Linux 8 GPU 지원 이미지를 사용합니다. 표준 Oracle Linux OS 이미지를 사용하는 경우 NVIDIA vGPU 드라이버를 설치해야 합니다. 튜토리얼에서는 Oracle Linux 8 GPU 이미지를 사용합니다.


-
부트 볼륨 섹션을 확장하여 부트 볼륨을 250GB 이상으로 늘리고 VPU를 고성능으로 늘리면 더 나은 추론을 위해 적절한 읽기/쓰기를 수행할 수 있습니다.

-
위의 매개변수를 사용하여 인스턴스를 실행하십시오.
작업 2: Automatic1111에 대한 필수 조건 설치
-
NVIDIA 드라이버가 Oracle Linux GPU 빌드 이미지에 포함되어 있으므로 nvidia-smi 명령을 실행하여 존재 여부와 기능을 간단히 확인할 수 있습니다. 이렇게 하면 모든 항목이 제대로 설정되고 GPU 드라이버가 예상대로 작동합니다.

-
FileSystem 늘리기 OCI 인스턴스 시스템 메모리는 46.6GB 기본값과 함께 제공됩니다. Boot Volume을 300GB로 늘렸기 때문에 OCI Util에서 내장된 OCI 명령으로 File System을 확장할 수 있습니다.
부팅 볼륨을 300GB로 늘린 후 OCI 인스턴스의 파일 시스템을 확장하려면 내장 OCI(Oracle Cloud Infrastructure) 명령을 사용할 수 있습니다. 수행할 수 있는 방법은 다음과 같습니다.
-
현재 디스크 사용량 확인: 파일 시스템 크기를 조정하기 전에 증가된 부트 볼륨 크기가 반영되도록 현재 디스크 사용량을 확인하는 것이 좋습니다. 이 용도로
df명령을 사용할 수 있습니다.df -h사용 가능한 공간이 새 부트 볼륨 크기(300GB)와 일치하는지 확인합니다.
-
파일 시스템 크기 조정: 증가된 스토리지를 사용하도록 OCI 유틸리티 명령을 사용하여 파일 시스템의 크기를 조정합니다. 정확한 명령은 사용 중인 특정 OS 및 파일 시스템에 따라 다를 수 있습니다. 아래는 Oracle Linux 8에 사용됩니다.
sudo /usr/libexec/oci-growfspartition을 확장하는지 확인하는 메시지가 나타나면 'y'를 입력합니다.
-
Verify the File System Expansion: 크기 조정 명령을 실행한 후 디스크 사용량을 다시 확인하여 파일 시스템이 성공적으로 확장되었는지 확인합니다.
df -h이제 증가된 파일 시스템 크기를 반영해야 합니다.
이러한 단계를 수행하면 OCI 인스턴스에서 파일 시스템을 확장하여 증가된 부트 볼륨에서 제공하는 추가 스토리지 공간을 활용할 수 있습니다.

-
-
Oracle Linux 8에서 Python 3.10.6을 설치합니다.
sudo dnf update -y sudo dnf install curl gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make -y wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tar.xz tar -xf Python-3.10.6.tar.xz cd Python-3.10.6/ ./configure --enable-optimizations make -j 2 nproc sudo make altinstall python3.10 -V -
이제 Python3.10.6이 설치되었으므로 Git 저장소를 복제하기 위해 git를 설치하겠습니다.
sudo dnf install git -
Automatic1111를 복제합니다.
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git복제된 디렉토리에 안정적인 확산-webui 저장소가 있어야 합니다.
-
원하는 Stable Diffusion Model을
stable-diffusion-webui/models/Stable-Diffusion디렉토리에 다운로드합니다.- 사용 사례의 경우 stable-diffusion-v1-5에서 v1-5-pruned.ckpt를 다운로드했습니다.
-
방화벽 규칙을 업데이트하여 포트 7860 트래픽을 허용합니다.
sudo firewall-cmd --list-all # To check existing added ports sudo firewall-cmd --zone=public --permanent --add-port 7860/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-all # Confirm that port has been added.
작업 3: AUTOMATIC1111 실행
-
Python 3.10.6이 성공적으로 설치되어 AUTOMATIC1111 소프트웨어와 필수 Stable Diffusion Models가 다운로드되어 AUTOMATIC1111를 실행할 준비가 되었습니다. 그러나 계속하기 전에 안정적인 확산 이미지 생성의 속도와 전반적인 품질을 최적화하도록 구성을 미세 조정해 보겠습니다.
-
webui-user.sh파일을 편집하고 다음과 같이 조정합니다. 이 파일은stable-diffusion-webui디렉토리에서 찾을 수 있습니다. 이 스크립트는 AUTOMATIC1111에 대한 인수를 구성하며 사용 가능한 매개변수를 이해하고 업데이트하는 데 중요합니다.-
다음과 같이 매개변수를 수정합니다.
listen를 추가하여 포트 7860에서 서버로 실행하고, 선호하는 안정적 확산 확장 설치를 위해 확장 액세스를 사용으로 설정하고, 전체 자릿수를 설정합니다.# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention" export COMMANDLINE_ARGS="--listen --enable-insecure-extension-access --precision full --no-half-vae --no-half --theme light" -
아래 매개변수는 Python3.10이 사용되는지 확인합니다.
# python3 executable python_cmd="python3.10" -
아래 매개변수는 기본값 PyTorch 대신 최신 PyTorch2를 설치합니다. 이는 추론 및 이미지 반복 속도에서 더 나은 것으로 입증되었습니다.
# install command for torch export TORCH_COMMAND="pip install clean-fid numba numpy torch==2.0.1+cu118 torchvision --force-reinstall --extra-index-url https://download.pytorch.org/whl/cu118"
-
-
구문 오류가 없는지 확인한 후 webui.sh 스크립트를 실행하겠습니다(이전에 편집한 파일인 webui-user.sh와 혼동되지 않음).
bash webui.sh이 프로세스의 결과에는 최신 PyTorch2를 포함하여 AUTOMATIC1111에 필요한 모든 패키지 설치가 포함되어야 합니다. 또한 필수 모델을 로드하고 포트 7860에서 추론 서버를 시작합니다. 필요한 경우 webui-user.sh 파일을 수정하여 포트를 사용자 정의할 수 있습니다.

-
위에서 설명한 대로 포트 7860에서 실행되는 서버와의 성공적인 배치를 확인한 후 Stable Diffusion 응용 프로그램에 계속 액세스합니다. 웹 브라우저를 열고
http://<PublicIP>:7860주소를 입력하고"<PublicIP>"를 인스턴스의 공용(public) IP 주소로 바꿉니다.
이렇게 하면 응용 프로그램이 로드되어 아래 그림과 같이 나타나야 합니다. 강조 표시된 것처럼 오른쪽 상단 모서리에 원하는 모델을 편리하게 찾을 수 있습니다.

작업 4: service manager systemctl을 통해 AUTOMATIC1111 배치
-
/etc/systemd/system경로에stable-diffusion.service파일을 만들고stable-diffusion.service파일에 아래를 입력합니다.[Unit] Description=systemd service start stable-diffusion [Service] WorkingDirectory=/home/opc/stable-diffusion-webui ExecStart=bash webui.sh User=opc [Install] WantedBy=multi-user.target -
필요한 경우 작업 디렉토리를 변경합니다.
-
아래 명령을 실행하여 서비스를 다시 로드하고 사용으로 설정/시작하십시오.
sudo systemctl daemon-reload sudo systemctl enable stable-diffusion.service sudo systemctl start stable-diffusion.service -
아래 명령을 실행하여 서비스 상태를 확인합니다.
sudo systemctl start stable-diffusion.service
유의 사항 및 개선 사항
- 안정된 확산 모델은 v1.1, v1.2, v1.3, v1.4, v1.5, v2.0, v2.1 및 vSDXL을 포함한 다양한 크기 및 버전으로 제공됩니다. 이러한 버전은 기능 및 수행 가능한 기능을 오름차순으로 나열합니다. 예를 들어, 모든 v1 모델은 고유 512x512 이미지를 생성할 수 있습니다. v2는 전체 정밀도 없이 768x768 이미지를 기본적으로 생성할 수 있습니다. v1 모델의 파일 크기는 일반적으로 체크포인트 모델당 6-8GB 범위 내에 있지만 v2 모델은 체크포인트 모델당 약 5.5GB의 파일 크기를 갖는 경향이 있습니다.
모델 로딩
-
멀티 기가바이트 모델은 실행이 시작될 때 GPU VRAM에 로드되며, 수많은 CUDA 코어는 초당 수백 번을 세밀하게 처리합니다. 관련된 데이터 전송 속도는 물리학 법칙에 의해 정의된 절대 한계에서 작동하고 있습니다. 그래픽 카드 내에서 광속에서 칩을 통과하는 전기 신호에 필요한 시간과 같은 요인은 과소 평가되지 않습니다.
-
GPU는 일련의 계산을 처리한 다음 CPU에 신호를 보내 처리를 위해 더 많은 데이터를 제공합니다. 그런 다음 CPU가 시스템 메모리에 액세스하여 다른 데이터 배치를 검색하고 PCI-E를 통해 GPU로 전송하는 동안 기다립니다. GPU에 데이터가 있으면 데이터를 처리한 다음 다시 CPU에 신호를 보내 다른 대기 단계로 들어갑니다.
-
이것이 바로 VRAM이 AI 작업에서 중추적인 역할을 하는 이유입니다. 작업을 시작할 때 필요한 모든 데이터 및 지침을 그래픽 카드에 미리 로드하여 놀라운 내부 속도로 처리할 수 있고 결론적으로 결과를 수집할 경우 대기 시간을 크게 줄이고 낭비된 리소스를 최소화할 수 있습니다.
-
사용 사례에서는 24GB RAM의 NVIDIA A10 GPU를 자랑하는 VM.GPU.A10.1을 활용합니다. 단일 NVIDIA A10 GPU는 v1.5의 원활한 작동에 충분합니다. 그러나 프롬프트의 복잡성이 증가하면 생성 시간이 길어지고 반복 속도가 감소합니다. v2 Stable Diffusion 모델에는 기본적으로 공간 요구 사항이 줄어들기 때문에 원래 크기의 v2 대응자보다 빠르고 원활하게 작업을 실행할 수 있는 사전 정의된 버전의 v2 Stable Diffusion 모델이 있습니다. 모든 버전의 Stable Diffusion 모델은 단일 NVIDIA A10 24GB GPU 내에 수용할 수 있지만 반복 속도와 이미지 생성 시간은 특정 모델, 크기, 프롬프트 복잡성, 샘플링 단계, 이미지 차원, 고해상도 조정, 배치 크기 등을 포함한 다양한 요인에 따라 달라집니다.
-
향후 튜토리얼에서는 모델을 파티셔닝하고 여러 GPU에 배포하며 단일 머신 내의 여러 GPU를 사용하여 안정된 확산을 실행하는 방법을 알아봅니다. 또한 기존 Stable Diffusion Base 모델을 미세 조정하는 방법도 살펴봅니다.
관련 링크
승인
작성자 - Abhiram Ampabathina(Senior Cloud Architect)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer를 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Deploy Stable Diffusion Automatic1111 on Oracle Cloud Infrastructure GPUs
F87725-01
October 2023
Copyright © 2023, Oracle and/or its affiliates.