跳到主要内容

依赖管理

如果需要安装额外的依赖,可以按照以下的方式做配置。这些配置文件会在部署服务启动时自动执行,无需手动干预。

工作空间与模型部署的依赖管理

在进行模型部署之前,通常建议先在「工作空间」中完成模型的开发和测试。这样做有以下几个好处:

  1. 可以在工作空间中交互式地安装和测试依赖
  2. 使用 pip install --user 或创建 conda 环境的方式准备好所需的依赖环境
  3. 环境准备好后,可以直接将工作空间的目录(/openbayes/home)绑定到模型部署中使用
  4. 避免在模型部署阶段重复安装依赖,提高部署效率

最佳实践流程

  1. 在工作空间中:

    • 使用 pip install --user xxx 安装 Python 包到 /openbayes/home/.pylibs
    • 或创建 conda 环境到 /openbayes/home/your_env_name
    • 完成模型开发和测试
  2. 在模型部署时:

    • 将工作空间的 /openbayes/home 目录绑定到模型部署
    • 如果使用自定义 conda 环境,需要在 start.sh 中激活该环境
    • 模型部署将自动继承工作空间中准备好的依赖环境

这种方式特别适合需要复杂依赖环境的模型部署场景。

依赖管理方式概览

1. PyPI 依赖管理

通过 requirements.txt 安装

在模型部署文件夹的根目录下如果存在名为 requirements.txt 的文件,OpenBayes 模型部署在启动前会自动执行 pip install -r requirements.txt 命令,安装其中声明的 PyPI 库。

文件格式遵循标准的 Python requirements.txt 格式,示例:

requirements.txt
jieba
tqdm==4.11.2

使用 pip --user 安装持久化依赖

  • 使用 pip install --user xxx 命令安装的依赖会保存在 /openbayes/home/.pylibs 目录下
  • 这些依赖在容器重启后依然可用
  • 注意: 在新创建的 conda 环境中不要使用 --user 参数,避免依赖冲突

2. Conda 依赖管理

通过 conda-packages.txt 安装

OpenBayes 模型部署支持 Conda 包的安装。在部署服务启动之前会自动在部署目录的根目录下查找名为 conda-packages.txt 的文件,其文件格式遵循:

[channel::]package[=version[=buildid]]

示例:

conda-packages.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 环境

备注

OpenBayes 的所有镜像都是使用 Conda 进行环境管理的,因此 start.sh 中通常都需要先激活默认的 base 环境,即使不使用自定义的 conda 环境。

如果使用自定义的 conda 环境,需要在 start.sh 中明确激活该环境。示例:

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 环境,但不需要额外的环境激活步骤。

3. 系统依赖管理

通过 dependencies.sh 安装

对于非 Conda 和 PyPI 的依赖,可以在根目录提供一个名为 dependencies.sh 的文件,在模型部署启动时它会自动被 bash 执行,并且其执行会早于 requirements.txtconda-packages.txt 依赖的安装。

示例:

dependencies.sh
apt update && apt install tree -y

依赖安装顺序

当多个依赖配置文件同时存在时,安装顺序为:

  1. dependencies.sh
  2. conda-packages.txt
  3. requirements.txt

最佳实践建议

  1. 对于需要持久化的 Python 依赖:

    • 使用 pip install --user xxx 安装到用户目录
    • /openbayes/home 下创建自定义 Conda 环境
    • 在代码仓库中包含 requirements.txt/conda-packages.txt 文件
    • 如果使用自定义 conda 环境,确保在 start.sh 中正确激活环境
  2. 对于系统依赖:

    • 将安装命令保存在 dependencies.sh 中
    • 每次容器启动时会自动执行
  3. 注意事项:

    • 系统盘上的依赖在容器重启后会丢失
    • 工作目录 /openbayes/home 中的内容会持久化保存
    • 建议将重要依赖环境保存在工作目录中
    • 使用自定义 conda 环境时,确保 start.sh 中的环境路径正确