分类打包网盘文件,setup.sh 自动解压,更新部署文档

This commit is contained in:
colomi
2026-07-11 20:11:28 +08:00
parent 42622e8e1e
commit 20a1b6629e
3 changed files with 168 additions and 39 deletions
+85 -8
View File
@@ -24,8 +24,85 @@ echo ""
ERRORS=()
# 0. 自动解压网盘文件(如果 cloud_packages/ 存在)
CLOUD_DIR="$BASE_DIR/cloud_packages"
if [ -d "$CLOUD_DIR" ] && [ "$(ls -A "$CLOUD_DIR")" ]; then
echo "[0/9] 自动解压网盘文件..."
# conda 环境
for pkg in my_hair.tar.gz sdwebui.tar.gz kohya.tar.gz; do
if [ -f "$CLOUD_DIR/$pkg" ]; then
echo " 解压 $pkg..."
tar -xzf "$CLOUD_DIR/$pkg" -C "$BASE_DIR/conda_envs/"
echo "$pkg"
fi
done
# SD 底模
if [ -f "$CLOUD_DIR/sd_base_models.tar.gz" ]; then
echo " 解压 sd_base_models.tar.gz..."
mkdir -p "$BASE_DIR/stable-diffusion-webui/models/Stable-diffusion"
tar -xzf "$CLOUD_DIR/sd_base_models.tar.gz" -C "$BASE_DIR/stable-diffusion-webui/models/Stable-diffusion/"
echo " ✓ sd_base_models.tar.gz"
fi
# LoRA 模型
mkdir -p "$BASE_DIR/stable-diffusion-webui/models/Lora"
for pkg in lora_0-9.tar.gz lora_h.tar.gz lora_n.tar.gz lora_t.tar.gz; do
if [ -f "$CLOUD_DIR/$pkg" ]; then
echo " 解压 $pkg..."
tar -xzf "$CLOUD_DIR/$pkg" -C "$BASE_DIR/stable-diffusion-webui/models/Lora/"
echo "$pkg"
fi
done
# 换发算法权重
if [ -f "$CLOUD_DIR/weights.tar.gz" ]; then
echo " 解压 weights.tar.gz..."
tar -xzf "$CLOUD_DIR/weights.tar.gz" -C "$BASE_DIR/hair_service_sd/"
echo " ✓ weights.tar.gz"
fi
# kohya 训练环境
if [ -f "$CLOUD_DIR/kohya_local.tar.gz" ]; then
echo " 解压 kohya_local.tar.gz..."
tar -xzf "$CLOUD_DIR/kohya_local.tar.gz" -C "$BASE_DIR/kohya_ss_home/"
echo " ✓ kohya_local.tar.gz"
fi
if [ -f "$CLOUD_DIR/kohya_code.tar.gz" ]; then
echo " 解压 kohya_code.tar.gz..."
tar -xzf "$CLOUD_DIR/kohya_code.tar.gz" -C "$BASE_DIR/kohya_ss_home/"
echo " ✓ kohya_code.tar.gz"
fi
# 业务数据
if [ -f "$CLOUD_DIR/data.tar.gz" ]; then
echo " 解压 data.tar.gz..."
tar -xzf "$CLOUD_DIR/data.tar.gz" -C "$BASE_DIR/"
echo " ✓ data.tar.gz"
fi
# WebUI 扩展
mkdir -p "$BASE_DIR/stable-diffusion-webui/extensions"
if [ -f "$CLOUD_DIR/webui_controlnet.tar.gz" ]; then
echo " 解压 webui_controlnet.tar.gz..."
tar -xzf "$CLOUD_DIR/webui_controlnet.tar.gz" -C "$BASE_DIR/stable-diffusion-webui/extensions/"
echo " ✓ webui_controlnet.tar.gz"
fi
if [ -f "$CLOUD_DIR/webui_repositories.tar.gz" ]; then
echo " 解压 webui_repositories.tar.gz..."
tar -xzf "$CLOUD_DIR/webui_repositories.tar.gz" -C "$BASE_DIR/stable-diffusion-webui/"
echo " ✓ webui_repositories.tar.gz"
fi
echo " ✓ 网盘文件解压完成"
else
echo "[0/9] cloud_packages/ 目录不存在或为空,跳过自动解压"
fi
echo ""
# 1. 检查前提条件
echo "[1/8] 检查前提条件..."
echo "[1/9] 检查前提条件..."
command -v git >/dev/null || { echo " ✗ git 未安装"; ERRORS+=("git"); }
command -v conda >/dev/null || { echo " ✗ conda 未安装"; ERRORS+=("conda"); }
nvidia-smi >/dev/null 2>&1 || { echo " ✗ NVIDIA 驱动未安装"; ERRORS+=("nvidia-smi"); }
@@ -34,12 +111,12 @@ if [ ${#ERRORS[@]} -eq 0 ]; then
fi
# 2. 生成 configure.ini
echo "[2/8] 生成 configure.ini..."
echo "[2/9] 生成 configure.ini..."
sed "s|__BASE_DIR__|$BASE_DIR|g" "$BASE_DIR/hair_service_sd/config/configure.ini.template" > "$BASE_DIR/hair_service_sd/config/configure.ini"
echo " ✓ configure.ini 已生成"
# 3. 恢复 conda 环境(conda-pack
echo "[3/8] 恢复 conda 环境(my_hair, sdwebui, kohya..."
echo "[3/9] 恢复 conda 环境(my_hair, sdwebui, kohya..."
for env_name in my_hair sdwebui kohya; do
if [ -f "$BASE_DIR/conda_envs/${env_name}.tar.gz" ]; then
echo " 恢复 $env_name ..."
@@ -57,7 +134,7 @@ for env_name in my_hair sdwebui kohya; do
done
# 4. 创建 py310 环境(从 yml
echo "[4/8] 创建 py310 环境(从 yml..."
echo "[4/9] 创建 py310 环境(从 yml..."
if [ -f "$BASE_DIR/conda_envs/py310.yml" ]; then
conda env create -f "$BASE_DIR/conda_envs/py310.yml" -n py310 2>/dev/null && echo " ✓ py310 已创建" || echo " py310 环境已存在,跳过"
else
@@ -66,7 +143,7 @@ else
fi
# 5. 检查模型/数据目录
echo "[5/8] 检查模型和数据目录..."
echo "[5/9] 检查模型和数据目录..."
for dir in hair_service_sd/weights stable-diffusion-webui/models/Lora stable-diffusion-webui/models/Stable-diffusion stable-diffusion-webui/extensions/sd-webui-controlnet stable-diffusion-webui/repositories kohya_ss_home/.local kohya_ss_home/kohya_ss data/ref_hairstyle; do
if [ -d "$BASE_DIR/$dir" ]; then
echo "$dir"
@@ -77,7 +154,7 @@ for dir in hair_service_sd/weights stable-diffusion-webui/models/Lora stable-dif
done
# 6. 检查训练底模
echo "[6/8] 检查训练底模 v1-5-pruned-emaonly..."
echo "[6/9] 检查训练底模 v1-5-pruned-emaonly..."
if [ -f "$BASE_DIR/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors" ]; then
echo " ✓ v1-5-pruned-emaonly.safetensors 已存在"
else
@@ -86,14 +163,14 @@ else
fi
# 7. 创建运行时目录
echo "[7/8] 创建运行时目录..."
echo "[7/9] 创建运行时目录..."
mkdir -p "$BASE_DIR/logs"
mkdir -p "$BASE_DIR/data/tmp" "$BASE_DIR/data/res_dir" "$BASE_DIR/data/userImage" "$BASE_DIR/data/user_info"
mkdir -p "$BASE_DIR/kohya_ss_home/train_material"
echo " ✓ 运行时目录已创建"
# 8. 验证 kohya 训练环境
echo "[8/8] 验证 kohya 训练环境..."
echo "[8/9] 验证 kohya 训练环境..."
KOHYA_PYTHON="$CONDA_BASE/envs/kohya/bin/python"
KOHYA_LOCAL="$BASE_DIR/kohya_ss_home/.local/lib/python3.10/site-packages"
if [ -f "$KOHYA_PYTHON" ] && [ -d "$KOHYA_LOCAL" ]; then