跳到主要内容

关键概念

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

算力容器 Gear

算力容器,在文档中也经常称为「容器」,可以简单理解为一个绑定了指定资源的小机器,创建容器时需要指定「算力」(CPU、内存、硬盘大小)、选择「镜像」(可以理解为预装的应用程序)、绑定「数据」。

info

算力容器 Gear 虽然底层有使用 Docker 技术,但每个「执行」不完全等价于一个 Docker 容器,在执行过程中 Gear 会提供额外的数据同步、数据绑定等额外功能。

每次容器的「执行」都会提供独立的存储空间并绑定到 /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 是同一个目录。

更多有关数据绑定的信息请查看数据绑定

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

  1. Python 脚本
  2. Jupyter 工作空间

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

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

注意

Jupyter 工作空间一旦处于运行状态即开始计费,直到用户主动关闭,即使用户没有在使用其中的计算资源,但由于算力资源独占的特性,也依然会正常计费。因此,一旦不再使用 Jupyter 工作空间,请及时将其关闭,避免造成不必要的计费。

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

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

数据仓库 Data Warehouse

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

绑定数据仓库

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

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

如上图所示,openbayes/cifar-100 图像分类数据集/2 数据仓库将被绑定到容器中的 /input0 目录,在容器运行后就可以在 /input0 访问到了。

用户的「存储空间」

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

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

输出

「输出」是指每个「执行」中的 /output 目录。在容器运行时,/output 被称为「工作空间」,这个目录下的数据在容器关闭后会自动的保存下来,其用量也会反映到用户的「存储空间」中。也就是说想要保存下来的内容都应该存储到这个目录中

容器中默认绑定在 /output 的「工作空间」与「存储空间」容量是不同的:

  1. 容器的「工作空间」的容量是 /output 的存储容量上限,在使用该容器时,存放在该目录的文件总容量不能超过这个上限。
  2. 而「存储空间」的用量是每个用户所有的数据集以及容器输出加在一起的总大小,其容量是默认获赠额度与用户购买额度的总和。
  3. 在容器关闭时「工作空间」的内容会自动的同步回「存储空间」,那么「存储空间」的用量也会更新。

算力

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

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

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

运行时环境

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

更多内容请见运行时环境