Files
change_hair/docs/方案A-上传文件清单.md
2026-07-09 22:02:35 +08:00

11 KiB
Raw Permalink Blame History

方案 A:换发型服务本机部署 — 上传文件清单

适用场景:从原服务器打包上传 conda 环境 + SD WebUI 代码,在本机完成换发型推理部署。

本机路径:/home/ubuntu/change_hairGPURTX 5090 32GCUDA 12.8

原服务器参考:szlc@192.168.101.63

更新日期:2026-07-09(核实本机已有资源,更新上传清单)


一、本机已有资源(已到位,无需再传)

以下资源已确认存在于本机项目中:

本机路径 大小 说明
project/hair_service_sd/weights/ 9.9G 核心推理权重(28个文件,含 GAN/分割/关键点/人脸等全部模型)
project/onediff/stable-diffusion-webui/models/ 4.6G SD 底模 v1-5-pruned-emaonly.safetensors + ESRGAN 4x-UltraSharp.pth + GFPGAN 全套
project/data/ref_hairstyle/ 40M 5 个发型材质(config.json + npy + png + txt
project/data/hair_template_material/ 24M 5 个发型模板(pkl + png + matting
project/data/upload_train_imgs/ 2.5M 5 个发型原图(jpg
data/train_material/ 739M 5 个发型 LoRA 权重(hairstyle_hd_lora.safetensors+ 训练图像

当前可用发型(5 个):

  • chang_bolang(长波浪)
  • chang_huaban(长花瓣)
  • chang_tuoyuan(长椭圆)
  • chang_xinxing(长心形)
  • chang_zhixian(长直线)

以上发型可做换发型推理。如需更多发型,见第四节可选上传。

项目代码(已在 git 仓库中,无需上传):

  • project/hair_service_sd/(代码,不含 weights
  • project/photo_service/
  • hair_grow_service/
  • 启动脚本、测试脚本等

二、必须上传(换发型推理最低配置)🔴

以下 4 项需要从原服务器打包上传,总计约 1830G

2.1 Conda 环境 × 3

从原服务器 /home/szlc/miniconda3/envs/ 打包,上传到本机 /home/ubuntu/miniconda3/envs/

环境名 原服务器路径 本机目标路径 用途 预估大小
my_hair /home/szlc/miniconda3/envs/my_hair/ /home/ubuntu/miniconda3/envs/my_hair/ hair_service_sd 主服务(端口 8801 ~58G
sdwebui /home/szlc/miniconda3/envs/sdwebui/ /home/ubuntu/miniconda3/envs/sdwebui/ SD WebUI 推理(端口 57860 ~812G
py310 /home/szlc/miniconda3/envs/py310/ /home/ubuntu/miniconda3/envs/py310/ photo_service LoRA 调度(端口 32678 ~24G

⚠️ 为什么必须上传,不能从公网安装? 这三个环境包含特定版本的 PyTorch + CUDA 扩展、历史版本的 pip 包、以及编译好的 C++/CUDA 算子,依赖关系复杂。项目中的 env.yaml 是旧的 Python 3.7 规格,与实际运行环境(Python 3.10)不一致,无法用于重建。

原服务器打包示例

# 在原服务器(szlc@192.168.101.63)执行
cd /home/szlc/miniconda3/envs
tar czf my_hair.tar.gz   my_hair/
tar czf sdwebui.tar.gz   sdwebui/
tar czf py310.tar.gz     py310/

本机解压示例

# 在本机执行(上传完成后)
mkdir -p /home/ubuntu/miniconda3/envs
cd /home/ubuntu/miniconda3/envs
tar xzf /path/to/my_hair.tar.gz
tar xzf /path/to/sdwebui.tar.gz
tar xzf /path/to/py310.tar.gz

2.2 SD WebUI 代码(不含 models

从原服务器打包 webui 程序本体排除 models 目录(本机已有 4.6G 模型权重)。

原服务器路径 本机目标路径 说明 预估大小
/home/szlc/project/onediff/stable-diffusion-webui/(排除 models/ /home/ubuntu/change_hair/project/onediff/stable-diffusion-webui/ webui.py、modules/、extensions/、repositories/ 等 ~25G

⚠️ 本机当前 project/onediff/stable-diffusion-webui/ 目录只有 models/ 子目录(4.6G 模型权重),缺少 webui.pymodules/extensions/ 等所有代码文件。

必须包含的关键文件/目录:

stable-diffusion-webui/
├── webui.py                 # 主入口(必需)
├── webui.sh                 # 启动脚本
├── webui-user.sh            # 用户配置
├── launch.py
├── modules/                 # webui 核心模块
├── extensions/              # 扩展(如有)
├── repositories/            # 依赖仓库(如有)
├── config.json              # 配置文件
├── ui-config.json           # UI 配置(如有)
└── style.css / javascript/  # 前端资源

不要上传(本机已有,勿覆盖):

models/Stable-diffusion/v1-5-pruned-emaonly.safetensors   # 4.0G
models/ESRGAN/4x-UltraSharp.pth                            # 64M
models/GFPGAN/GFPGANv1.4.pth                               # 333M
models/GFPGAN/detection_Resnet50_Final.pth                 # 105M
models/GFPGAN/parsing_parsenet.pth                         # 82M

原服务器打包示例(排除 models

# 在原服务器(szlc@192.168.101.63)执行
cd /home/szlc/project/onediff
tar czf webui_code.tar.gz \
  --exclude='stable-diffusion-webui/models' \
  stable-diffusion-webui/

本机解压示例

# 在本机执行(保留已有 models 目录)
cd /home/ubuntu/change_hair/project/onediff
tar xzf /path/to/webui_code.tar.gz
# 解压后确认 models/ 仍在且未被覆盖
ls -lh stable-diffusion-webui/models/Stable-diffusion/

三、上传清单速查表

复制以下列表,在原服务器逐项确认后打包:

# ===== 必须上传(方案 A,共 4 项,约 1830G=====

# 1. Conda 环境(3 个)
/home/szlc/miniconda3/envs/my_hair/       → /home/ubuntu/miniconda3/envs/my_hair/
/home/szlc/miniconda3/envs/sdwebui/       → /home/ubuntu/miniconda3/envs/sdwebui/
/home/szlc/miniconda3/envs/py310/         → /home/ubuntu/miniconda3/envs/py310/

# 2. SD WebUI 代码(排除 models/
/home/szlc/project/onediff/stable-diffusion-webui/(排除 models/
    → /home/ubuntu/change_hair/project/onediff/stable-diffusion-webui/

四、可选上传(非换发型推理必需)🟡

以下功能暂不需要时可跳过,后续按需补传。

4.1 训练新发型

原服务器路径 本机目标路径 预估大小
/home/szlc/project/kohya_ss_home/ /home/ubuntu/change_hair/project/kohya_ss_home/ ~13G
/home/szlc/miniconda3/envs/kohya/ /home/ubuntu/miniconda3/envs/kohya/ ~5G

4.2 换发色功能

原服务器路径 本机目标路径
/home/szlc/project/data/ref_haircolor/ /home/ubuntu/change_hair/project/data/ref_haircolor/
/home/szlc/project/data/ref_color/ /home/ubuntu/change_hair/project/data/ref_color/
/home/szlc/project/data/ref_color_imgs/ /home/ubuntu/change_hair/project/data/ref_color_imgs/
/home/szlc/.../weights/classify_3_2499.pth project/hair_service_sd/weights/classify_3_2499.pth

4.3 更多发型

当前只有 5 个发型。如需更多,从原服务器追加:

/data/train_material/<hair_id>/                    → data/train_material/<hair_id>/
/home/szlc/project/data/ref_hairstyle/<hair_id>/   → project/data/ref_hairstyle/<hair_id>/
/home/szlc/project/data/hair_template_material/<hair_id>/  → project/data/hair_template_material/<hair_id>/
/home/szlc/project/data/upload_train_imgs/<hair_id>/       → project/data/upload_train_imgs/<hair_id>/

原服务器约有 338 个发型,全量 train_material 约 121G。

4.4 小文件(可选)

文件 用途 大小
weights/mediapipe/face_landmarker.task 发际线检测 ~3.6M

五、上传方式建议

方式 1:rsync 直传(推荐,支持断点续传)

# 从原服务器直传到本机(在本机执行)
rsync -avP --partial \
  szlc@192.168.101.63:/home/szlc/miniconda3/envs/my_hair/ \
  /home/ubuntu/miniconda3/envs/my_hair/

rsync -avP --partial \
  szlc@192.168.101.63:/home/szlc/miniconda3/envs/sdwebui/ \
  /home/ubuntu/miniconda3/envs/sdwebui/

rsync -avP --partial \
  szlc@192.168.101.63:/home/szlc/miniconda3/envs/py310/ \
  /home/ubuntu/miniconda3/envs/py310/

rsync -avP --partial \
  --exclude='models/' \
  szlc@192.168.101.63:/home/szlc/project/onediff/stable-diffusion-webui/ \
  /home/ubuntu/change_hair/project/onediff/stable-diffusion-webui/

方式 2:先 tar 再上传到 /home/ubuntu/data

若通过网盘中转,先 tar 再上传到 /home/ubuntu/data/,上传完成后告知我解压。


六、上传完成后的验证

上传完成后,在本机执行以下命令确认文件到位:

# 1. Conda 环境
ls /home/ubuntu/miniconda3/envs/my_hair/bin/python
ls /home/ubuntu/miniconda3/envs/sdwebui/bin/python
ls /home/ubuntu/miniconda3/envs/py310/bin/python

# 2. WebUI 代码
ls /home/ubuntu/change_hair/project/onediff/stable-diffusion-webui/webui.py

# 3. 模型未被覆盖
ls -lh /home/ubuntu/change_hair/project/onediff/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors

期望结果:4 项均存在,SD 底模约 4.0G。


七、上传完成后我会做的事

你上传完毕并告知后,我会依次执行:

  1. 路径适配:运行 adapt_paths.sh,将所有硬编码路径从 /home/xsl/change_hair 改为 /home/ubuntu/change_hair/home/xsl/miniconda3 改为 /home/ubuntu/miniconda3
  2. Conda 路径修复:运行 fix_conda_paths.py,修复 3 个环境中二进制文件的 shebang 和内部路径前缀
  3. 安装 Miniconda 基础环境(如尚未安装):从 repo.anaconda.com 下载安装
  4. 启动服务bash start_all.sh start(依赖顺序:webui → photo_service → hair_service_sd
  5. 接口测试:用 test_swaphair.py 验证换发型功能

八、部署后服务端口

服务 端口 说明
webui 57860 SD img2img 推理
photo_service 32678 LoRA 加载与调度
hair_service_sd 8801 换发型主接口
hair_grow_service 8899 生发前端(独立 Flask

换发型接口:

POST http://127.0.0.1:8801/api/swapHair/v1

九、常见问题

Q:能否只上传 miniconda3 整包,不传单个 env

可以。上传 /home/szlc/miniconda3/ 整包到 /home/ubuntu/miniconda3/ 也行,体积更大(约 20–30G)但更省事。

Q:webui 上传时不小心覆盖了 models 怎么办?

重新从 /home/ubuntu/data/sdwebui/models/ 或原服务器补传 models 目录即可。

Q:本机没有 miniconda 基础安装,只传 envs 够吗?

不够。3 个 env 内的 python 依赖 miniconda 基础库(如 libstdc++libgcc 等)。我会在上传完成后先安装 miniconda,再修复 env 内部路径。

Q:上传后启动报 xformers 错误?

webui 启动参数可能需要去掉 --xformers,改用 --opt-sdp-no-mem-attention(RTX 5090 支持,我会在路径适配时处理)。

Q:本机磁盘空间是否足够?

当前 /home 剩余约 30G。3 个 conda 环境约 20–25G,解压后可能吃紧。建议解压一个删一个 tar 包,或考虑清理 /home/ubuntu/data/(已有 16G 冗余数据,解压完成后可删除)。