依赖管理
如果需要安装额外的依赖,可以按照以下的方式做配置。这些配置文件会在部署服务启动时自动执行,无需手动干预。
工作空间与模型部署的依赖管理
在进行模型部署之前,通常建议先在「工作空间」中完成模型的开发和测试。这样做有以下几个好处:
- 可以在工作空间中交互式地安装和测试依赖
- 使用
pip install --user或创建独立环境(Conda / uv)的方式准备好所需的依赖环境 - 环境准备好后,可以直接将工作空间的目录(
/openbayes/home)绑定到模型部署中使用 - 避免在模型部署阶段重复安装依赖,提高部署效率
最佳实践流程
-
在工作空间中:
- 使用
pip install --user xxx安装 Python 包到/openbayes/home/.pylibs - 或创建独立环境到
/openbayes/home/your_env_name(内置 Conda 的运行时用conda create,uv 运行时用uv venv,见用 uv 管理 Python 环境) - 完成模型开发和测试
- 使用
-
在模型部署时:
- 将工作空间的
/openbayes/home目录绑定到模型部署 - 如果使用自定义环境,需要在
start.sh中激活该环境 - 模型部署将自动继承工作空间中准备好的依赖环境
- 将工作空间的
这种方式特别适合需要复杂依赖环境的模型部署场景。
依赖管理方式概览
1. PyPI 依赖管理
通过 requirements.txt 安装
在模型部署文件夹的根目录下如果存在名为 requirements.txt 的文件,OpenBayes 模型部署在启动前会自动执行 pip install -r requirements.txt 命令,安装其中声明的 PyPI 库。
文件格式遵循标准的 Python requirements.txt 格式,示例:
jieba
tqdm==4.11.2
使用 pip --user 安装持久化依赖
- 使用
pip install --user xxx命令安装的依赖会保存在/openbayes/home/.pylibs目录下 - 这些依赖在容器重启后依然可用
- 注意: 在新创建的独立环境(conda 或 uv venv)中不要使用
--user参数,避免依赖冲突
2. Conda 依赖管理
通过 conda-packages.txt 安装
OpenBayes 模型部署支持 Conda 包的安装。在部署服务启动之前会自动在部署目录的根目录下查找名为 conda-packages.txt 的文件,其文件格式遵循:
[channel::]package[=version[=buildid]]
conda-packages.txt 仅在内置 Conda 的运行时中有效;使用 uv 的运行时(Ubuntu 24.04 及更新)请改用 requirements.txt。
示例:
conda-forge::rdkit
conda-forge::pygpu
创建自定义 Conda 环境
- 可以在
/openbayes/home下创建新的 conda 环境 - 示例:
conda create -p /openbayes/home/open-mmlab python=3.9 -y
conda activate /openbayes/home/open-mmlab
在 start.sh 中激活 Conda 环境
内置 Conda 的运行时(Ubuntu 22.04 及更早)中,start.sh 通常需要先激活默认的 base 环境,即使不使用自定义的 conda 环境。使用 uv 的运行时见下一节。
如果使用自定义的 conda 环境,需要在 start.sh 中明确激活该环境。示例:
#!/bin/bash
# 首先激活默认的 base 环境
source /usr/local/etc/profile.d/conda.sh
conda activate base
# 如果使用自定义环境,继续激活自定义环境
conda activate /openbayes/home/open-mmlab
# 启动模型服务
python app.py
如果不使用自定义 conda 环境,而是使用系统默认环境或通过 pip install --user 安装的依赖,仍然需要激活 base 环境,但不需要额外的环境激活步骤。
uv 运行时:start.sh 通常无需激活环境
使用 uv 的运行时(Ubuntu 24.04 及更新,如 vllm 0.20 及之后)中,默认环境开箱即用:start.sh 不需要任何激活步骤(也不需要 conda 运行时那样先激活 base),直接写启动命令即可;通过 pip install --user 准备的依赖会自动生效。
只有一种情况需要额外一行:你在工作空间自建了独立的 uv 环境并希望部署使用它,此时在 start.sh 开头 source 激活:
#!/bin/bash
# 激活自定义环境
source /openbayes/home/myenv/bin/activate
# 启动模型服务
python app.py
3. 系统依赖管理
通过 dependencies.sh 安装
对于非 Conda 和 PyPI 的依赖,可以在根目录提供一个名为 dependencies.sh 的文件,在模型部署启动时它会自动被 bash 执行,并且其执行会早于 requirements.txt 和 conda-packages.txt 依赖的安装。
示例:
apt update && apt install tree -y
依赖安装顺序
当多个依赖配置文件同时存在时,安装顺序为:
dependencies.shconda-packages.txtrequirements.txt
最佳实践建议
-
对于需要持久化的 Python 依赖:
- 使用
pip install --user xxx安装到用户目录 - 在
/openbayes/home下创建自定义独立环境(Conda 或 uv) - 在代码仓库中包含 requirements.txt/conda-packages.txt 文件
- 如果使用自定义环境,确保在
start.sh中正确激活环境
- 使用
-
对于系统依赖:
- 将安装命令保存在 dependencies.sh 中
- 每次容器启动时会自动执行
-
注意事项:
- 系统盘上的依赖在容器重启后会丢失
- 工作目录
/openbayes/home中的内容会持久化保存 - 建议将重要依赖环境保存在工作目录中
- 使用自定义 conda 环境时,确保
start.sh中的环境路径正确