Files
FishServer/docs/conda-deploy.md
2026-04-16 14:53:01 +08:00

4.8 KiB
Raw Permalink Blame History

使用 Conda 单环境部署 FishServer方案 A

本文说明在另一台 Linux x86_64 机器上,用 一个 conda 环境 安装 Fish API、FishMeasure、FishAction 所需依赖并启动服务。子进程与 uvicorn 共用同一 Python 解释器,无需fish_api/.env 中设置 PYTHON_FISH_MEASURE / PYTHON_FISH_ACTION(保持为空即可)。


前置条件

  • 已克隆本仓库,目录中包含 fish_api/FishMeasure/FishAction/
  • 模型权重:将原机器上的 models/.env 中引用的 checkpoint 拷贝到新机器;空目录会导致推理失败。
  • GPU可选:若使用 SAM_DEVICE=cuda 或 PyTorch CUDA需安装与 PyTorch 版本匹配的 NVIDIA 驱动与 CUDA
  • ZED SDK处理 .svo2 时):在新机器安装 Stereolabs ZED SDK 及 Python API版本尽量与现有开发/生产环境一致。
  • ffmpeg:用于视频转码;可用系统包(apt install ffmpeg 等),或使用仓库内 scripts/setup_ffmpeg.sh(需将脚本中的 PROJECT_ROOT 改为本机仓库路径)。

1. 创建并激活 conda 环境

Fish API 要求 Python ≥ 3.11(见 fish_api/pyproject.toml)。

conda create -n fishserver python=3.11 -y
conda activate fishserver

后续所有 pip/python 命令均在该环境中执行。


2. 安装 Fish APIFastAPI 网关)

cd /path/to/FishServer/fish_api
pip install -e .
# 或pip install -r requirements.txt

可选开发依赖(本地冒烟测试等):

pip install -e ".[dev]"

3. 在同一环境中安装 FishMeasure / FishAction 依赖

方案 A 的核心:测量与行为脚本由 API 以子进程调用,默认使用 当前 python(与 uvicorn 相同),因此 PyTorch、OpenCV、ZED、X3D 等必须全部装进 fishserver 这一环境。

本仓库未提供单一的 FishMeasure/requirements.txt,请按以下方式之一对齐依赖:

  1. 从已有机器导出(推荐):在已能跑通测量的环境中执行 pip freeze > requirements-frozen.txt,在新环境中用 pip install -r requirements-frozen.txt(注意需人工剔除/替换与平台、CUDA 不兼容的包)。
  2. 按模块 README 与脚本逐步安装:参考 FishMeasure/README.md、各子目录说明,以及 FishAction/predict_video_x3d_3class.py 的实际 import至少安装 FishAction/requirements.txt 中的依赖,并补齐 PyTorch、torchvision、与 ZED 文档匹配的包。

安装完成后,在 conda activate fishserver 下验证:

python -c "import torch; print(torch.__version__)"
# 若使用 ZED按 Stereolabs 文档验证 pyzed 等

4. 配置 fish_api/.env

从旧机器复制 fish_api/.env 到新机器,全部路径改为本机绝对路径,例如:

  • PUBLIC_BASE_URL:客户端可访问的 API 根地址,不要末尾 /
  • ACTION_WATCH_DIRMEASURE_WATCH_DIR:若启用目录监控,填本机目录。
  • YOLO_MODELWEIGHT_CHECKPOINTACTION_CHECKPOINT 等:指向本机真实文件。
  • SAM_DEVICEcudacpu

方案 A 下不要填写 PYTHON_FISH_MEASUREPYTHON_FISH_ACTION(留空),让子进程使用当前环境的 python

启动前请 conda activate fishserver,使 which python / which uvicorn 指向该环境。fish_api/start_fresh.sh 使用环境变量 PYTHON(可选)覆盖解释器,默认 python3


5. 启动服务

仓库根目录执行:

conda activate fishserver
cd /path/to/FishServer
bash scripts/start_fresh.sh

默认监听 0.0.0.0:8000。可覆盖:

HOST=0.0.0.0 PORT=8000 bash scripts/start_fresh.sh

可选环境变量(见 fish_api/start_fresh.sh 注释):

  • CLEAR_SQLITE_DATABASE=1:清空 SQLite谨慎
  • CLEAR_MEASURE_OUTPUT=1 / CLEAR_ACTION_OUTPUT=1:清空中间输出目录。

浏览器访问:http://<主机>:8000/docs


6. 自检清单

检查项 说明
环境 conda activate fishserverpython -V 为 3.11+
API 包 fish_api 目录下 python -c "import app" 无报错
可执行文件 which uvicorn 指向 fishserverbin
权重 .env 中模型路径在本机存在
测量SVO ZED 与 PyTorch 在同一 conda 环境中可用
ffmpeg ffmpeg -version 成功(若走视频转码路径)

7. 参考

  • 根目录 README.mdfish_api/README.md:环境变量表与启动说明。
  • fish_api/start_fresh.sh:启动前 prestart_fresh 与 uvicorn 参数。

若需将 FishMeasure / FishAction 拆到独立 conda 环境,请在 fish_api/.env 中填写 PYTHON_FISH_MEASUREPYTHON_FISH_ACTION(不在本文「方案 A」范围内