Files
FishServer/packaging/README.md
2026-04-10 10:30:01 +08:00

113 lines
4.3 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.
# Fishserver 单一 Conda 环境(网关 + 双算法)
**fish_api**、**FishMeasure**、**FishAction** 放进同一个 Conda 环境 `fishserver` 后:
- 启动 **uvicorn** 时不需要再设置 `PYTHON_FISH_MEASURE` / `PYTHON_FISH_ACTION`
- 子进程与网关共用同一解释器,减少多环境混用问题。
## 1. 创建环境
在仓库根目录(`FishServer` 即本仓库根)执行。**GPU 默认固定为 PyTorch 的 CUDA 12.4 轮子**`--index-url https://download.pytorch.org/whl/cu124`),避免从 PyPI 主索引拉到 `+cu130`。其余依赖仍走 `pypi.org`
```bash
bash packaging/bootstrap_fishserver.sh
conda activate fishserver
```
若之前失败留下半成品,可先删环境再建:
```bash
conda env remove -n fishserver -y
bash packaging/bootstrap_fishserver.sh
```
### 装到了 base(cp312) / `conda activate fishserver` 找不到?
多根安装(**miniconda3** 与 **miniforge3** 并存)时,脚本用的 `conda info --base` 必须和你终端里是**同一套 conda**。脚本结束时也会打印 `Conda base was: ...`
```bash
which conda
conda info --base
ls /home/ubuntu/miniforge3/envs/fishserver/bin/python
ls /home/ubuntu/miniconda3/envs/fishserver/bin/python
```
在哪条路径下存在 `fishserver`,就用对应的:
```bash
source /home/ubuntu/miniforge3/etc/profile.d/conda.sh # 示例:改为实际有 fishserver 的根
conda activate fishserver
```
`bootstrap` 已全部改为 **`…/envs/fishserver/bin/python -m pip`**,不会再依赖脚本里的 `conda activate`
仅 CPU 时可选用 CPU 轮子(示例):
```bash
TORCH_INDEX=https://download.pytorch.org/whl/cpu bash packaging/bootstrap_fishserver.sh
```
## 2.(可选)换其它 CUDA 版 PyTorch
生产若 **必须 CUDA 12.4**,保持默认 `TORCH_INDEX` 即可。若 **已激活 fishserver** 里误装成了 `+cu130`,可强制重装:
```bash
export TORCH_INDEX=https://download.pytorch.org/whl/cu124
bash packaging/patch_cuda_torch.sh
# 若脚本里显示的 python 仍是 …/miniforge3/bin/pythonbase说明未进到 fishserver请显式指定
# FISHSERVER_PY="$HOME/miniforge3/envs/fishserver/bin/python" bash packaging/patch_cuda_torch.sh
#
# 若曾装过 cu130 / PyPI 版 torch`patch_cuda_torch.sh` 会先 uninstall 再从 cu124 索引重装;全局 pip
# 若配置了 extra-index-url如 NGC安装步骤会临时用 PIP_CONFIG_FILE=/dev/null 避免混索引。
# 若仍因残留 nvidia-*-cu13 冲突,可先: pip uninstall -y torch torchvision && pip list | grep -E 'cuda|nvidia'
# 按需删掉旧 cu13 包后再跑一次 patch。
```
其它索引示例:
```bash
export TORCH_INDEX=https://download.pytorch.org/whl/cu118 # 示例
bash packaging/patch_cuda_torch.sh
```
或到 [pytorch.org](https://pytorch.org/get-started/locally/) 复制与你驱动匹配的命令。
## 3.(跑 SVO 必需ZED SDK 与 pyzed
1. 按 Stereolabs 文档安装 **ZED SDK**(与 Ubuntu / CUDA 版本一致)。
2. 再安装 Python 绑定,例如 SDK 附带说明中的:
```bash
pip install pyzed
# 或安装官方提供的 pyzed-*.whl需与 Python 3.11 + SDK 版本匹配)
```
未安装 pyzed 时,网关仍可启动,但 **SVO ingest 会在子进程里失败**MP4 行为分支不依赖 ZED。
## 4. 启动服务
```bash
conda activate fishserver
export PUBLIC_BASE_URL="http://192.168.x.x:8001" # 与对外访问一致,影响 JSON 里 video_* URL
PORT=8001 bash scripts/start_fresh.sh
```
## 5. 与「多环境」方案对比
| 方案 | 优点 | 缺点 |
|------|------|------|
| **本目录:单 env fishserver** | 配置简单;无需 `PYTHON_FISH_*` | 依赖冲突时需自己调版本(尤其 ZED / torch / opencv |
| 网关 + 两个独立 env | 隔离最好 | 需设置 `PYTHON_FISH_MEASURE``PYTHON_FISH_ACTION` |
## 6. 校验(可选)
```bash
conda activate fishserver
python -c "import torch; print('torch', torch.__version__, 'cuda', torch.cuda.is_available())"
python -c "import fastapi, uvicorn; print('gateway ok')"
python -c "import pytorchvideo; print('pytorchvideo ok')"
python -c "import pyzed.sl as sl; print('pyzed ok')" # 仅装 SDK 后成功
```
若某一步 import 失败按报错补装或调整版本FishMeasure 体量较大,首次建议在有 GPU 的机器上试跑一条短 SVO / 短 MP4。