2026-04-08 19:32:23 +08:00
|
|
|
|
# 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/python(base),说明未进到 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
|
2026-04-10 10:30:01 +08:00
|
|
|
|
PORT=8001 bash scripts/start_fresh.sh
|
2026-04-08 19:32:23 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 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。
|