아직 Stable Cascade용 kohya_ss는 초기 개발단계라서 미래에는 달라질 수 있음. 일부 설치 사용법은 https://arca.live/b/aiart/68205055 에서 긴빠이 해옴.
1. 필요한 것
- 권장 VRAM 16GB 이상 NVIDIA 그래픽 카드 (1024,1024)
- 최소 VRAM 12GB 이상 NVIDIA 그래픽 카드 (768,768)
- 엔비디아가 아닌것은 정보가 없음.
- Windows 10/11
- 리눅스에서 설치는 가능하나 방법이 좀 다름.
- python 3.10 하고 git
- 설치 시 PATH 환경 변수 추가 하기.
- stable diffusion WebUI (automatic1111)
- WD Tagger 1.4 돌리는 용도
- ComfyUI
- 학습할 데이터셋 (리사이징 안 해도 된다고 함, 학습할 해상도보다 크기만 하면 됨)
- 관련 지식 (원 클릭, 세 줄 요약, 기본 설명 그런 거 없다)
https://github.com/kohya-ss/sd-scripts/tree/stable-cascade 을 기반으로 설명할 것임
2. 설치
먼저 설치할 곳에서 파워쉘을 열어야한다. Shift + 우클릭 한 다음 여기에 Powershell 창 열기를 선택하면 창이 열림.
그런 다음 git clone https://github.com/kohya-ss/sd-scripts -b stable-cascade 입력. 그럼 sd-scripts 폴더가 생겼을거임.
그런 다음 cd sd-scripts 입력. 팁을 하나 주자면 sd 까지만 입력하고 TAB 키를 누르면 자동완성 해주기도 한다.
그런 다음 python -m venv venv 입력해서 가상환경 만들고
그런 다음 .\venv\Scripts\activate 입력해서 가상환경에 진입한다.
그런 다음 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 입력하고 (torch 2.2.0)
그런 다음 pip3 install --upgrade -r requirements.txt 입력하고
그런 다음 pip3 install xformers 입력해서 이것저것 설치한다. (xformers 0.0.24)
bitsandbytes_windows 설치는 생략한다. 다른 optimizer 사용으로 bitsandbytes를 사용하지 않을것이다.
그런 다음 accelerate config 입력하고
This machine [엔터]
No distributed training [엔터]
NO [엔터] - 기본값이 NO 엔터만 쳐도 됨!
NO [엔터]
NO [엔터]
all [입력]
bf16 [숫자 1 눌러서 선택 후 엔터
sd-scripts에 있는 PowerShell 창은 닫을 필요는 없음. 닫았다면 sd-scripts 폴더에서 Shift + 우클릭 한 다음 여기에 Powershell 창 열기를 선택한 다음 .\venv\Scripts\activate로 다시 실행하면 됨.
3. 데이터셋 태깅하기.
그림체 학습인 경우에는 태깅을 권장하지 않음.
데이터셋을 아직 구하지 못했다면 픽시브 단부루 구글 기타등등 알아서 구해놓 길 바람. 그리고 데이터셋만 잘 구하면 학습은 잘된다. 데이터셋을 목적에 맞게 잘 수집하길 바람. 잘 구하는 방법은 너무 길어서 여따 적진 않을거임.
잠시 WebUI를 키고 WD Tagger 1.4 확장기능을 다운 받는다.
혹시 설치 안 했으면 설치해라. 설치하고 webui 재시작. 인풋 이미지 경로에 너가 모아둔 이미지 파일들 경로 적어두고 밑에 설정에 두 개 체크한 다음에, 가중치는 0.35가 적절한데 바꾸고 싶으면 바꾸든가 해라. 높을수록 더 정확한 태그만 붙여줌. 설정 다 했으면 interrogate 누르면 끝. 이제 WebUI는 꺼도 됨. 태깅 끝.
4. 학습 설정
GUI 버전과 다르게 CUI 버전은 toml 파일을 만들어서 진행해야한다. 이 세팅은 아직 정확한 세팅이 아니니 참고.
메인 설정의 toml 파일과 데이터셋 설정용 toml 파일 총 두개의 toml 파일을 만들어야 한다.
toml 파일에는 \ 또는 역슬래시 문자가 들어가면 안됨.
일단 메인 toml 파일. 대충 이렇게 생겼다.
stage_c_checkpoint_path = "C:/dos/temp3/models/stage_c_bf16.safetensors"
pretrained_model_name_or_path = "C:/dos/temp3/models/stage_c_bf16.safetensors"
effnet_checkpoint_path = "C:/dos/temp3/models/effnet_encoder.safetensors"
text_model_checkpoint_path = "C:/dos/temp3/models/model.safetensors"
dataset_config = "C:/dos/temp3/data2.toml"
output_dir = "C:/dos/temp3/testrun1"
output_name = "sc-test"
resolution = "768,768"
bucket_reso_steps = 128
train_batch_size = 1
max_train_steps = 4000
enable_bucket = true
bucket_no_upscale = true
full_bf16 = true
save_model_as = "safetensors"
optimizer_type = "adafactor"
optimizer_args = [ "scale_parameter=False", "relative_step=False", "warmup_init=False" ]
lr_scheduler = "constant_with_warmup"
lr_warmup_steps = 100
learning_rate = 0.0001
xformers = true
mixed_precision = "bf16"
save_precision = "bf16"
cache_latents = true
gradient_checkpointing = true
save_every_n_epochs = 1
min_timestep = 0
max_timestep = 1000
network_module = "networks.lora"
train_text_encoder = false
adaptive_loss_weight = true
cache_text_encoder_outputs = true
pretrained_model_name_or_path 와 stage_c_checkpoint_path는 stage_c_bf16.safetensors 모델이 있는 절대 위치를 입력해줘야 한다.
effnet_checkpoint_path는 effnet_encoder.safetensors 모델이 있는 절대 위치를 입력해줘야 한다.
text_model_checkpoint_path는 Stable Cascade의 CLIP 모델이 있는 절대 위치를 입력해줘야 한다. 어떤것인가면 https://huggingface.co/stabilityai/stable-cascade-prior/blob/main/text_encoder/model.safetensors 을 의미한다.
dataset_config는 데이터셋 설정용 toml이 있는 절대 위치를 입력해줘야 한다.
output_dir는 LoRA 파일이 저장되는 위치.
output_name는 LoRA 파일 이름.
resolution는 학습 해상도.
train_batch_size는 배치 사이즈.
max_train_steps는 정지하는 시점의 스텝. 주의할것은 GUI 버전하고 다르게 CUI 버전의 총 스텝수는 max_train_steps에 train_batch_size를 곱한 수이다.
이 이하의 세팅값들의 대충 알아서 설명 생략.
그런 다음 데이터셋 설정용 toml. 대충 이렇게 생겼다.
[[datasets]]
[[datasets.subsets]]
image_dir = 'C:/dos/sdxl/ika'
class_tokens = 'anime ikamusume 1girl'
num_repeats = 5
caption_extension = ".txt"
image_dir는 데이터셋이 있는 위치. 주의할것은 GUI 버전하고 다르게 CUI 버전은 이미지가 들어있는 폴더를 지정해야한다.
class_tokens는 이 데이터셋에 대한 설명. (태깅된 파일이 있으면 무시되지만 비어있으면 안된다)
num_repeats는 리피트. 대충 에포크가 10을 넘지 않도록 설정한다. (max_train_steps x train_batch_size) ÷ (num_repeats x 데이터셋 이미지수 수) 의 올림 수치가 에포크 수이다.
caption_extension은 캡션 파일 확장자.
이렇게 텍스트 파일을 만든 다음 확장자를 .toml로 저장하자. 여기서는 메인 toml 파일을 C:\dos\sdxl\run.toml 로 저장했고 데이터셋 설정용 toml을 C:\dos\sdxl\data.toml 으로 저장했다.
5. 학습 가동
닫았다면 sd-scripts 폴더에서 Shift + 우클릭 한 다음 여기에 Powershell 창 열기를 선택한 다음 .\venv\Scripts\activate로 다시 실행하면 됨.
sd-scripts에 있는 PowerShell 창에 아래처럼 입력한다.
accelerate launch --num_cpu_threads_per_process=2 stable_cascade_train_c_network.py --config_file="C:/dos/temp3/sd-scripts/test.toml" --stage_c_checkpoint_path "C:/dos/temp3/models/stage_c_bf16.safetensors" --effnet_checkpoint_path "C:/dos/temp3/models/effnet_encoder.safetensors" --text_model_checkpoint_path "C:/dos/temp3/models/model.safetensors"
당연하지만 config_file, stage_c_checkpoint_path , effnet_checkpoint_path, text_model_checkpoint_path는 알맞는 절대 경로로 수정해야함.
6. LoRA 사용 방법
ComfyUI에서 SD LoRA 사용하듯이 사용하면 된다.
끝
1024x1024 해상도로 특정 개념을 학습한 경우
768x768 해상도로 특정 스타일을 학습한 경우