完善部署并训练5个新发型 + 换发型集成文档
部署修复: - torch.load 增加 weights_only=False patch,兼容 PyTorch 2.6+ 加载旧权重 - OSS 改为懒加载,本地用 output_format=base64 无需配凭证即可启动 - 补全被 gitignore 误排除的必需代码:core/models/layers/data、models/layers/data、keypoints/lib - webui 训练命令 --xformers 改 --sdpa(修复 xformers 无 CUDA 支持报错) 功能调整: - hair_grow_service 端口改 8899、preview 路由修复(send_file) - list_hairstyles 增加发型白名单,测试页只展示当前5个发型 新增脚本: - train_lora_parallel.py:直接调 kohya 并行训练 LoRA(绕过 photo_service 串行限制) - train_hairstyles_parallel.py / train_batch_stepC.py:批量训练辅助脚本 - scripts/sync_data_to_server.sh:大文件断点续传到云服务器 文档: - docs/换发型集成文档.md:换发型完整流程、服务架构、资源依赖、训练方法、集成步骤
This commit is contained in:
Executable
+69
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env bash
|
||||
# 断点续传大文件到云服务器 /home/ubuntu/data
|
||||
# 用法: bash scripts/sync_data_to_server.sh [all|weights|sd|hairstyles]
|
||||
set -euo pipefail
|
||||
|
||||
REMOTE="ubuntu@117.50.213.111"
|
||||
REMOTE_BASE="/home/ubuntu/data"
|
||||
LOCAL_BASE="/home/xsl/change_hair"
|
||||
LOG_DIR="${LOCAL_BASE}/project/logs"
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
RSYNC_OPTS=(-avP --partial --info=progress2)
|
||||
|
||||
sync_weights() {
|
||||
echo ">>> [1/3] 同步 hair_service_sd/weights (~10G) ..."
|
||||
rsync "${RSYNC_OPTS[@]}" \
|
||||
"${LOCAL_BASE}/project/hair_service_sd/weights/" \
|
||||
"${REMOTE}:${REMOTE_BASE}/hair_service_sd/weights/"
|
||||
}
|
||||
|
||||
sync_sd_models() {
|
||||
echo ">>> [2/3] 同步 SD 底模 + ESRGAN + GFPGAN (~4.6G) ..."
|
||||
rsync "${RSYNC_OPTS[@]}" \
|
||||
"${LOCAL_BASE}/project/onediff/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors" \
|
||||
"${REMOTE}:${REMOTE_BASE}/sdwebui/models/Stable-diffusion/"
|
||||
rsync "${RSYNC_OPTS[@]}" \
|
||||
"${LOCAL_BASE}/project/onediff/stable-diffusion-webui/models/ESRGAN/" \
|
||||
"${REMOTE}:${REMOTE_BASE}/sdwebui/models/ESRGAN/"
|
||||
rsync "${RSYNC_OPTS[@]}" \
|
||||
"${LOCAL_BASE}/project/onediff/stable-diffusion-webui/models/GFPGAN/" \
|
||||
"${REMOTE}:${REMOTE_BASE}/sdwebui/models/GFPGAN/"
|
||||
}
|
||||
|
||||
sync_hairstyles() {
|
||||
echo ">>> [3/3] 同步 5 个 chang_* 发型资源 (~0.8G) ..."
|
||||
for id in chang_tuoyuan chang_bolang chang_zhixian chang_huaban chang_xinxing; do
|
||||
echo " - $id"
|
||||
rsync "${RSYNC_OPTS[@]}" \
|
||||
"${LOCAL_BASE}/project/data/ref_hairstyle/${id}/" \
|
||||
"${REMOTE}:${REMOTE_BASE}/project/data/ref_hairstyle/${id}/"
|
||||
rsync "${RSYNC_OPTS[@]}" \
|
||||
"${LOCAL_BASE}/project/data/hair_template_material/${id}/" \
|
||||
"${REMOTE}:${REMOTE_BASE}/project/data/hair_template_material/${id}/"
|
||||
rsync "${RSYNC_OPTS[@]}" \
|
||||
"${LOCAL_BASE}/project/data/upload_train_imgs/${id}/" \
|
||||
"${REMOTE}:${REMOTE_BASE}/project/data/upload_train_imgs/${id}/"
|
||||
rsync "${RSYNC_OPTS[@]}" \
|
||||
"${LOCAL_BASE}/data/train_material/${id}/" \
|
||||
"${REMOTE}:${REMOTE_BASE}/train_material/${id}/"
|
||||
done
|
||||
}
|
||||
|
||||
TARGET="${1:-all}"
|
||||
case "$TARGET" in
|
||||
weights) sync_weights ;;
|
||||
sd) sync_sd_models ;;
|
||||
hairstyles) sync_hairstyles ;;
|
||||
all)
|
||||
sync_weights
|
||||
sync_sd_models
|
||||
sync_hairstyles
|
||||
;;
|
||||
*)
|
||||
echo "用法: $0 [all|weights|sd|hairstyles]"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo ">>> 同步完成: ${TARGET}"
|
||||
Reference in New Issue
Block a user