Upload 8 files
Browse files- Log/YujinIVE20230821105554/network_train/events.out.tfevents.1692615423.ae63f807da5a.12587.0 +3 -0
- Model/.DS_Store +0 -0
- Model/Yujin_V1/YujinIVE-30.safetensors +3 -0
- SS_config.json +1 -0
- train.ps1 +103 -0
- train.sh +67 -0
- trainmacos.py +74 -0
- yujinIVElocal.py +72 -0
Log/YujinIVE20230821105554/network_train/events.out.tfevents.1692615423.ae63f807da5a.12587.0
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7c3b310705d406c973db147889d4835a358906345a03e1f3a42e090889881add
|
| 3 |
+
size 604020
|
Model/.DS_Store
ADDED
|
Binary file (6.15 kB). View file
|
|
|
Model/Yujin_V1/YujinIVE-30.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:fb1a59a4378f808e20e58be850588bbeb4c7685fb121e6deb1c040e5c6bcfa35
|
| 3 |
+
size 37869086
|
SS_config.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
| 0 |
"pretrained_model_name_or_path": "runwayml/stable-diffusion-v1-5",
|
| 1 |
"v2": false,
|
| 2 |
"v_parameterization": false,
|
| 3 |
"logging_dir": "/workspace/KaraDetroit_loar/Log",
|
| 4 |
"train_data_dir": "/workspace/KaraDetroit_loar/Image",
|
| 5 |
"reg_data_dir": "",
|
| 6 |
"output_dir": "/workspace/KaraDetroit_loar/Model",
|
| 7 |
"max_resolution": "768,768",
|
| 8 |
"learning_rate": "5e-5",
|
| 9 |
"lr_scheduler": "constant",
|
| 10 |
"lr_warmup": "0",
|
| 11 |
"train_batch_size": 2,
|
| 12 |
"epoch": 10,
|
| 13 |
"save_every_n_epochs": 1,
|
| 14 |
"mixed_precision": "bf16",
|
| 15 |
"save_precision": "fp16",
|
| 16 |
"seed": "",
|
| 17 |
"num_cpu_threads_per_process": 2,
|
| 18 |
"cache_latents": true,
|
| 19 |
"caption_extension": ".txt",
|
| 20 |
"enable_bucket": true,
|
| 21 |
"gradient_checkpointing": true,
|
| 22 |
"full_fp16": false,
|
| 23 |
"no_token_padding": false,
|
| 24 |
"stop_text_encoder_training": 0,
|
| 25 |
"xformers": true,
|
| 26 |
"save_model_as": "safetensors",
|
| 27 |
"shuffle_caption": true,
|
| 28 |
"save_state": false,
|
| 29 |
"resume": "",
|
| 30 |
"prior_loss_weight": 1.0,
|
| 31 |
"text_encoder_lr": "5e-5",
|
| 32 |
"unet_lr": "0.0001",
|
| 33 |
"network_dim": 200,
|
| 34 |
"lora_network_weights": "",
|
| 35 |
"color_aug": false,
|
| 36 |
"flip_aug": false,
|
| 37 |
"clip_skip": "1",
|
| 38 |
"gradient_accumulation_steps": 1.0,
|
| 39 |
"mem_eff_attn": false,
|
| 40 |
"output_name": "my_model",
|
| 41 |
"model_list": "runwayml/stable-diffusion-v1-5",
|
| 42 |
"max_token_length": "225",
|
| 43 |
"max_train_epochs": "",
|
| 44 |
"max_data_loader_n_workers": "0",
|
| 45 |
"network_alpha": 200,
|
| 46 |
"training_comment": "",
|
| 47 |
"keep_tokens": "0",
|
| 48 |
"lr_scheduler_num_cycles": "",
|
| 49 |
"lr_scheduler_power": "",
|
| 50 |
"persistent_data_loader_workers": false,
|
| 51 |
"bucket_no_upscale": true,
|
| 52 |
"random_crop": false,
|
| 53 |
"bucket_reso_steps": 64.0,
|
| 54 |
"caption_dropout_every_n_epochs": 0.0,
|
| 55 |
"caption_dropout_rate": 0,
|
| 56 |
"optimizer": "AdamW8bit",
|
| 57 |
"optimizer_args": "",
|
| 58 |
"noise_offset": "",
|
| 59 |
"LoRA_type": "Standard",
|
| 60 |
"conv_dim": 1,
|
| 61 |
"conv_alpha": 1,
|
| 62 |
"sample_every_n_steps": 0,
|
| 63 |
"sample_every_n_epochs": 0,
|
| 64 |
"sample_sampler": "euler_a",
|
| 65 |
"sample_prompts": "",
|
| 66 |
"additional_parameters": "",
|
| 67 |
"vae_batch_size": 0,
|
| 68 |
"min_snr_gamma": 0,
|
| 69 |
"down_lr_weight": "",
|
| 70 |
"mid_lr_weight": "",
|
| 71 |
"up_lr_weight": "",
|
| 72 |
"block_lr_zero_threshold": "",
|
| 73 |
"block_dims": "",
|
| 74 |
"block_alphas": "",
|
| 75 |
"conv_dims": "",
|
| 76 |
"conv_alphas": ""
|
|
|
|
| 1 |
+
{
|
| 2 |
"pretrained_model_name_or_path": "runwayml/stable-diffusion-v1-5",
|
| 3 |
"v2": false,
|
| 4 |
"v_parameterization": false,
|
| 5 |
"logging_dir": "/workspace/KaraDetroit_loar/Log",
|
| 6 |
"train_data_dir": "/workspace/KaraDetroit_loar/Image",
|
| 7 |
"reg_data_dir": "",
|
| 8 |
"output_dir": "/workspace/KaraDetroit_loar/Model",
|
| 9 |
"max_resolution": "768,768",
|
| 10 |
"learning_rate": "5e-5",
|
| 11 |
"lr_scheduler": "constant",
|
| 12 |
"lr_warmup": "0",
|
| 13 |
"train_batch_size": 2,
|
| 14 |
"epoch": 10,
|
| 15 |
"save_every_n_epochs": 1,
|
| 16 |
"mixed_precision": "bf16",
|
| 17 |
"save_precision": "fp16",
|
| 18 |
"seed": "",
|
| 19 |
"num_cpu_threads_per_process": 2,
|
| 20 |
"cache_latents": true,
|
| 21 |
"caption_extension": ".txt",
|
| 22 |
"enable_bucket": true,
|
| 23 |
"gradient_checkpointing": true,
|
| 24 |
"full_fp16": false,
|
| 25 |
"no_token_padding": false,
|
| 26 |
"stop_text_encoder_training": 0,
|
| 27 |
"xformers": true,
|
| 28 |
"save_model_as": "safetensors",
|
| 29 |
"shuffle_caption": true,
|
| 30 |
"save_state": false,
|
| 31 |
"resume": "",
|
| 32 |
"prior_loss_weight": 1.0,
|
| 33 |
"text_encoder_lr": "5e-5",
|
| 34 |
"unet_lr": "0.0001",
|
| 35 |
"network_dim": 200,
|
| 36 |
"lora_network_weights": "",
|
| 37 |
"color_aug": false,
|
| 38 |
"flip_aug": false,
|
| 39 |
"clip_skip": "1",
|
| 40 |
"gradient_accumulation_steps": 1.0,
|
| 41 |
"mem_eff_attn": false,
|
| 42 |
"output_name": "my_model",
|
| 43 |
"model_list": "runwayml/stable-diffusion-v1-5",
|
| 44 |
"max_token_length": "225",
|
| 45 |
"max_train_epochs": "",
|
| 46 |
"max_data_loader_n_workers": "0",
|
| 47 |
"network_alpha": 200,
|
| 48 |
"training_comment": "",
|
| 49 |
"keep_tokens": "0",
|
| 50 |
"lr_scheduler_num_cycles": "",
|
| 51 |
"lr_scheduler_power": "",
|
| 52 |
"persistent_data_loader_workers": false,
|
| 53 |
"bucket_no_upscale": true,
|
| 54 |
"random_crop": false,
|
| 55 |
"bucket_reso_steps": 64.0,
|
| 56 |
"caption_dropout_every_n_epochs": 0.0,
|
| 57 |
"caption_dropout_rate": 0,
|
| 58 |
"optimizer": "AdamW8bit",
|
| 59 |
"optimizer_args": "",
|
| 60 |
"noise_offset": "",
|
| 61 |
"LoRA_type": "Standard",
|
| 62 |
"conv_dim": 1,
|
| 63 |
"conv_alpha": 1,
|
| 64 |
"sample_every_n_steps": 0,
|
| 65 |
"sample_every_n_epochs": 0,
|
| 66 |
"sample_sampler": "euler_a",
|
| 67 |
"sample_prompts": "",
|
| 68 |
"additional_parameters": "",
|
| 69 |
"vae_batch_size": 0,
|
| 70 |
"min_snr_gamma": 0,
|
| 71 |
"down_lr_weight": "",
|
| 72 |
"mid_lr_weight": "",
|
| 73 |
"up_lr_weight": "",
|
| 74 |
"block_lr_zero_threshold": "",
|
| 75 |
"block_dims": "",
|
| 76 |
"block_alphas": "",
|
| 77 |
"conv_dims": "",
|
| 78 |
"conv_alphas": ""
|
train.ps1
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
$pretrained_model="/path/to/directorychilloutmix_NiPrunedFp32Fix.safetensors"
|
| 2 |
+
$train_data_dir="/path/to/directory"
|
| 3 |
+
$reg_data_dir = ""
|
| 4 |
+
|
| 5 |
+
$resolution = "768,768"
|
| 6 |
+
$batch_size = 2
|
| 7 |
+
$max_train_epoches = 10
|
| 8 |
+
$save_every_n_epochs = 1
|
| 9 |
+
$network_dim = 64
|
| 10 |
+
$network_alpha = 32
|
| 11 |
+
$clip_skip = 2
|
| 12 |
+
$train_unet_only = 0
|
| 13 |
+
$train_text_encoder_only = 0
|
| 14 |
+
|
| 15 |
+
$lr = "5e-5"
|
| 16 |
+
$unet_lr = "5e-5"
|
| 17 |
+
$text_encoder_lr = "6e-6"
|
| 18 |
+
$lr_scheduler = "cosine_with_restarts"
|
| 19 |
+
$lr_warmup_steps = 50
|
| 20 |
+
$lr_restart_cycles = 1
|
| 21 |
+
|
| 22 |
+
$output_name = "yujinive_v2"
|
| 23 |
+
$save_model_as = "safetensors"
|
| 24 |
+
|
| 25 |
+
$network_weights = ""
|
| 26 |
+
# $network_weights = "D:\workspace\stable-diffusion-webui\models\Lora\koreanDollLikeness_v10.safetensors" # pretrained weights for LoRA network
|
| 27 |
+
$min_bucket_reso = 256
|
| 28 |
+
$max_bucket_reso = 1024
|
| 29 |
+
$persistent_data_loader_workers = 0
|
| 30 |
+
|
| 31 |
+
$use_8bit_adam = 0
|
| 32 |
+
$use_lion = 1
|
| 33 |
+
|
| 34 |
+
.\venv\Scripts\activate
|
| 35 |
+
|
| 36 |
+
$Env:HF_HOME = "huggingface"
|
| 37 |
+
$ext_args = [System.Collections.ArrayList]::new()
|
| 38 |
+
|
| 39 |
+
if ($train_unet_only) {
|
| 40 |
+
[void]$ext_args.Add("--network_train_unet_only")
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
if ($train_text_encoder_only) {
|
| 44 |
+
[void]$ext_args.Add("--network_train_text_encoder_only")
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
if ($network_weights) {
|
| 48 |
+
[void]$ext_args.Add("--network_weights=" + $network_weights)
|
| 49 |
+
}
|
| 50 |
+
|
| 51 |
+
if ($reg_data_dir) {
|
| 52 |
+
[void]$ext_args.Add("--reg_data_dir=" + $reg_data_dir)
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
if ($use_8bit_adam) {
|
| 56 |
+
[void]$ext_args.Add("--use_8bit_adam")
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
if ($use_lion) {
|
| 60 |
+
[void]$ext_args.Add("--use_lion_optimizer")
|
| 61 |
+
}
|
| 62 |
+
|
| 63 |
+
if ($persistent_data_loader_workers) {
|
| 64 |
+
[void]$ext_args.Add("--persistent_data_loader_workers")
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
# run train
|
| 68 |
+
accelerate launch --num_cpu_threads_per_process=8 "./sd-scripts/train_network.py" `
|
| 69 |
+
--enable_bucket `
|
| 70 |
+
--pretrained_model_name_or_path=$pretrained_model `
|
| 71 |
+
--train_data_dir=$train_data_dir `
|
| 72 |
+
--output_dir="./output" `
|
| 73 |
+
--logging_dir="./logs" `
|
| 74 |
+
--resolution=$resolution `
|
| 75 |
+
--network_module=networks.lora `
|
| 76 |
+
--max_train_epochs=$max_train_epoches `
|
| 77 |
+
--learning_rate=$lr `
|
| 78 |
+
--unet_lr=$unet_lr `
|
| 79 |
+
--text_encoder_lr=$text_encoder_lr `
|
| 80 |
+
--lr_scheduler=$lr_scheduler `
|
| 81 |
+
--lr_warmup_steps=$lr_warmup_steps `
|
| 82 |
+
--lr_scheduler_num_cycles=$lr_restart_cycles `
|
| 83 |
+
--network_dim=$network_dim `
|
| 84 |
+
--network_alpha=$network_alpha `
|
| 85 |
+
--output_name=$output_name `
|
| 86 |
+
--train_batch_size=$batch_size `
|
| 87 |
+
--save_every_n_epochs=$save_every_n_epochs `
|
| 88 |
+
--mixed_precision="fp16" `
|
| 89 |
+
--save_precision="fp16" `
|
| 90 |
+
--seed="1337" `
|
| 91 |
+
--cache_latents `
|
| 92 |
+
--clip_skip=$clip_skip `
|
| 93 |
+
--prior_loss_weight=1 `
|
| 94 |
+
--max_token_length=225 `
|
| 95 |
+
--caption_extension=".txt" `
|
| 96 |
+
--save_model_as=$save_model_as `
|
| 97 |
+
--min_bucket_reso=$min_bucket_reso `
|
| 98 |
+
--max_bucket_reso=$max_bucket_reso `
|
| 99 |
+
--xformers --shuffle_caption $ext_args
|
| 100 |
+
|
| 101 |
+
Write-Output "Train finished"
|
| 102 |
+
Read-Host | Out-Null ;
|
| 103 |
+
|
train.sh
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
|
| 3 |
+
source venv/bin/activate
|
| 4 |
+
|
| 5 |
+
pretrained_model="/path/to/directory/chilloutmix_NiPrunedFp32Fix.safetensors" # Base model path
|
| 6 |
+
train_data_dir="/path/to/directory"
|
| 7 |
+
output_dir="./output"
|
| 8 |
+
logging_dir="./logs"
|
| 9 |
+
|
| 10 |
+
resolution="768,768"
|
| 11 |
+
batch_size=2
|
| 12 |
+
max_train_epochs=10
|
| 13 |
+
save_every_n_epochs=1
|
| 14 |
+
network_dim=64
|
| 15 |
+
network_alpha=32
|
| 16 |
+
clip_skip=2
|
| 17 |
+
train_unet_only=0
|
| 18 |
+
train_text_encoder_only=0
|
| 19 |
+
|
| 20 |
+
lr="5e-5"
|
| 21 |
+
unet_lr="5e-5"
|
| 22 |
+
text_encoder_lr="6e-6"
|
| 23 |
+
lr_scheduler="cosine_with_restarts"
|
| 24 |
+
lr_warmup_steps=50
|
| 25 |
+
lr_restart_cycles=1
|
| 26 |
+
|
| 27 |
+
output_name="yujinive_v2"
|
| 28 |
+
save_model_as="safetensors"
|
| 29 |
+
|
| 30 |
+
min_bucket_reso=64
|
| 31 |
+
max_bucket_reso=768
|
| 32 |
+
|
| 33 |
+
python "./sd-scripts/train_network.py" \
|
| 34 |
+
--enable_bucket \
|
| 35 |
+
--pretrained_model_name_or_path="$pretrained_model" \
|
| 36 |
+
--train_data_dir="$train_data_dir" \
|
| 37 |
+
--output_dir="$output_dir" \
|
| 38 |
+
--resolution="$resolution" \
|
| 39 |
+
--network_module=networks.lora \
|
| 40 |
+
--max_train_epochs="$max_train_epochs" \
|
| 41 |
+
--learning_rate="$lr" \
|
| 42 |
+
--unet_lr="$unet_lr" \
|
| 43 |
+
--text_encoder_lr="$text_encoder_lr" \
|
| 44 |
+
--lr_scheduler="$lr_scheduler" \
|
| 45 |
+
--lr_warmup_steps="$lr_warmup_steps" \
|
| 46 |
+
--lr_scheduler_num_cycles="$lr_restart_cycles" \
|
| 47 |
+
--network_dim="$network_dim" \
|
| 48 |
+
--network_alpha="$network_alpha" \
|
| 49 |
+
--output_name="$output_name" \
|
| 50 |
+
--train_batch_size="$batch_size" \
|
| 51 |
+
--save_every_n_epochs="$save_every_n_epochs" \
|
| 52 |
+
--mixed_precision="fp16" \
|
| 53 |
+
--save_precision="fp16" \
|
| 54 |
+
--seed="1337" \
|
| 55 |
+
--cache_latents \
|
| 56 |
+
--clip_skip="$clip_skip" \
|
| 57 |
+
--prior_loss_weight=1 \
|
| 58 |
+
--max_token_length=225 \
|
| 59 |
+
--caption_extension=".txt" \
|
| 60 |
+
--save_model_as="$save_model_as" \
|
| 61 |
+
--min_bucket_reso="$min_bucket_reso" \
|
| 62 |
+
--max_bucket_reso="$max_bucket_reso" \
|
| 63 |
+
--xformers \
|
| 64 |
+
--shuffle_caption
|
| 65 |
+
|
| 66 |
+
echo "Training completed"
|
| 67 |
+
read -n 1 -s -r -p "Press any key to continue..."
|
trainmacos.py
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import subprocess
|
| 2 |
+
|
| 3 |
+
pretrained_model = "/path/to/directorychilloutmix_NiPrunedFp32Fix.safetensors"
|
| 4 |
+
train_data_dir = "/path/to/directory"
|
| 5 |
+
reg_data_dir = "/path/to/directory"
|
| 6 |
+
|
| 7 |
+
resolution = "768,768"
|
| 8 |
+
batch_size = 2
|
| 9 |
+
max_train_epochs = 10
|
| 10 |
+
save_every_n_epochs = 1
|
| 11 |
+
network_dim = 64
|
| 12 |
+
network_alpha = 32
|
| 13 |
+
clip_skip = 2
|
| 14 |
+
train_unet_only = 0
|
| 15 |
+
train_text_encoder_only = 0
|
| 16 |
+
|
| 17 |
+
lr = "5e-5"
|
| 18 |
+
unet_lr = "5e-5"
|
| 19 |
+
text_encoder_lr = "6e-6"
|
| 20 |
+
lr_scheduler = "cosine_with_restarts"
|
| 21 |
+
lr_warmup_steps = 50
|
| 22 |
+
lr_restart_cycles = 1
|
| 23 |
+
|
| 24 |
+
output_name = "yujinive_v2"
|
| 25 |
+
save_model_as = "safetensors"
|
| 26 |
+
|
| 27 |
+
network_weights = ""
|
| 28 |
+
min_bucket_reso = 256
|
| 29 |
+
max_bucket_reso = 1024
|
| 30 |
+
persistent_data_loader_workers = 0
|
| 31 |
+
|
| 32 |
+
subprocess.run(["source", "venv/bin/activate"], shell=True)
|
| 33 |
+
|
| 34 |
+
subprocess.run(["export", "HF_HOME=huggingface"], shell=True)
|
| 35 |
+
|
| 36 |
+
subprocess.run([
|
| 37 |
+
"python", "-m", "accelerate", "launch", "--num_processes=1", "--num_workers=8", "--use_env",
|
| 38 |
+
"./sd-scripts/train_network.py",
|
| 39 |
+
"--enable_bucket",
|
| 40 |
+
f"--pretrained_model_name_or_path={pretrained_model}",
|
| 41 |
+
f"--train_data_dir={train_data_dir}",
|
| 42 |
+
"--output_dir=./output",
|
| 43 |
+
"--logging_dir=./logs",
|
| 44 |
+
f"--resolution={resolution}",
|
| 45 |
+
"--network_module=networks.lora",
|
| 46 |
+
f"--max_train_epochs={max_train_epochs}",
|
| 47 |
+
f"--learning_rate={lr}",
|
| 48 |
+
f"--unet_lr={unet_lr}",
|
| 49 |
+
f"--text_encoder_lr={text_encoder_lr}",
|
| 50 |
+
f"--lr_scheduler={lr_scheduler}",
|
| 51 |
+
f"--lr_warmup_steps={lr_warmup_steps}",
|
| 52 |
+
f"--lr_scheduler_num_cycles={lr_restart_cycles}",
|
| 53 |
+
f"--network_dim={network_dim}",
|
| 54 |
+
f"--network_alpha={network_alpha}",
|
| 55 |
+
f"--output_name={output_name}",
|
| 56 |
+
f"--train_batch_size={batch_size}",
|
| 57 |
+
f"--save_every_n_epochs={save_every_n_epochs}",
|
| 58 |
+
"--mixed_precision=fp16",
|
| 59 |
+
"--save_precision=fp16",
|
| 60 |
+
"--seed=1337",
|
| 61 |
+
"--cache_latents",
|
| 62 |
+
f"--clip_skip={clip_skip}",
|
| 63 |
+
"--prior_loss_weight=1",
|
| 64 |
+
"--max_token_length=225",
|
| 65 |
+
"--caption_extension=.txt",
|
| 66 |
+
f"--save_model_as={save_model_as}",
|
| 67 |
+
f"--min_bucket_reso={min_bucket_reso}",
|
| 68 |
+
f"--max_bucket_reso={max_bucket_reso}",
|
| 69 |
+
"--xformers",
|
| 70 |
+
"--shuffle_caption"
|
| 71 |
+
])
|
| 72 |
+
|
| 73 |
+
print("Train finished")
|
| 74 |
+
input("Press any key to continue...")
|
yujinIVElocal.py
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import torch
|
| 3 |
+
import torchvision
|
| 4 |
+
from torch.utils.data import DataLoader
|
| 5 |
+
from torchvision.transforms import transforms
|
| 6 |
+
import toml
|
| 7 |
+
|
| 8 |
+
batch_size = 8
|
| 9 |
+
num_epochs = 10
|
| 10 |
+
learning_rate = 0.001
|
| 11 |
+
|
| 12 |
+
class LoRAModel(torch.nn.Module):
|
| 13 |
+
def __init__(self):
|
| 14 |
+
super(LoRAModel, self).__init__()
|
| 15 |
+
|
| 16 |
+
def forward(self, x):
|
| 17 |
+
pass
|
| 18 |
+
|
| 19 |
+
custom_dataset = """
|
| 20 |
+
[[datasets]]
|
| 21 |
+
|
| 22 |
+
[[datasets.subsets]]
|
| 23 |
+
image_dir = "/path/to/directory"
|
| 24 |
+
num_repeats = 10
|
| 25 |
+
|
| 26 |
+
[[datasets.subsets]]
|
| 27 |
+
image_dir = "/path/to/directory"
|
| 28 |
+
is_reg = true
|
| 29 |
+
num_repeats = 1
|
| 30 |
+
"""
|
| 31 |
+
|
| 32 |
+
dataset_config = toml.loads(custom_dataset)
|
| 33 |
+
datasets = dataset_config.get("datasets", [])
|
| 34 |
+
transform = transforms.Compose([
|
| 35 |
+
transforms.Resize((512, 512)),
|
| 36 |
+
transforms.ToTensor(),
|
| 37 |
+
])
|
| 38 |
+
|
| 39 |
+
train_datasets = []
|
| 40 |
+
for dataset in datasets:
|
| 41 |
+
subsets = dataset.get("subsets", [])
|
| 42 |
+
for subset in subsets:
|
| 43 |
+
image_dir = subset.get("image_dir")
|
| 44 |
+
num_repeats = subset.get("num_repeats", 1)
|
| 45 |
+
is_reg = subset.get("is_reg", False)
|
| 46 |
+
|
| 47 |
+
dataset = torchvision.datasets.ImageFolder(root=image_dir, transform=transform)
|
| 48 |
+
train_datasets.extend([dataset] * num_repeats)
|
| 49 |
+
|
| 50 |
+
train_dataset = torch.utils.data.ConcatDataset(train_datasets)
|
| 51 |
+
|
| 52 |
+
dataloader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
|
| 53 |
+
|
| 54 |
+
model = LoRAModel()
|
| 55 |
+
criterion = torch.nn.CrossEntropyLoss()
|
| 56 |
+
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)
|
| 57 |
+
|
| 58 |
+
total_step = len(dataloader)
|
| 59 |
+
for epoch in range(num_epochs):
|
| 60 |
+
for i, (images, labels) in enumerate(dataloader):
|
| 61 |
+
outputs = model(images)
|
| 62 |
+
loss = criterion(outputs, labels)
|
| 63 |
+
|
| 64 |
+
optimizer.zero_grad()
|
| 65 |
+
loss.backward()
|
| 66 |
+
optimizer.step()
|
| 67 |
+
|
| 68 |
+
if (i + 1) % 100 == 0:
|
| 69 |
+
print(f"Epoch [{epoch + 1}/{num_epochs}], Step [{i + 1}/{total_step}], Loss: {loss.item()}")
|
| 70 |
+
|
| 71 |
+
save_path = "/path/to/directory/model.pth"
|
| 72 |
+
torch.save(model.state_dict(), save_path)
|