训练功能改用本地 kohya conda 环境执行,移除 Docker 依赖
- lora_train_service_1.py: 将 sudo docker run 命令替换为本地 python -m accelerate.commands.launch,通过 PYTHONPATH 复用 .local/ 下的 torch/accelerate/bitsandbytes 等包 - setup.sh: 添加 kohya 环境到 conda-pack 恢复列表 - start_all_services.sh: 导出 CONDA_BASE 供 photo_service 读取 - README.md: 添加 kohya.tar.gz 到网盘下载清单 - 已验证: 训练命令可完整执行(加载底模→创建LoRA→训练→保存)
This commit is contained in:
@@ -43,6 +43,15 @@ else:
|
||||
webui_lora_dir = os.path.join(BASE_DIR, 'stable-diffusion-webui', 'models', 'Lora')
|
||||
inference_use_onediff = False
|
||||
callback_url = 'http://0.0.0.0:8801/api/hair/trainCallBack'
|
||||
|
||||
# kohya 训练环境路径(本地执行,不再使用 Docker)
|
||||
CONDA_BASE = os.environ.get('CONDA_BASE', os.path.expanduser('~/miniconda3'))
|
||||
kohya_python = os.path.join(CONDA_BASE, 'envs', 'kohya', 'bin', 'python')
|
||||
kohya_local_packages = os.path.join(kohya_ss_home_dir, '.local', 'lib', 'python3.10', 'site-packages')
|
||||
kohya_ss_code_dir = os.path.join(kohya_ss_home_dir, 'kohya_ss')
|
||||
sd_models_dir = os.path.join(BASE_DIR, 'stable-diffusion-webui', 'models', 'Stable-diffusion')
|
||||
clip_cache_dir = os.path.join(kohya_ss_home_dir, '.cache', 'clip')
|
||||
|
||||
base_webui_port = '57860'
|
||||
base_onediff_port = '9038'
|
||||
base_webui_url = "http://127.0.0.1:57860/sdapi/v1/img2img"
|
||||
@@ -299,27 +308,24 @@ def train_thread(sq, gpu_id):
|
||||
# f.write('titor hairstyle, faceless, no human, gray background, simple background, ' + tags)
|
||||
|
||||
os.system(f'chmod 777 {model_dir}')
|
||||
#训练头发lora
|
||||
sd_models_dir = os.path.join(BASE_DIR, 'stable-diffusion-webui', 'models', 'Stable-diffusion')
|
||||
container_images_dir = images_dir.replace(kohya_ss_home_dir, '/home/chinatszrn')
|
||||
container_model_dir = model_dir.replace(kohya_ss_home_dir, '/home/chinatszrn')
|
||||
#训练头发lora(本地执行,使用 kohya conda 环境 + .local 包)
|
||||
base_model_path = os.path.join(sd_models_dir, 'v1-5-pruned-emaonly.safetensors')
|
||||
cmd_train = (
|
||||
f'sudo docker run --rm --privileged=true --gpus "device=0" '
|
||||
f'-v {kohya_ss_home_dir}:/home/chinatszrn '
|
||||
f'-v {sd_models_dir}:/mnt/sd_models '
|
||||
'-e PATH=/home/chinatszrn/.local/bin -w /home/chinatszrn/kohya_ss '
|
||||
'--net=host chinatszrn/ubuntu:kohya_ss accelerate launch --num_cpu_threads_per_process=2 "./train_network.py" --enable_bucket '
|
||||
'--min_bucket_reso=256 --max_bucket_reso=2048 --pretrained_model_name_or_path="/mnt/sd_models/v1-5-pruned-emaonly.safetensors" '
|
||||
f'--train_data_dir={container_images_dir} --resolution="2000,2000" '
|
||||
f'--output_dir={container_model_dir} '
|
||||
f'cd "{kohya_ss_code_dir}" && '
|
||||
f'PYTHONPATH="{kohya_local_packages}" '
|
||||
f'"{kohya_python}" -m accelerate.commands.launch --num_cpu_threads_per_process=2 "./train_network.py" --enable_bucket '
|
||||
'--min_bucket_reso=256 --max_bucket_reso=2048 '
|
||||
f'--pretrained_model_name_or_path="{base_model_path}" '
|
||||
f'--train_data_dir="{images_dir}" --resolution="2000,2000" '
|
||||
f'--output_dir="{model_dir}" '
|
||||
'--network_alpha="64" --save_model_as=safetensors --network_module=networks.lora --text_encoder_lr=5e-05 '
|
||||
'--unet_lr=0.0001 --network_dim=128 --output_name="hairstyle_hd_lora" --lr_scheduler_num_cycles="20" '
|
||||
'--no_half_vae --learning_rate="0.0001" --lr_scheduler="cosine" --lr_warmup_steps="650" --train_batch_size="1" '
|
||||
'--max_train_steps="1500" --save_every_n_epochs="100" --mixed_precision="fp16" --save_precision="fp16" '
|
||||
'--caption_extension=".txt" --sample_sampler=ddim '
|
||||
f'--sample_prompts={sample_txt} --sample_every_n_epochs="1000" '
|
||||
f'--sample_prompts="{sample_txt}" --sample_every_n_epochs="1000" '
|
||||
'--seed="1234" --cache_latents --optimizer_type="AdamW8bit" --max_data_loader_n_workers="0" --bucket_reso_steps=64 '
|
||||
'--xformers --bucket_no_upscale --noise_offset=0.0 --tokenizer_cache_dir="/home/chinatszrn/.cache/clip"')
|
||||
f'--xformers --bucket_no_upscale --noise_offset=0.0 --tokenizer_cache_dir="{clip_cache_dir}"')
|
||||
print("cmd_train:", cmd_train)
|
||||
os.system(cmd_train)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user