내용 자체는 접때 매뉴얼 번역돌린답시고 본 것 중에 있음
docs/config_README-ja.md
파일의 내용인데 제작자가 귀찮았는지 이 설명은 영문번역없이 일본어로만 적혀 있음

내용이 조금 장황했었는데, dataset_config 인자를 호출할 때 쓸 수 있는 데이터셋의 내용과 분류법이 적혀 있음
그럼 이걸로 뭘 할수 있냐고?
한 번의 학습에 각 학습데이터별로 해상도, 킵n토큰, 셔플캡션유무, 배치수 등등을 짬뽕할 수 있음
다른거야 엥간하면 통일시킬터이니, 여기서 가장 중요한 요소는 역시 해상도와 배치수게찌
일단 내 생각에는 고해상도 이미지들은 낮은 배치수와(비램때메) 높은 해상도를, 저해상도 이미자는 낮은 해상도에 높은 배치수를 사용하는 식으로

일단 보자
아무 이름의 toml파일을 만들고(메모장으로 만들면 된다) 내용을 편집한 후 코햐스크립트 GUI에서 (CLI를 사용하는 경우 걍 호출인자를 적으면 됨)
Advanced - Additional parameters
--dataset_config="D:\WEBUI0.55.4\LORA\train\mermaid\mermaid.toml"

를 적어주면 사용준비 완료. 경로는 본인의 세팅에 맞추자

위 toml파일에는 다음과 같이 적혀이따
---------------------------------------------------------------------------------------

[general]

caption_extension = '.txt'

shuffle_caption = true

keep_tokens = 3

resolution = 768

batch_size = 4


[[datasets]]

num_repeats = 8

    [[datasets.subsets]]

    image_dir = 'D:\WEBUI0.55.4\LORA\train\mermaid\img\8_mermaid whiteBG'

    class_tokens = 'mermaid'

    [[datasets.subsets]]

    image_dir = 'D:\WEBUI0.55.4\LORA\train\mermaid\img\8_mermaid'

    class_tokens = 'mermaid'


[[datasets]]

num_repeats = 4

    [[datasets.subsets]]

    image_dir = 'D:\WEBUI0.55.4\LORA\train\mermaid\img\4_mermaid whiteBG'

    class_tokens = 'mermaid'

    [[datasets.subsets]]

    image_dir = 'D:\WEBUI0.55.4\LORA\train\mermaid\img\4_mermaid'

    class_tokens = 'mermaid'


[[datasets]]

resolution = 512

batch_size = 8

num_repeats = 4

    [[datasets.subsets]]

    image_dir = 'D:\WEBUI0.55.4\LORA\train\mermaid\img\2_mermaid whiteBG'

    class_tokens = 'mermaid'

    [[datasets.subsets]]

    image_dir = 'D:\WEBUI0.55.4\LORA\train\mermaid\img\2_mermaid'

    class_tokens = 'mermaid'

    [[datasets.subsets]]

    image_dir = 'D:\WEBUI0.55.4\LORA\train\mermaid\img\2_mermaid NAI'

    class_tokens = 'mermaid'

---------------------------------------------------------------------------------------


상세한 항목은 각자 매뉴얼을 보도록 하고
제네럴 / 데이터셋 / 서브셋의 3중 트리구조로 작성한다
일부 요소는 중복 가능하며, 중복시 하위 세팅값이 우선 적용된다 (프로그램에서 동일 변수의 값을 덮어씌우는 느낌)
하위 세팅값을 안 적으면 상위의 값이 사용된다. 통일감을 위해 상위에 값을 세팅하는 것이 기본
여기의 세팅값과, 코햐스크립트 GUI의 값이 동시에 적용된 경우 이 파일의 값을 우선 적용한다
이걸 세팅하면 Folders - Image folder 의 경로는 무시된다 (정규화 경로도 아마 무시됨)

제네럴은 전역 설정으로, 하나만 작성한다. 두 개 쓰면 에러나게찌
데이터셋은 하나 이상 작성한다. 해상도를 달리 하려면 두개이상 써야함
서브셋은 데이터셋마다 하나 이상 작성한다. 이미지 경로때문에 반드시 하나는 있어야함

3계층 모두에 사용할 수 있는 값이 있으며 (keep_tokens, num_repeats 등등은 세곳 어디에든 사용가능)
제네럴/데이터셋에만 사용가능한 값이 있고
학습법이 드림부스인 경우(로라는 드림부스 취급) 서브셋에만 사용가능한 인자가 있다
이미지 경로는 서브셋에만 사용 가능하고, 해상도는 서브셋에 사용 불가능하기에
이미지 폴더별로 해상도를 다 다르게 학습하고 싶다면 데이터셋마다 서브셋 하나씩 넣어서 작성해야한다
서브셋의 이미지 경로는 "반드시" 있어야 하며, GUI의 img 경로와 달리 그림파일이 있는 폴더 자체를 지정한다
이때 리핏_토큰 문법을 지킬 필요는 없는데 걍 이 데이터셋 안 쓸 수도 있으니까 있는거 그대로 지정

동작하는지 깔짝 체크만 하느라고 안 넣었는데 caption_prefix 인자를 추가할 수 있다. 삼계층 모두 사용가능
이걸 넣어주면 더이상 태깅후에 전 데이터셋에 트리거워드 집어넣는 병신짓을 안 해도 된다. 걍 여기에 하나 넣어주면 되니
셔플캡션 사용시 추가된 프롬 반영후 섞으므로 킵n토큰 사용시에는 추가된 캡션 갯수도 고려해야 함


위의 데이터셋 인자를 호출하여 학습 한 경우
복붙할려다가 22.6.2의 CMD화면이 알록달록 이쁘게 나와서 걍 캡쳐해서 가져왔다.
굳이 안 봐도 되니까 귀찮으면 스킵바람


정상적으로 학습이 시작되면 배치는 입력해둔게 다 뜬다.
  batch size per device / バッチサイズ: 4, 8
이런 식으로. 문제는 총 스텝수가 이미지수는 리핏을 반영하는데 데이터셋에 따른 배치수를 감안하지 않아 예측값보다 커졌다
데이터셋별로 /4, /8이 되야 하는데 죄다 /4 해버려서 값이 커진것
이게 GUI의 값이 같이 기록되어 그런건지 (4로 되있음), 이걸 지우면 해소되는지는 추가 실험이 필요. 에러가 날지도?

혹시나 이걸 이용하겠다면 max_train_steps를 지정한다던지 하는 보조가 필요하다. 좀 귀찮
이 현상은 버켓 사이즈가 달라서 미묘하게 에포크당 스텝수가 꼬이는 현상과는 별개







... 에러 엔딩이 났는데 저번에 0.5+0.5 실험하고 저장해둔뒤 만들어진 로라 호출을 안 빼서 이모양
어짜피 지금 학습할건 아니었으니 뭐 됐나
이걸로 어떤건 좌우반전 적용하고 어떤건 적용안하고 등등 활용법이 제법 되니까 각자 연구해보자
단 이걸 쓴다고 학습이 잘된다는 보장은 엄따... 그랬으면 다들 이렇게 학습하고 있었겠지
그리고 이렇게 학습한 결과의 메타데이터는 어찌되나 모르겠는데 일단 시비타이에서 받은것들 중에 이렇게 학습한건 못 본거 같다