아직 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 해상도로 특정 스타일을 학습한 경우