关键概念

OpenBayes 产品的关键概念

最后更新于

这里介绍在 OpenBayes 中所提到的一些重要的概念。

算力容器 BayesGear

算力容器,在文档中也经常称为「容器」,创建容器时需要指定「算力」、选择「镜像」、绑定「数据」。

每次容器的「执行」都会提供独立的存储空间并绑定到 /output 目录,作为其工作目录,这个目录在「执行」内部也通过软连接的方式指定到了 /openbayes/home 目录。执行结束后,其中的内容会被保存下来,也称为该执行的「输出」。

每个执行在创建时可以通过根目录 /input0 /input1 /input2 /input2 /input3 /input4 绑定其他数据,这些目录也同样在系统内部通过软连接的方式指定到了 /openbayes/inputs/input0/openbayes/inputs/input1/openbayes/inputs/input2/openbayes/inputs/input3/openbayes/inputs/input4。注意绑定到这些目录的数据是只读的,无法对其中的内容进行修改,容器内数据绑定的关系如下所示:

/input0 -> /openbayes/inputs/input0 (只读)
/input1 -> /openbayes/inputs/input1 (只读)
/input2 -> /openbayes/inputs/input2 (只读)
/input3 -> /openbayes/inputs/input3 (只读)
/input4 -> /openbayes/inputs/input4 (只读)
/output -> /openbayes/home          (读写)

-> 左右两侧的目录是等价的,即 /input0 和 /openbayes/inputs/input0 是同一个目录。

BayesGear 虽然底层有使用 Docker 技术,但每个「执行」并不是和 Docker 容器是一一对应的关系,其还是有很大的区别,在执行过程中 BayesGear 会提供额外的数据同步、数据绑定等功能。

BayesGear 的「执行」目前支持两种方式:

  1. Python 脚本
  2. JupyterLab

其中「Python 脚本」方式支持用户将自己的代码上传上来,然后指定所要执行的命令,容器在启动时会按照用户指定的入口命令执行 Python 脚本。适合一次性的、不需要频繁修改的 长任务 执行。

JupyterLab 是一种交互式的代码执行工具,创建 JupyterLab 后我们可以在其上做一些即时的命令执行和尝试性的工作。适合早期模型的调试和构建。

注意 JupyterLab 一旦处于运行状态即开始计费,直到用户主动关闭,即使用户没有在使用其中的计算资源也依然会正常计费。因此,一旦不再使用 JupyterLab 请立即将其关闭。

同一个「容器」下的「执行」被认为在业务上存在着密切的关联,每次「算力容器」的「执行」都会被独立记录下来。

但是每次「执行」的环境都是隔离的,也就是说每次在「执行」中执行的安装命令当这次执行关闭之后就无法找回了。即使通过「继续执行」运行起来的「执行」的环境仍然是一次全新的环境。

数据仓库 Data Warehouse

用户可以创建数据仓库用于保存和复用数据。目前区分为两种类型:数据集与模型。通常来说数据集的规模都比较庞大,每次运行都重复上传代码和数据非常不现实。因此这里提供一个单独的区域用于数据集的管理。

绑定数据仓库

在创建 “算力容器” 时,通过 “绑定数据” 可以将数据仓库绑定到容器中进行使用,目前 “容器” 支持最多 5 个数据绑定。

如下图所示,在创建容器时可以选定数据仓库或下文所说的 “容器输出” 绑定到 /input0 /input1 /input2 /input3 /input4 /output 中任意一个目录中。在容器创建时,对应的数据仓库或输出就会被下载到对应的目录中。

如上图所示,Bayes_cifar_10/1 数据仓库将被绑定到容器中的 /input0 目录,在容器运行后就可以在 /input0 访问到了。

用户的「存储空间」

用户上传的数据仓库、代码、容器关闭后保存的内容都会保存在用户的「存储空间」中,在用户的个人页面可以看到自己存储资源的用量。默认用户的存储资源限额为 5G。一旦超过用户存储总量用户将不再能创建容器、上传数据。

更多信息可以在资源以及用量获得。

输出

「输出」是指在 “容器” 中所指定的最终可以保存下来的目录 /output。在容器运行时,每个容器会在 /output 下提供一个临时的「工作空间」,这个目录下的数据在容器关闭后会自动的保存下来移动到用户的「存储空间」中。也就是说凡是你想要保存下来的内容都应该存储到这个目录中

容器中默认绑定在 /output 的「工作空间」与用户的「存储空间」是不同的,「工作空间」在容器关闭时会自动的同步回「存储空间」,也就是说「工作空间」的容量和「存储空间」的容量是独立的。

注意 容器执行时其工作目录为 /output,所以对其他数据仓库的引用 /input0-4 需要用绝对路径,而上传的代码则可以用相对目录执行。

算力

算力定义了在 OpenBayes 的容器执行所提供的资源多少,目前 OpenBayes 主要提供两种类型的算力:

  1. CPU 算力,包含一定个数的 CPU,通过 CPU 执行机器学习算法
  2. GPU 算力,包含一个甚至多个 GPU,可以利用深度学习框架的 GPU 版本加速深度学习模型的训练和推断

每种算力都提供了内存的上限和存储上限,容器运行过程中一旦超过内存或存储的使用上限会导致任务的失败。

镜像

镜像也被称为运行时环境,提供了容器执行时所依赖的主要的机器学习算法库的种类。目前 OpenBayes 提供了 Tensorflow PyTorch MxNet Darknet CPU 和 GPU 环境下不同版本的标准库。后续将会提供更多其他种类的机器学习算法库。

更多内容请见运行时环境