Files
change_hair_3090/setup.sh
T
colomi 4b959b3a98 训练功能改用本地 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→训练→保存)
2026-07-11 18:53:45 +08:00

81 lines
3.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
set -e
BASE_DIR="$(cd "$(dirname "$0")" && pwd)"
CONDA_BASE="${CONDA_BASE:-/home/szlc/miniconda3}"
# 初始化 conda(脚本中需要 source 才能用 conda activate
if [ -f "$CONDA_BASE/etc/profile.d/conda.sh" ]; then
source "$CONDA_BASE/etc/profile.d/conda.sh"
else
echo "WARNING: 未找到 conda.sh,请确认 CONDA_BASE=$CONDA_BASE 正确"
fi
echo "=== 换发型项目部署脚本 ==="
echo "BASE_DIR: $BASE_DIR"
# 1. 检查前提条件
echo "[1/7] 检查前提条件..."
command -v git >/dev/null || { echo "ERROR: git 未安装"; exit 1; }
command -v conda >/dev/null || { echo "ERROR: conda 未安装"; exit 1; }
nvidia-smi >/dev/null 2>&1 || { echo "ERROR: NVIDIA 驱动未安装"; exit 1; }
# 2. 生成 configure.ini
echo "[2/7] 生成 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/7] 恢复 conda 环境..."
for env_name in my_hair sdwebui kohya; do
if [ -f "$BASE_DIR/conda_envs/${env_name}.tar.gz" ]; then
echo " 恢复 $env_name ..."
rm -rf "$CONDA_BASE/envs/$env_name"
mkdir -p "$CONDA_BASE/envs/$env_name"
tar -xzf "$BASE_DIR/conda_envs/${env_name}.tar.gz" -C "$CONDA_BASE/envs/$env_name"
conda activate "$env_name"
conda-unpack # 修复打包后的硬编码路径
conda deactivate
echo " ✓ $env_name 已恢复"
else
echo " ✗ conda_envs/${env_name}.tar.gz 不存在,请从网盘下载"
fi
done
# 4. 创建 py310 环境(从 yml
echo "[4/7] 创建 py310 环境..."
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
echo " ✗ conda_envs/py310.yml 不存在"
fi
# 5. 检查模型/数据目录
echo "[5/7] 检查模型和数据目录..."
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"
else
echo " ✗ $dir 缺失,请从网盘下载"
fi
done
# 6. 检查训练底模
echo "[6/7] 检查训练底模 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
echo " ✗ v1-5-pruned-emaonly.safetensors 缺失,请从网盘下载 models/ 目录"
fi
# 7. 创建运行时目录
echo "[7/7] 创建运行时目录..."
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 ""
echo "=== 部署完成 ==="
echo "启动服务: ./start_all_services.sh"