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

4.3 KiB
Raw Blame History

Fishserver 单一 Conda 环境(网关 + 双算法)

fish_apiFishMeasureFishAction 放进同一个 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 packaging/bootstrap_fishserver.sh
conda activate fishserver

若之前失败留下半成品,可先删环境再建:

conda env remove -n fishserver -y
bash packaging/bootstrap_fishserver.sh

装到了 base(cp312) / conda activate fishserver 找不到?

多根安装(miniconda3miniforge3 并存)时,脚本用的 conda info --base 必须和你终端里是同一套 conda。脚本结束时也会打印 Conda base was: ...

which conda
conda info --base
ls /home/ubuntu/miniforge3/envs/fishserver/bin/python
ls /home/ubuntu/miniconda3/envs/fishserver/bin/python

在哪条路径下存在 fishserver,就用对应的:

source /home/ubuntu/miniforge3/etc/profile.d/conda.sh   # 示例:改为实际有 fishserver 的根
conda activate fishserver

bootstrap 已全部改为 …/envs/fishserver/bin/python -m pip,不会再依赖脚本里的 conda activate

仅 CPU 时可选用 CPU 轮子(示例):

TORCH_INDEX=https://download.pytorch.org/whl/cpu bash packaging/bootstrap_fishserver.sh

2.(可选)换其它 CUDA 版 PyTorch

生产若 必须 CUDA 12.4,保持默认 TORCH_INDEX 即可。若 已激活 fishserver 里误装成了 +cu130,可强制重装:

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。

其它索引示例:

export TORCH_INDEX=https://download.pytorch.org/whl/cu118   # 示例
bash packaging/patch_cuda_torch.sh

或到 pytorch.org 复制与你驱动匹配的命令。

3.(跑 SVO 必需ZED SDK 与 pyzed

  1. 按 Stereolabs 文档安装 ZED SDK(与 Ubuntu / CUDA 版本一致)。
  2. 再安装 Python 绑定,例如 SDK 附带说明中的:
pip install pyzed
# 或安装官方提供的 pyzed-*.whl需与 Python 3.11 + SDK 版本匹配)

未安装 pyzed 时,网关仍可启动,但 SVO ingest 会在子进程里失败MP4 行为分支不依赖 ZED。

4. 启动服务

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_MEASUREPYTHON_FISH_ACTION

6. 校验(可选)

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。