主要内容

本页采用了机器翻译。点击此处可查看英文原文。

NVIDIA GPU Cloud 上用于 Amazon Web Services 的 MATLAB 深度学习容器

注意

从 MATLAB® 2024b 版本开始,MATLAB 深度学习容器不再受支持于 NVIDIA® 容器注册表。请改用 MATLAB 深度学习容器在 Docker Hub 上

通过在 MATLAB 深度学习容器中训练神经网络,加速您的深度学习应用程序。该容器专为充分利用高性能 NVIDIA GPU 而设计。您可以通过 Web 浏览器或 VNC 连接远程访问 MATLAB 深度学习容器。

MATLAB 深度学习容器镜像包含 MATLAB 及一系列 MATLAB 工具箱,这些工具箱是深度学习的理想选择(详见其他信息)。

本指南将指导您在支持 Amazon EC2® GPU 的实例上,于云端运行 MATLAB 桌面版。对于其他云服务供应商,所需步骤则有所不同。MATLAB 深度学习容器镜像简化了这一流程,该镜像是一个托管于 NVIDIA GPU Cloud 的 Docker® 容器镜像。该容器镜像可在 NVIDIA GPU Cloud 容器目录中获取。

要求

要使用 MATLAB 深度学习容器镜像,您需要:

  • 一个 Amazon® Web Services 帐户。

  • 满足以下条件的 MATLAB 许可证:

    • 适用于容器中安装的所有 MathWorks® 产品。您可通过 MATLAB 云端深度学习试用版获取 MATLAB 深度学习容器中产品的试用许可。

    • 关联到一个 MathWorks 帐户

    • 已配置为在云端使用。个人许可证和全校许可证已完成配置。其他许可证类型,请联系您的许可证管理员。您可以通过查看您的 MathWorks 帐户来识别您的许可证类型和管理员。管理员可咨询管理网络许可证

此外,若您使用的是并发许可证类型,在运行容器时必须提供网络许可证管理器的端口号和 DNS 地址。在启动容器时,向 docker run 命令添加以下形式的选项:

-e MLM_LICENSE_FILE=27000@MyLicenseServer

成本

您需承担使用本指南创建集群时所产生的 Amazon Web Services 费用。资源设置(例如实例类型)会影响部署成本。有关成本估算,请参阅您正在使用的每项 AWS 服务的定价页面。价格可能会有变动。

准备您的 AWS 帐户

若您还没有 Amazon Web Services 帐户,请访问 https://aws.amazon.com 并按照屏幕提示创建帐户。使用 Amazon EC2 控制台创建密钥对。有关详细信息,请参阅 Amazon EC2 密钥对

注意

创建密钥对时,请确保下载私钥。使用私钥是作为管理员连接到实例的唯一方式。

启动 Docker 主机实例

登录到您的 Amazon Web Services 管理控制台。点击 Services > Compute > EC2 并启动实例。

在启动实例页面,为实例命名,在应用程序和操作系统镜像下搜索 NVIDIA GPU 优化 AMI,选择它并确认。此 Amazon 机器镜像 (AMI) 专为配合 NVIDIA GPU Cloud 使用而设计,旨在充分利用 P3 实例中可用的 Volta GPU。

根据需要配置实例类型、网络设置和存储。请注意,并非所有可用区都提供 P3 实例。您的可用区是在设置虚拟私有云(VPC)时定义的。

如有必要,请为您的实例选择或创建合适的安全组。

选择合适的密钥对选项并启动实例。请确保您能够访问私钥,以便登录您的实例。

实例成功启动后,请从左侧导航栏打开实例页面。查找与您的实例名称对应的实例。当状态检查字段显示所有检查均通过时,即可连接到实例。

连接到实例

点击实例的实例 ID 即可进入实例摘要页面,该页面会显示实例的公共 IPv4 域名系统地址。使用您的客户端机器通过 SSH 连接到实例,使用私钥,可选用 PuTTY 或其他 SSH 客户端。若使用 PuTTY,请将私钥添加至 Connection > SSH > Auth 目录下。若使用命令行界面,请使用标签 -i "path/to/key.pem" 添加私钥。连接到您的 EC2 实例的默认用户名为 ubuntu。连接到实例的地址采用以下形式:

ubuntu@ec2-public-ipv4-address.amazonaws.com
ec2-public-ipv4-address.amazonaws.com 替换为实例的公共 IPv4 DNS 地址。

拉取容器镜像

连接到实例后,拉取容器镜像将其下载到 Docker 主机实例(即容器运行所在的机器)。您只需对每个 EC2 实例执行此操作一次。

您可以从 NVIDIA GPU Cloud Container Catalog 中复制容器镜像发布的拉取命令。在“标签”部分中,找到您要运行的容器镜像版本。在“提取”列中,点击图标复制 docker pull 命令。该命令的格式为:

docker pull nvcr.io/partners/matlab:r20XYz
请将标签 r20XYz 替换为具体的 MATLAB 版本名称,例如 r2020a。请确保 pull 命令的最后部分与您要使用的 MATLAB 版本相匹配。

docker pull 命令粘贴到您的 SSH 客户端中,并在您的 EC2 实例上运行该命令。您无需登录 NVIDIA 容器目录即可拉取容器镜像。

运行 docker pull 命令将把 MATLAB 容器镜像下载到主机 EC2 机器上。下载并解压大型容器镜像可能需要一些时间。

运行容器

使用以下形式的命令运行 MATLAB 深度学习容器:

docker run -it --rm -p 5901:5901 -p 6080:6080 --gpus all --shm-size=512M nvcr.io/partners/matlab:r20XYz

请确保 run 命令的最后部分与您要使用的 MATLAB 版本相匹配。

选项 -p hostport:containerport 将 Docker 主机实例的端口映射到容器内部端口,以便您能够连接到容器桌面。该容器使用端口 5901(用于 VNC 连接)和 6080(用于 Web 浏览器连接)。若在同一主机实例上部署多个容器,必须递增主机端口直至找到可用端口。例如:

-p 5902:5901 -p 6081:6080

MATLAB 深度学习容器现已在您的 EC2 机器上运行。

在容器中运行 MATLAB

通过以下三种方式之一访问容器中的 MATLAB:

  • 使用 Web 浏览器从本地计算机连接到容器桌面,并运行 MATLAB 桌面。

  • 使用 VNC 从本地机器连接到容器桌面,并运行 MATLAB 桌面。

  • 使用命令行界面运行 MATLAB。

通过 Web 浏览器连接

要通过 Web 浏览器连接,请先从本地机器建立通往容器端口 6080(默认 noVNC 端口)的隧道。通过在本地客户端机器上设置 SSH 隧道,连接到远程主机实例上的端口(该端口在执行 docker run 命令时已与容器端口 6080 建立连接),即可实现此操作。有关如何设置 SSH 隧道的更多信息,请参阅创建与远程应用程序和容器的加密连接。然后,使用类似本地计算机浏览器中的 URL 连接到相应端口:

http://localhost:6080

请注意,您必须使用 localhost,而非主机实例的名称。

在出现的 noVNC 登录界面中,点击连接。当系统提示输入密码访问桌面时,请使用密码:

matlab

您可以通过桌面图标运行 MATLAB。使用您的 MathWorks 帐户登录。

若您无法使用 MathWorks 帐户登录,请确认您的帐户已关联到配置为云端使用的许可证。要查看,请访问许可证中心

通过 VNC 连接

要通过 VNC 连接,首先需从本地机器建立通往容器端口 5901(VNC 默认端口)的隧道。通过在本地客户端机器上设置 SSH 隧道,连接到远程主机实例上的端口(该端口在执行 docker run 命令时已与容器端口 5901 建立连接),即可实现此操作。有关如何设置 SSH 隧道的更多信息,请参阅创建与远程应用程序和容器的加密连接。然后,在本地计算机上使用 VNC 客户端连接到客户端的相应显示端口:

localhost:1 

请注意,您必须使用 localhost,而非主机实例的名称。

要登录并连接到容器桌面,请使用密码:

matlab

您可以通过桌面图标运行 MATLAB。使用您的 MathWorks 帐户登录。

若您无法使用 MathWorks 帐户登录,请确认您的帐户已关联到配置为云端使用的许可证。要查看,请访问许可证中心

使用命令行界面运行 MATLAB

您也可以通过命令行界面在本地终端运行 MATLAB。首先,从本地计算机建立到远程主机实例的 SSH 连接。然后,在命令行界面中使用以下命令运行 MATLAB:

matlab

请注意,此情况下不存在图形化桌面环境。

若您无法使用 MathWorks 帐户登录,请确认您的帐户已关联到配置为云端使用的许可证。要查看,请访问许可证中心

使用深度学习测试容器示例

MATLAB 支持使用多个 GPU 并行训练单个神经网络。要在 MATLAB 深度学习容器中启用多 GPU 训练,请使用 trainingOptions 函数将 'ExecutionEnvironment' 设置为 'multi-gpu'

使用 trainnet 函数训练您的网络。MATLAB 会在所有可用 GPU 上打开并行工作单元池。若需仅选择特定 GPU 进行训练,请使用 gpuDevice。有关详细信息,请参阅Select Particular GPUs to Use for Training (Deep Learning Toolbox)

要测试您的容器,可以运行 创建简单的深度学习神经网络以用于分类 (Deep Learning Toolbox) 示例。要尝试此示例,请双击 MATLAB 启动文件夹中的当前文件夹窗格中的文件 MNISTExample.mlx。要在所有可用 GPU 上运行此示例,请在 trainingOptions 函数中将 'ExecutionEnvironment' 设置为 'multi-gpu'

关闭容器会话

要关闭容器会话,请在容器终端中输入 exit。这样做会停止容器并将其移除。关闭容器时,默认不会保存任何进程或数据,除非您已通过装载云存储将数据保存至云端(具体操作详见与容器共享数据)。

终止实例

当您不再需要实例时,请终止它。终止实例将删除与其关联的所有数据。要终止您的 EC2 实例,请转到实例摘要页面,并在实例下拉列表中点击 Terminate instance

其他信息

如何配置 MATLAB 深度学习容器?

您可以通过设置特定环境变量来配置和自定义 MathWorks 容器的行为。有关详细信息,请参阅配置容器

什么是 NVIDIA GPU Cloud?

NVIDIA GPU Cloud 是一个 Docker 容器镜像存储库,其镜像专为在高性能 NVIDIA GPU 上运行应用程序而设计。

MATLAB 深度学习容器中包含什么?

MATLAB 深度学习容器包含 MATLAB 及其他若干工具箱,这些工具箱在深度学习应用中颇具实用价值。

  • Computer Vision Toolbox™

  • GPU Coder™

  • Image Processing Toolbox™

  • MATLAB Coder™

  • Deep Learning Toolbox™

  • Parallel Computing Toolbox™

  • Signal Processing Toolbox™

  • Statistics and Machine Learning Toolbox™

  • Text Analytics Toolbox™

要在 MATLAB 深度学习容器中使用 GPU 进行深度学习,您必须拥有 MATLAB、Deep Learning Toolbox 和 Parallel Computing Toolbox 的许可证。访问容器的全部功能需要持有适用于容器中其他产品的有效许可证。

  • 若您未持有 Deep Learning Toolbox 或 Parallel Computing Toolbox 的许可,MATLAB 在启动时将显示警告,表明您无法使用这些产品。

  • 若您未持有 MATLAB 深度学习容器中其他产品的许可证,MATLAB 将在启动时显示一条消息,表明您无法使用这些产品。

您可通过 MATLAB 云端深度学习试用版获取 MATLAB 深度学习容器中产品的试用许可。此外,该容器还包含若干个预训练的深度神经网络 (Deep Learning Toolbox)

您可以将来自 TensorFlow™-Keras 和 Caffe 的网络及架构导入容器,可选择是否包含层权重。您还可以将训练好的网络转换为开放神经网络交换(ONNX)模型格式。

MATLAB 深度学习容器还包含:

通过将该软件部署在容器中,您可以避免安装和配置这些产品所需的设置时间。您可以同时运行多个容器,在同一时间或不同地点训练多个神经网络,并获得可重复的结果。

另请参阅

主题

外部网站