save
This commit is contained in:
@@ -0,0 +1,302 @@
|
|||||||
|
# 方案 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)不一致,无法用于重建。
|
||||||
|
|
||||||
|
#### 原服务器打包示例
|
||||||
|
|
||||||
|
```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/ 等 | ~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)
|
||||||
|
|
||||||
|
```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)但更省事。
|
||||||
|
|
||||||
|
**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 冗余数据,解压完成后可删除)。
|
||||||
Reference in New Issue
Block a user