이 저장소는 주로 Kohya의 Stable Diffusion 트레이너용 Gradio GUI를 제공합니다. 그러나 Linux OS에 대한 지원도 커뮤니티 기여를 통해 제공됩니다. macOS 지원은 현재 최적이 아니지만 조건이 좋으면 작동할 수도 있습니다.
GUI를 사용하면 훈련 매개변수를 설정하고 모델 훈련에 필요한 CLI 명령을 생성 및 실행할 수 있습니다.
코야의 GUI
페이지 파일 제한
tkinter라는 모듈이 없습니다.
TESLA V100에 대한 LORA 교육 - GPU 활용 문제
문제 요약
잠재적인 솔루션
Windows에서 GUI 실행
Linux 및 macOS에서 GUI 실행
윈도우 업그레이드
Linux 및 macOS 업그레이드
윈도우
리눅스와 macOS
런포드
도커
Windows 사전 요구 사항
윈도우 설정
선택 사항: CUDNN 8.9.6.50
Linux 사전 요구 사항
리눅스 설정
설치 위치
수동 설치
사전 구축된 Runpod 템플릿
윈도우
리눅스, OSX
GPU 지원을 위해 Docker를 준비하세요
Dockerfile 디자인
사전 빌드된 Docker 이미지 사용
로컬 도커 빌드
ashleykleynhans runpod 도커 빌드
목차
? 코랩
설치
업그레이드 중
GUI 서비스 시작
사용자 정의 경로 기본값
로라
훈련 중 샘플 이미지 생성
문제 해결
SDXL 훈련
가면을 쓴 손실
변경 내역
이 Colab 노트북은 제가 만들거나 관리한 것이 아닙니다. 그러나 효과적으로 작동하는 것으로 보입니다. 소스는 https://github.com/camenduru/kohya_ss-colab에서 찾을 수 있습니다.
저는 camendutu의 귀중한 기여에 대해 감사의 말씀을 전하고 싶습니다. Colab 노트북에 문제가 발생하면 해당 저장소에 보고해 주세요.
코랩 | 정보 |
---|---|
kohya_ss_gui_colab |
Windows 시스템에 필요한 종속성을 설치하려면 다음 단계를 따르십시오.
Python 3.10.11을 설치합니다.
설치 프로세스 중에 'PATH' 환경 변수에 Python을 추가하는 옵션을 선택했는지 확인하세요.
CUDA 11.8 툴킷을 설치합니다.
힘내를 설치하십시오.
Visual Studio 2015, 2017, 2019 및 2022 재배포 가능 패키지를 설치합니다.
프로젝트를 설정하려면 다음 단계를 따르세요.
터미널을 열고 원하는 설치 디렉터리로 이동합니다.
다음 명령어를 실행하여 저장소를 복제합니다.
git clone --재귀 https://github.com/bmaltais/kohya_ss.git
kohya_ss
디렉터리로 변경합니다.
CD kohya_ss
다음 명령을 실행하여 다음 설정 스크립트 중 하나를 실행합니다.
Python 3.10.11만 설치된 시스템의 경우:
.setup.bat
둘 이상의 Python 릴리스만 설치된 시스템의 경우:
.setup-3.10.bat
가속 구성 단계에서는 하드웨어 요구 사항을 달리 알지 않는 한 구성 중에 제안된 기본값을 사용하십시오. GPU의 VRAM 양은 사용되는 값에 영향을 주지 않습니다.
다음 단계는 선택 사항이지만 NVIDIA 30X0/40X0 GPU 소유자의 학습 속도를 향상시킵니다. 이러한 단계를 통해 훈련 배치 크기가 커지고 훈련 속도가 빨라집니다.
.setup.bat
실행하고 2. (Optional) Install cudnn files (if you want to use the latest supported cudnn version)
.
Linux 시스템에 필요한 종속성을 설치하려면 다음 요구 사항을 충족하는지 확인하십시오.
venv
지원이 사전 설치되어 있는지 확인하십시오. 다음 명령을 사용하여 Ubuntu 22.04에 설치할 수 있습니다.
적절한 python3.10-venv 설치
이 링크에 제공된 지침에 따라 CUDA 11.8 툴킷을 설치하십시오.
시스템에 Python 버전 3.10.9 이상(3.11.0 미만)이 설치되어 있는지 확인하십시오.
Linux 또는 macOS에서 프로젝트를 설정하려면 다음 단계를 수행하세요.
터미널을 열고 원하는 설치 디렉터리로 이동합니다.
다음 명령어를 실행하여 저장소를 복제합니다.
git clone --재귀 https://github.com/bmaltais/kohya_ss.git
kohya_ss
디렉터리로 변경합니다.
CD kohya_ss
권한 문제가 발생하면 다음 명령을 실행하여 setup.sh
스크립트를 실행 가능하게 만드십시오.
chmod +x ./setup.sh
다음 명령을 실행하여 설정 스크립트를 실행합니다.
./setup.sh
참고: runpod 환경에 대한 추가 옵션이나 정보가 필요한 경우 setup.sh -h
또는 setup.sh --help
사용하여 도움말 메시지를 표시할 수 있습니다.
Linux의 기본 설치 위치는 스크립트가 있는 디렉터리입니다. 해당 위치에서 이전 설치가 감지되면 해당 위치에서 설치가 진행됩니다. 그렇지 않으면 설치가 /opt/kohya_ss
로 대체됩니다. /opt
에 쓸 수 없는 경우 대체 위치는 $HOME/kohya_ss
입니다. 마지막으로 이전 옵션 중 어느 것도 실행 가능하지 않으면 현재 디렉터리에서 설치가 수행됩니다.
macOS 및 기타 비 Linux 시스템의 경우 설치 프로세스는 스크립트가 실행되는 위치를 기반으로 이전 설치 디렉터리를 검색하려고 시도합니다. 이전 설치를 찾을 수 없는 경우 기본 위치는 $HOME/kohya_ss
입니다. 설정 스크립트를 실행할 때 -d
또는 --dir
옵션을 사용하여 사용자 정의 설치 디렉터리를 지정하면 이 동작을 재정의할 수 있습니다.
대화형 모드를 사용하도록 선택한 경우 가속 구성 화면의 기본값은 "이 컴퓨터", "없음" 및 나머지 질문에 대한 "아니요"입니다. 이러한 기본 대답은 Windows 설치와 동일합니다.
Runpod에 필요한 구성 요소를 설치하고 kohya_ss를 실행하려면 다음 단계를 따르십시오.
Runpod pytorch 2.0.1 템플릿을 선택합니다. 이것은 중요합니다. 다른 템플릿은 작동하지 않을 수 있습니다.
Runpod에 SSH로 접속합니다.
다음 명령어를 실행하여 저장소를 복제합니다.
CD /작업공간 git clone --재귀 https://github.com/bmaltais/kohya_ss.git
설정 스크립트를 실행합니다.
CD kohya_ss ./setup-runpod.sh
다음을 사용하여 GUI를 실행하십시오.
./gui.sh --share --headless
또는 runpod 구성을 통해 7860을 직접 노출하는 경우:
./gui.sh --listen=0.0.0.0 --헤드리스
설치 과정이 완료된 후 표시되는 공개 URL에 접속하세요.
사전 구축된 Runpod 템플릿에서 실행하려면 다음을 수행할 수 있습니다.
https://runpod.io/gsc?template=ya6013lj5a&ref=w18gds2n을 클릭하여 Runpod 템플릿을 엽니다.
원하는 호스트에 템플릿을 배포합니다.
배포되면 HTTP 3010의 Runpod에 연결하여 kohya_ss GUI에 액세스합니다. HTTP 3000에서 auto1111에 연결할 수도 있습니다.
Docker Desktop , CUDA Toolkit , NVIDIA Windows Driver를 설치하고 Docker가 WSL2 와 함께 실행되는지 확인했다면 이제 시작할 준비가 된 것입니다.
추가 참조를 위한 공식 문서는 다음과 같습니다.
https://docs.nvidia.com/cuda/wsl-user-guide/index.html#nvidia-compute-software-support-on-wsl-2 https://docs.docker.com/desktop/wsl/use -wsl/#gpu-지원
NVIDIA GPU 드라이버가 아직 설치되어 있지 않은 경우 설치하십시오.
https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/index.html
이 가이드를 사용하여 NVIDIA 컨테이너 툴킷을 설치하세요.
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
모든 학습 데이터는 /dataset
의 컨테이너에 마운트된 dataset
하위 디렉터리에 저장되어야 합니다.
파일 선택기 기능을 사용할 수 없습니다. 대신 폴더 경로와 구성 파일 경로를 수동으로 입력해야 합니다.
TensorBoard가 프로젝트에서 분리되었습니다.
TensorBoard는 Docker 이미지에 포함되지 않습니다.
"텐서보드 시작" 버튼이 숨겨졌습니다.
TensorBoard는 여기에 표시된 것처럼 별도의 컨테이너에서 시작됩니다.
브라우저가 자동으로 실행되지 않습니다. 수동으로 브라우저를 열고 http://localhost:7860/ 및 http://localhost:6006/으로 이동해야 합니다.
이 Dockerfile은 쉽게 폐기할 수 있도록 설계되었습니다. 언제든지 컨테이너를 삭제하고 새 코드 버전으로 다시 시작할 수 있습니다.
git clone --재귀 https://github.com/bmaltais/kohya_ss.gitcd kohya_ss 도커 작성 -d
시스템을 업데이트하려면 docker compose down && docker compose up -d --pull always
수행합니다.
중요한
하위 모듈을 포함하도록 Git 저장소를 재귀적으로 복제합니다.
git clone --recursive https://github.com/bmaltais/kohya_ss.git
git clone --재귀 https://github.com/bmaltais/kohya_ss.gitcd kohya_ss docker compose up -d --build
메모
이미지 빌드를 완료하는 데 최대 20분이 걸릴 수 있습니다.
시스템을 업데이트하려면 새 코드 버전으로 체크아웃 하고 docker compose down && docker compose up -d --build --pull always
사용하여 다시 빌드하세요.
Linux에서 실행 중인 경우 여기에서 제한이 더 적은 대체 Docker 컨테이너 포트를 사용할 수 있습니다.
Runpod에서 실행할 때 다음 리포지토리를 사용할 수 있습니다.
독립형 Kohya_ss 템플릿: https://github.com/ashleykleynhans/kohya-docker
Auto1111 + Kohya_ss GUI 템플릿: https://github.com/ashleykleynhans/stable-diffusion-docker
설치를 새 버전으로 업그레이드하려면 아래 지침을 따르십시오.
새 릴리스가 출시되면 프로젝트의 루트 디렉터리에서 다음 명령을 실행하여 리포지토리를 업그레이드할 수 있습니다.
저장소에서 최신 변경 사항을 가져옵니다.
자식 당겨
설정 스크립트를 실행합니다.
.setup.bat
Linux 또는 macOS에서 설치를 업그레이드하려면 다음 단계를 따르세요.
터미널을 열고 프로젝트의 루트 디렉터리로 이동합니다.
저장소에서 최신 변경 사항을 가져옵니다.
자식 당겨
모든 항목을 새로고침하고 업데이트하세요.
./setup.sh
GUI 서비스를 시작하려면 제공된 스크립트를 사용하거나 kohya_gui.py
스크립트를 직접 실행할 수 있습니다. 아래 나열된 명령줄 인수를 사용하여 기본 서비스를 구성합니다.
--listen: Specify the IP address to listen on for connections to Gradio.
--username: Set a username for authentication.
--password: Set a password for authentication.
--server_port: Define the port to run the server listener on.
--inbrowser: Open the Gradio UI in a web browser.
--share: Share the Gradio UI.
--language: Set custom language
Windows에서는 루트 디렉터리에 있는 gui.ps1
또는 gui.bat
스크립트를 사용할 수 있습니다. 원하는 명령줄 인수를 제공하여 원하는 스크립트를 선택하고 터미널에서 실행하세요. 예는 다음과 같습니다.
gui.ps1 --listen 127.0.0.1 --server_port 7860 --inbrowser --share
또는
gui.bat --listen 127.0.0.1 --server_port 7860 --inbrowser --share
Linux 또는 macOS에서 GUI를 실행하려면 루트 디렉터리에 있는 gui.sh
스크립트를 실행하세요. 다음과 같이 원하는 명령줄 인수를 제공합니다.
gui.sh --listen 127.0.0.1 --server_port 7860 --inbrowser --share
이제 저장소는 config.toml
이라는 기본 구성 파일을 제공합니다. 이 파일은 필요에 맞게 사용자 정의할 수 있는 템플릿입니다.
기본 구성 파일을 사용하려면 다음 단계를 따르세요.
저장소의 루트 디렉터리에 있는 config example.toml
파일을 config.toml
에 복사합니다.
텍스트 편집기에서 config.toml
파일을 엽니다.
요구 사항에 따라 경로와 설정을 수정합니다.
이 접근 방식을 사용하면 GUI에서 지원되는 각 유형의 폴더/파일 입력에 대해 원하는 기본 폴더를 열도록 특정 요구 사항에 맞게 구성을 쉽게 조정할 수 있습니다.
GUI를 실행할 때 config.toml(또는 원하는 다른 이름)의 경로를 지정할 수 있습니다. 예: ./gui.bat --config c:my_config.toml
LoRA를 교육하려면 현재 train_network.py
코드를 사용할 수 있습니다. 일체형 GUI를 사용하여 LoRA 네트워크를 생성할 수 있습니다.
LoRA 네트워크를 생성한 후에는 이 확장 프로그램을 설치하여 auto1111을 사용하여 이미지를 생성할 수 있습니다.
프롬프트 파일은 다음과 같습니다. 예를 들면 다음과 같습니다.
# 프롬프트 1걸작, 최고 품질, (1소녀), 흰 셔츠 입고, 상체, 뷰어를 바라보고 있음, 간단한 배경 --n 낮은 품질, 최악의 품질, 나쁜 해부학, 나쁜 구성, 나쁨, 적은 노력 --w 768 --h 768 --d 1 --l 7.5 --s 28# 프롬프트 2걸작, 최고 품질, 1소년, 비즈니스 정장을 입고, 거리에 서서 뒤를 돌아보며 --n(낮은 품질, 최악의 품질), 나쁜 해부학, 나쁨 구성, 열악함, 적은 노력 --w 576 --h 832 --d 2 --l 5.5 --s 40
#
으로 시작하는 줄은 주석입니다. 프롬프트 뒤에 --n
과 같은 옵션을 사용하여 생성된 이미지에 대한 옵션을 지정할 수 있습니다. 다음 옵션을 사용할 수 있습니다.
--n
: 다음 옵션까지 부정적인 프롬프트입니다.
--w
: 생성된 이미지의 너비를 지정합니다.
--h
: 생성된 이미지의 높이를 지정합니다.
--d
: 생성된 이미지의 시드를 지정합니다.
--l
: 생성된 이미지의 CFG 크기를 지정합니다.
--s
: 생성 단계 수를 지정합니다.
( )
, [ ]
등 프롬프트 가중치가 적용됩니다.
문제가 발생하면 아래 문제 해결 단계를 참조하세요.
페이지 파일과 관련된 X 오류가 발생하는 경우 Windows에서 페이지 파일 크기 제한을 늘려야 할 수 있습니다.
tkinter
모듈을 찾을 수 없다는 오류가 발생하면 시스템에 Python 3.10을 다시 설치해 보세요.
TESLA V100에서 LORA를 교육할 때 사용자는 GPU 사용률이 낮다고 보고했습니다. 또한 학습을 위한 기본 GPU 이외의 GPU를 지정하는 데 어려움이 있었습니다.
GPU 선택: 사용자는 설정 구성에서 GPU ID를 지정하여 훈련에 원하는 GPU를 선택할 수 있습니다.
GPU 로드 개선: adamW8bit
최적화 프로그램을 활용하고 배치 크기를 늘리면 GPU 메모리 제한을 초과하지 않고 GPU 활용도를 70-80% 달성하는 데 도움이 될 수 있습니다.
이 섹션의 문서는 나중에 별도의 문서로 이동됩니다.
마스킹된 손실은 각 훈련 스크립트에서 지원됩니다. 마스크 손실을 활성화하려면 --masked_loss
옵션을 지정합니다.
기능이 완전히 테스트되지 않았으므로 버그가 있을 수 있습니다. 문제가 발견되면 이슈를 열어주세요.
ControlNet 데이터세트는 마스크를 지정하는 데 사용됩니다. 마스크 이미지는 RGB 이미지여야 합니다. R 채널의 픽셀 값 255는 마스크로 처리되고(마스크가 있는 픽셀에 대해서만 손실이 계산됨), 0은 마스크가 아닌 것으로 처리됩니다. 픽셀 값 0-255는 0-1로 변환됩니다(즉, 픽셀 값 128은 손실의 절반 가중치로 처리됩니다). LLLite 문서에서 데이터세트 사양에 대한 세부정보를 참조하세요.
릴리스 정보를 참조하세요.