跳到主要内容

运行时环境(镜像)

运行时环境中的通用依赖#

OpenBayes 默认在运行时环境中包含了大量的基础依赖,以减少在每次容器启动时耗费运行资源进行依赖的下载与安装。

预先安装的依赖可以按照用途分为一下几个方面:

1. 通用机器学习类库#

  • scikit-learn 通用机器学习类库,包含了大量的机器学习模型、数据分析、数据挖掘算法以及可视化工具
  • XGBoost 一个性能优异的 GBDT 模型实现,大量 kaggle 的获奖算法都在此算法之上构建
  • ONNX 深度学习模型转换类库
  • spaCy 工业级自然语言处理类库
  • LightGBM 由微软推出的 boosting 框架

2. 图像处理工具#

常用的图形处理类库

  • OpenCV 功能强大的图像处理工具
  • Pillow Python 下常用的图像处理工具

3. 数据分析类库#

  • pandas
  • SciPy
  • Matplotlib
  • NumPy
  • h5py

如何添加不在列表中的依赖#

默认的 OpenBayes 运行时环境已经安装了大量的机器学习场景下的依赖,如果你依然需要额外的依赖,可以通过以下方式安装。

note

运行时环境以 Conda 进行管理,可以支持 Conda 安装额外的依赖

danger

每个运行时环境所安装的 CUDA 版本有所不同,在安装额外的依赖时一定要注意和运行时环境中 CUDA 的环境相匹配。

安装 Python 的类库#

如果你在上传代码并以「Python 脚本执行」的方式运行代码的时候需要一些额外的依赖,可以在在上传的代码的根目录定义一个名为 openbayes_requirements.txt 或者 requirements.txt 的文件并在里面添加需要的依赖和其他文件一并上传即可。在代码运行前,系统会首先安装这些依赖后再执行「python 脚本」。

该文件内容的格式和 Python 的 requirements.txt 格式是一致的,一个典型的 openbayes_requirements.txt 文件内容如下:

requirements.txt
jiebatqdm==4.11.2

其中 jieba tqdm 是两个可以通过 pip 安装的类库,通过以上格式即可在执行「python 脚本」之前首先安装这些类库。tqdm==4.11.2== 之后指定了想要具体安装的版本。

danger

系统中一些依赖如 tensorflow pytorch 的版本不建议被随意修改,因为不同版本的 tensorflow 或者 pytorch 对其底层的依赖也是有区别的,可能导致当前环境的损坏。

通过 Conda 进行依赖管理#

对于「工作空间」这部分见 用 Conda 管理依赖

对于「Python 脚本执行」可以在上传的代码根目录下提供名为 conda-packages.txt 的文件,其文件格式遵循

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

这里有一个样例:

conda-packages.txt
conda-forge::rdkitconda-forge::pygpu

如果 requirements.txtopenbayes_requirements.txtconda-packages.txt 同时存在,那么会首先安装 conda-packages.txt 里的依赖,然后再安装 openbayes_requirements.txt 以及 requirements.txt 中的依赖。

安装其他依赖#

如果是在「Jupyter 工作空间」中可以参见下一部分。如果是「Python 脚本执行」场景你可以用以下方式安装额外的非 Python 的依赖:

  1. 将依赖安装命令包含在「执行命令」中

    例如想要在运行程序前下载必要的 git 仓库,可以使用以下「执行命令」:

    $ git clone https://github.com/tensorflow/models.git && cd models && python ...
  2. 准备一个 dependencies.sh 脚本

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

    例如我这里采用命令 dependencies.sh 的脚本,其内容如下:

    dependencies.sh
    git clone https://github.com/tensorflow/models.gitcd modelspip install -r requirements.txt
info

你的运行时环境为 Linux Ubuntu 环境,如果想要安装额外的包依赖,可以采用 apt-get 或者 apt 命令,当然在执行之前通常需要执行命令 apt-get update 或者 apt update

在 Jupyter 工作空间中安装依赖#

在「Jupyter 工作空间」中你可以在其中安装任意你需要的依赖,不论是 Python 的或者是通过 apt 安装的其他依赖。

例如下面就是在编辑器中安装一个额外的 Python 依赖:

在输入 ! 之后跟上 pip 安装的命令即可,例如 !pip install jieba

info

通过 pip install --user 命令可以保留安装的 pip 类库,不再需要重复安装。详情见下文 在默认的-python-版本下安装额外的依赖

而通过 !apt install xxx 即可在其中安装 apt 的包依赖:

保留 pip 依赖#

目前 OpenBayes 下安装的额外的 pip 依赖在容器关闭后都会丢失,重复性的安装依赖会浪费不少时间。有以下两种方法可以减少不必要的重复性安装:

1. 需要不同的 Python 版本#

如果需要一个全新的 Python 版本(目前 OpenBayes 下 Python 的版本为 3.6)可以依据 在 /openbayes/home 下创建一个新的环境 创建一个全新的环境在 /openbayes/home 目录下,并在其中安装完整的依赖。

2. 在默认的 Python 版本下安装额外的依赖#

如果仅仅需要在默认的 Python 环境中添加额外的 pip 安装依赖,可以通过 pip install --user 的命令进行安装。

这里以 Kashgari 举个例子。OpenBayes 默认没有安装 kashgari,在「Jupyter 工作空间」启动之后通过命令 pip install --user kashgari 后,kashgari 会被安装在 /openbayes/home/.pylibs/ 目录下。当「工作空间」关闭后再次启动时,.pylibs 目录也会被重新拷贝到容器指定目录下,通过 pip list 查看依赖依然可以看到 kashgari 在依赖目录中。

安装 Jupyter 工作空间扩展#

「Jupyter 工作空间」有很多扩展,我们可以在「Terminal」中添加我们需要的扩展。我们这里展示如何安装一个自动增加编辑器目录的扩展 jupyterlab-toc

打开一个「Terminal」,并输入以下命令:

jupyter labextension install @jupyterlab/toc

再次打开一个 .ipynb 文件,即可看到左侧出现了「目录」的选项卡,点击后即可看到当前文件的目录了。

最后由 Tunghsiao Liu 更新