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

303 lines
11 KiB
Markdown
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.
# 方案 A:换发型服务本机部署 — 上传文件清单
> 适用场景:从原服务器打包上传 conda 环境 + SD WebUI 代码,在本机完成换发型推理部署。
>
> 本机路径:`/home/ubuntu/change_hair`GPURTX 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 项需要从原服务器打包上传,**总计约 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 | ~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)不一致,无法用于重建。
#### 原服务器打包示例
```bash
# 在原服务器(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/
```
#### 本机解压示例
```bash
# 在本机执行(上传完成后)
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.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)
```bash
# 在原服务器(szlc@192.168.101.63)执行
cd /home/szlc/project/onediff
tar czf webui_code.tar.gz \
--exclude='stable-diffusion-webui/models' \
stable-diffusion-webui/
```
#### 本机解压示例
```bash
# 在本机执行(保留已有 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 直传(推荐,支持断点续传)
```bash
# 从原服务器直传到本机(在本机执行)
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/`,上传完成后告知我解压。
---
## 六、上传完成后的验证
上传完成后,在本机执行以下命令确认文件到位:
```bash
# 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)但更省事。
**Qwebui 上传时不小心覆盖了 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 冗余数据,解压完成后可删除)。