创建数据科学虚拟机共享池

本文将介绍如何为团队创建 Data Science Virtual Machine (DSVM) 共享池。 使用共享池可以获得重要优势:

  • 资源利用率更高
  • 更轻松地共享和协作
  • 更有效地管理 DSVM 资源

可以使用许多方法和技术创建 DSVM 池。 本文重点介绍交互式虚拟机 (VM) 池。 替代的托管计算基础结构涉及到 Azure 机器学习计算。 有关详细信息,请访问创建计算群集

交互式 VM 池

由整个 AI/数据科学团队共享的交互式 VM 池为用户提供了一种登录到可用 DSVM 实例,而不是为每组用户提供专用实例的方法。 此方法提供了更好的可用性和更高的资源利用效率。

使用 Azure 虚拟机规模集技术来创建交互式 VM 池。 使用规模集创建并管理一组完全相同的、负载均衡的、自动缩放的 VM。

用户登录到主池的 IP 或 DNS 地址。 规模集将会话自动路由到规模集中的可用 DSVM。 由于用户需要一致且熟悉的环境,因此无论他们登录到哪个 VM,规模集中的所有 VM 实例都会装载一个共享的网络驱动器。 这类似于 Azure 文件共享或网络文件系统 (NFS) 共享。 用户的共享工作区通常保留在已装载到每个实例上的共享文件存储上。

GitHub 上提供了一个示例性的 Azure 资源管理器模板,用于通过 Ubuntu DSVM 实例创建规模集。 同一位置还存放了 Azure 资源管理器模板的参数文件示例。

在 Azure CLI 中指定参数文件的值,以通过 Azure 资源管理器模板创建规模集:

az group create --name [[NAME OF RESOURCE GROUP]] --location [[ Data center. For eg: "China East"]
az deployment group create --resource-group  [[NAME OF RESOURCE GROUP ABOVE]]  --template-uri https://raw.githubusercontent.com/Azure/DataScienceVM/master/Scripts/CreateDSVM/Ubuntu/dsvm-vmss-cluster.json --parameters @[[PARAMETER JSON FILE]]

这些命令假定你已准备好:

  • 一个参数文件副本,其中包含为规模集实例指定的值
  • VM 实例数
  • 指向 Azure 文件共享的指针
  • 将在每个 VM 上装载的存储帐户的凭据

命令在本地引用参数文件。 也可通过内联的方式传递参数,或者在脚本中提示用户输入这些参数。

上面的模板启用 SSH 以及 JupyterHub 端口(从 Ubuntu DSVM 的前端规模集通往后端池)。 以用户身份通过正常方式登录到安全外壳 (SSH) 或 JupyterHub 上的 VM。 由于 VM 实例可以动态地进行纵向扩展或减小,因此必须将所有状态保存在装载的 Azure 文件共享中。 可以使用同一方法创建 Windows DSVM 池。

GitHub 中的 Azure DataScienceVM 存储库也提供装载 Azure 文件共享的脚本。 该脚本在参数文件的指定装载点装载 Azure 文件共享。 该脚本还在初始用户的主目录中创建指向已装载驱动器的软链接。 Azure 文件存储共享中的特定于用户的笔记本目录是指向 $HOME/notebooks/remote 目录的软链接,以便用户可以访问、运行和保存其 Jupyter 笔记本。 在 VM 上创建其他用户,以便将每个用户的 Jupyter 工作区指向 Azure 文件共享时,可以使用同一约定。

虚拟机规模集支持自动缩放。 可以设置有关何时创建其他实例以及何时减小实例的规则。 例如,可以纵向缩减至零个实例以在未使用任何 VM 的情况下节省云硬件的使用成本。 虚拟机规模集文档页提供了有关自动缩放的详细步骤。

后续步骤