11 KiB
方案 A:换发型服务本机部署 — 上传文件清单
适用场景:从原服务器打包上传 conda 环境 + SD WebUI 代码,在本机完成换发型推理部署。
本机路径:
/home/ubuntu/change_hair(GPU:RTX 5090 32G,CUDA 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 项需要从原服务器打包上传,总计约 18–30G。
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) | ~5–8G |
sdwebui |
/home/szlc/miniconda3/envs/sdwebui/ |
/home/ubuntu/miniconda3/envs/sdwebui/ |
SD WebUI 推理(端口 57860) | ~8–12G |
py310 |
/home/szlc/miniconda3/envs/py310/ |
/home/ubuntu/miniconda3/envs/py310/ |
photo_service LoRA 调度(端口 32678) | ~2–4G |
⚠️ 为什么必须上传,不能从公网安装? 这三个环境包含特定版本的 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/ 等 | ~2–5G |
⚠️ 本机当前
project/onediff/stable-diffusion-webui/目录只有models/子目录(4.6G 模型权重),缺少webui.py、modules/、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 项,约 18–30G)=====
# 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。
七、上传完成后我会做的事
你上传完毕并告知后,我会依次执行:
- 路径适配:运行
adapt_paths.sh,将所有硬编码路径从/home/xsl/change_hair改为/home/ubuntu/change_hair,/home/xsl/miniconda3改为/home/ubuntu/miniconda3 - Conda 路径修复:运行
fix_conda_paths.py,修复 3 个环境中二进制文件的 shebang 和内部路径前缀 - 安装 Miniconda 基础环境(如尚未安装):从
repo.anaconda.com下载安装 - 启动服务:
bash start_all.sh start(依赖顺序:webui → photo_service → hair_service_sd) - 接口测试:用
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 冗余数据,解压完成后可删除)。