Docker를 사용해보려고했으나 webui.sh로 설치하는 것이 너무나 쉽게 돼서 이 방법을 남긴다. 또한, 윈도우에서는 어떻게 설치하는 것이 좋을 지에 대해서도 살펴본다.

Ubuntu

설치

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh
conda create -n sdwebui python=3.11
conda activate sdwebui

wget -q https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh


cd ./stable-diffusion-webui/models/Stable-diffusion
wget https://civitai.com/api/download/models/11745 -O chillout-mix.safetensors
wget https://civitai.com/api/download/models/242444?type=Model&format=SafeTensor&size=full&fp=bf16 -O product_easy-produt-photo-xl.safetensors
wget https://civitai.com/api/download/models/239561?type=Model&format=SafeTensor -O product_bg_outdoor.safetensors
wget https://civitai.com/api/download/models/245598?type=Model&format=SafeTensor&size=pruned&fp=fp16 -O realistic_vision_v6.0B1.safetensors
wget https://huggingface.co/wavymulder/Analog-Diffusion/resolve/main/analog-diffusion-1.0.safetensors -O analog-diffusion-1.0.safetensors
wget https://civitai.com/api/download/models/70458?type=Model&format=SafeTensor&size=pruned&fp=fp16 -O Henmix_Real.safetensors
wget https://huggingface.co/stabilityai/stable-diffusion-2-1/resolve/main/v2-1_768-ema-pruned.safetensors\?download\=true -O v2-1_768-ema-pruned.safetensors
wget https://huggingface.co/stabilityai/stable-diffusion-2-1/resolve/main/v2-1_768-nonema-pruned.safetensors\?download\=true -O v2-1_768-nonema-pruned.safetensors
wget https://civitai.com/api/download/models/28103?type=Model&format=SafeTensor&size=full&fp=fp16 -O vendo-photorealistic.safetensors
wget https://civitai.com/api/download/models/88158?type=Model&format=SafeTensor&size=full&fp=fp16 -O RunDiffusion-FX-Photorealistic.safetensors
wget https://civitai.com/api/download/models/4224?type=Model&format=SafeTensor&size=full&fp=fp16 -O Dreamlike-Photoreal-2-0.safetensors
wget https://civitai.com/api/download/models/128713?type=Model&format=SafeTensor&size=pruned&fp=fp16 -O DreamShaper.safetensors
wget https://civitai.com/api/download/models/126688?type=Model&format=SafeTensor&size=full&fp=fp16 -O DreamShaper-XL.safetensors
wget https://civitai.com/api/download/models/4298?type=Pruned%20Model&format=SafeTensor&size=pruned&fp=fp16 -O Protogen-x5_8-Rebuilt-scifi-anime.safetensors

실행

chmod 755 ./webui.sh
#로그인 기능이 없으므로 폐쇄된 환경에서만 돌려야함. 
#만일 퍼블릭 망을 통해 외부에서 접근해 올 가능성이 없다면 아래와 같이 실행.
./webui.sh --listen

#만일 퍼블릭 망을 통해 외부에서 접근해 올 가능성이 있다면 아래와 같이 해서 로컬에서만 실행.
./webui.sh

모델 선택

civitai.com에 포스팅 된 이미지들 중 마음에 드는 결과물에 사용된 모델을 다운 받아 사용하는 것이 가장 직관적이다.

윈도우

설치

Option 1 윈도우 스럽게

https://github.coUbuntum/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-NVidia-GPUs
위 링크에 방문하면 보이는 method 1을 추천한다.

1. 그냥 다운받고 압축 푼다.
2. 탐색기에서 webui.bat를 더블클릭해서 실행하여 설치
이 때 관련된 파이썬 및 라이브러리들이 알아서 설치된다.
3. 설치 완료후 run.bat를 더블 클릭해서 실행.

Option 2 WSL상의 Ubuntu에

위에 정리한 ubunt에 설치 방법과 모두 같지만 한 가지 설치시에 아래와 같이 오류가 발생하기 때문에 강제 실행을 해야한다.

conda activate sdwebui
bash webui.sh -f

기타 팁

1. GPU가 여러개일 때

아래와 같은 스크립트로 여러 인스턴스를 띄워서 폭풍 생성 가능.

start.sh

#!/bin/bash

# Check if the first argument is provided and is within the range 0 to 3
if [[ -z "$1" ]] || [[ "$1" -lt 0 ]] || [[ "$1" -gt 3 ]]; then
    echo "Please enter a value between 0 and 3."
    read -p "Enter value: " value

    # Validate the input
    while [[ -z "$value" ]] || [[ "$value" -lt 0 ]] || [[ "$value" -gt 3 ]]; do
        echo "Invalid input. Please enter a value between 0 and 3."
        read -p "Enter value: " value
    done

    # Set the argument to the input value
    set -- "$value"
fi
# The rest of the script
export CUDA_VISIBLE_DEVICES=$1
nohup ./webui.sh --port 786$1 > /home/bravo/imgserver/run$1.log 2>&1  &
disown

# Follow the log file in the background
tail -f /home/bravo/imgserver/run$1.log &
TAIL_PID=$!

# Wait for user input to terminate the tail process
read -p "Press [Enter] key to stop tailing the log..."

# Kill the specific tail process
kill $TAIL_PID

ps.sh

   	lsof -i :7860 
    lsof -i :7861 
    lsof -i :7862 
    lsof -i :7863 

kill.sh

  kill `lsof -ti tcp:786$1`

2. 생성할 때마다 생기는 이미지 삭제

골치 아프다 어차피 마음에 드는 이미지는 어딘가에 따로 보관하기 때문에 기 생성된 이미지를 한 번에 삭제하기 좋은 스크립트로 관리 하면 좋다.

delimgs.sh

#!/bin/bash

# Ask for confirmation
read -p "Are you sure you want to delete ~/imgserver/stable-diffusion-webui/outputs? (yes/no) " answer

# Check the response
if [[ $answer = "yes" ]]
then
    # If the answer is 'yes', proceed with the deletion
    rm -rf ~/imgserver/stable-diffusion-webui/outputs
    echo "Directory deleted."
else
    # If the answer is not 'yes', do not delete
    echo "Deletion aborted."
fi

오류 대처

Cannot locate TCMalloc (improves CPU memory usage)

아래 명령어 실행후 webui.sh 다시 실행

sudo apt install libgoogle-perftools4 libtcmalloc-minimal4

TypeError: 'type' object is not subscriptable

파이썬 버전이 3.10 이상이 아닐 때 나타날 수 있는 예외상화이다.

Traceback (most recent call last):
  File "launch.py", line 48, in <module>
    main()
  File "launch.py", line 44, in main
    start()
  File "/root/imgserver/stable-diffusion-webui/modules/launch_utils.py", line 460, in start
    import webui
  File "/root/imgserver/stable-diffusion-webui/webui.py", line 13, in <module>
    initialize.imports()
  File "/root/imgserver/stable-diffusion-webui/modules/initialize.py", line 33, in imports
    from modules import shared_init
  File "/root/imgserver/stable-diffusion-webui/modules/shared_init.py", line 5, in <module>
    from modules import shared
  File "/root/imgserver/stable-diffusion-webui/modules/shared.py", line 5, in <module>
    from modules import shared_cmd_options, shared_gradio_themes, options, shared_items, sd_models_types
  File "/root/imgserver/stable-diffusion-webui/modules/options.py", line 80, in <module>
    class Options:
  File "/root/imgserver/stable-diffusion-webui/modules/options.py", line 83, in Options
    def __init__(self, data_labels: dict[str, OptionInfo], restricted_opts):
TypeError: 'type' object is not subscriptable

파이썬 버전을 올린후 다시 설치한다.

conda install python=3.10
conda update --all
rm -rf stable-diffusion-webui/ 
./webui.sh*

이참에 3.11로 테스트 해보 결과 잘 동작한다. 그러나 Extension들이 3.10.x 에서 호환되는 경우가 종종 있어 아직 3.11은 시기 상조로 보인다.

프롬프트 참고

profile
개발하면서 또는 프러덕 관리하면서 겪는 기억해둬야하는 내용을 메모장 삼아 남긴다. Google Keep이나 메모 도구에 남기는 것과는 달리 잘 정리할 수 있어서 언젠가 들춰봐야할 내용들을 담은 글들이 게시된다.

0개의 댓글