在 Azure Stack Hub 上部署支持 GPU 的 IoT 模块Deploy a GPU enabled IoT module on Azure Stack Hub

使用支持 GPU 的 Azure Stack Hub,可将处理器密集型模块部署到在 IoT Edge 运行的 Linux 设备。With a GPU-enabled Azure Stack Hub, you can deploy processor-intensive modules to Linux devices running at the IoT Edge. GPU 优化型 VM 大小是具有单个或多个 NVIDIA GPU 的专用 VM。GPU optimized VM sizes are specialized VMs available with single or multiple NVIDIA GPUs. 本文介绍如何使用 GPU 优化型 VM 运行计算密集型、图形密集型和可视化工作负载。In this article, learn to use GPU optimized VMs to run compute-intensive, graphics-intensive, and visualization workloads.

在开始之前,你将需要一个 Azure Active Directory (Azure AD) 订阅,可以访问全局 Azure 和 Azure Stack 中心、Azure 容器注册表 (ACR) 和 IoT 中心。Before you start, you will need an Azure Active Directory (Azure AD) subscription with access to global Azure and Azure Stack Hub, an Azure Container Registry (ACR), and an IoT hub.

本文内容:In this article, you:

  • 安装支持 GPU 的 Linux VM 并安装正确的驱动程序。Install an GPU-enabled Linux VM and install the correct drivers.
  • 安装 Docker 并在运行时启用 GPU。Install Docker and enable the GPU in the runtime.
  • 将 IoT 设备连接到 IoT 中心并从 IoT 市场安装模型:Getting started with GPUsConnect your IoT device to your iOT Hub and install from the iOT marketplace the model: Getting started with GPUs.
  • 使用 Azure IoT 资源管理器从本地计算机安装和监视设备。Install and monitor your device from a local machine using Azure IoT explorer.
  • 另外,还可使用 Visual Studio Code 中的 Azure IoT 扩展安装和监视设备。And optionally, install and monitor your device using the Azure IoT extension in Visual Studio Code.

先决条件Prerequisites

你需要在 Azure Stack 中心实例、全球 Azure 和本地开发计算机上部署以下资源。You'll need to have the following resources in place in your Azure Stack Hub instance, global Azure, and on your local development machine.

Azure Stack Hub 和 AzureAzure Stack Hub and Azure

  • 以用户身份在具有 NVIDA GPU 的 Azure Stack Hub 集成系统中使用 Azure Active Directory (Azure AD) 的订阅。A subscription as a user using Azure Active Directory (Azure AD) in an Azure Stack Hub Integrated System with an NVIDA GPU. 以下芯片适用于 IoT 中心:The following chips work with iOT Hub:

    • NCv3NCv3
    • NCas_v4NCas_v4

    有关 Azure Stack Hub 上的 GPU 的详细信息,请参阅 Azure Stack Hub 上的图形处理单元 (GPU) VMFor more information about GPUs on Azure Stack Hub, see Graphics processing unit (GPU) VM on Azure Stack Hub.

  • 全局 Azure 订阅。A global Azure subscription. 如果你没有全球 Azure 订阅,请在开始之前创建一个 免费帐户If you don't have a global Azure subscription, create a free account before you begin.

  • 一个 Azure 容器注册表 (ACR)An Azure Container Registry (ACR). 记下 ACR 登录服务器、用户名和密码。Make a note of the ACR sign-in server, username, and password.

  • 全局 Azure 中的免费或标准层 IoT 中心A free or standard-tier IoT hub in global Azure.

一台开发计算机A development machine

  • 可以使用自己的计算机或虚拟机,具体取决于开发首选项。You can use your own computer or a virtual machine, depending on your development preferences. 开发计算机需支持嵌套虚拟化。Your development machine will need to support nested virtualization. 此功能是运行 Docker(本文中使用的容器引擎)所必需的。This capability is necessary for running Docker, the container engine used in this article.

  • 开发计算机需要以下资源:Your development machine will need the following resources:

注册 IoT Edge 设备Register an IoT Edge device

使用单独的设备来托管 IoT Edge 设备。Use a separate device to host your IoT Edge device. 使用单独的设备可分隔开发计算机与 IoT Edge 设备,更准确地反映部署方案。Using a separate device will provide a separation between your development machine and IoT Edge device more accurately mirrors a deployment scenario.

使用 Linux VM 在 Azure 中创建 IoT Edge 设备:Create an IoT Edge device in Azure with a Linux VM:

  1. 在 Azure Stack Hub 上创建 N 系列 Linux 服务器 VMCreate an N-series Linux server VM on Azure Stack Hub. 为服务器安装组件时,将通过 SSH 与服务器进行交互。As you install components for your server, you'll interact with the server via SSH. 有关详细信息,请参阅使用 SSH 公钥For more information, see Use an SSH public key.

  2. 创建并注册 IoT Edge 设备Create and register an IoT Edge Device

准备支持 GPU 的 VMPrepare a GPU-enabled VM

  1. 按照在运行 Linux 的 N 系列 VM 上安装 NVIDIA GPU 驱动程序一文中的步骤,在 N 系列 Linux 服务器上安装 NVIDA GPU 驱动程序。Install the NVIDA GPU Drivers on your N-series Linux server by following the steps in the article, Install NVIDIA GPU drivers on N-series VMs running Linux.

    备注

    你将使用 bash 命令行来安装软件。You'll use the bash command line to install your software. 请记下这些命令,因为你将使用相同的命令在支持 GPU 的 VM 上的 Docker 中运行的容器上安装驱动程序Make a note of the commands since you'll use the same commands to install the drivers on the container running in Docker on your GPU-enabled VM

  2. 在 Azure Stack Hub 中的 N 系列 Linux 服务器上安装最新的 IoT Edge 运行时。Install the latest IoT Edge runtime on your N-series Linux server in Azure Stack Hub. 有关说明,请参阅在基于 Debian 的 Linux 系统上安装 Azure IoT Edge 运行时For instructions, see Install the Azure IoT Edge runtime on Debian-based Linux systems

安装 DockerInstall Docker

在支持 GPU 的 VM 上安装 Docker。Install Docker on your GPU-enabled VM. 你将在 VM 上的容器中从 IoT Edge 市场运行该模块。You're going to run the module from the IoT Edge marketplace in a container on the VM.

必须安装 Docker 19.02 或更高版本。You must install Docker 19.02 or greater. Docker 运行时现在支持 NVIDIA GPU。The Docker runtime now supports the NVIDIA GPUs. 要详细了解 Docker 中的 GPU,请参阅 Docker 文档中的文章:内存、CPU 和 GPU 的运行时选项To learn more bout GPUs in Docker, see the article in the Docker docs, Runtime options with Memory, CPUs, and GPUs.

安装 DockerInstall Docker

Docker 容器可以在任意位置运行:在客户数据中心本地、在外部服务提供商或在 Azure 云中。Docker containers can run anywhere, on-premises in the customer datacenter, in an external service provider or in the cloud, on Azure. Docker 映像容器可以在 Linux 和 Windows 上本机运行。Docker image containers can run natively on Linux and Windows. 但是,Windows 映像仅能在 Windows 主机上运行,Linux 映像可以在 Linux 主机和 Windows 主机上运行(到目前为止,使用 Hyper-V Linux VM),其中主机是指服务器或 VM。However, Windows images can run only on Windows hosts and Linux images can run on Linux hosts and Windows hosts (using a Hyper-V Linux VM, so far), where host means a server or a VM. 有关详细信息,请参阅什么是 Docker?For more information, see What is Docker?.

  1. 使用 SSH 客户端连接到 N 系列 Linux 服务器。Connect to your N-series Linux server using your SSH client.

  2. 更新 apt 索引和列表。Update the apt index and lists.

    sudo apt-get update
    
  3. 提取计算机上现有包的新版本。Fetch the new versions of existing packages on the machine.

    sudo apt-get upgrade
    
  4. 安装添加 Docker 的 apt 存储库所需的依赖项。Install dependencies required to add Docker's apt repository.

    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    
  5. 添加 Docker 的 GPG 密钥。Add Docker's GPG key.

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
  6. 添加 Docker 的 apt 存储库。Add Docker's apt repo.

    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    
  7. 更新 apt 索引和列表,并安装 Docker Community Edition。Update apt index and lists, and install Docker Community Edition.

    sudo apt-get update 
    sudo apt-get install docker-ce
    
  8. 通过检查 Docker 版本来验证安装。Verify install by checking the Docker version.

    docker -v
    
  9. 在 Docker 中公开可用的 GPU 资源。Expose the available GPU resources in Docker.

    docker run -it --rm --gpus all ubuntu nvidia-smi
    

从市场获取项Get the item from the marketplace

返回到 Azure 门户,然后使用 IoT 市场将模型添加到边缘设备。Return to the Azure portal and add the the model to your edge device using the iOT marketplace. 从菜单中选择“市场模块”。Select Marketplace Module from the menu. 然后搜索 Getting started with GPUs,并按照说明添加模块。And search for Getting started with GPUs, and follow the instructions to add the module.

有关说明,请参阅选择设备并添加模块For instructions see Select device and add modules

启用监视Enable monitoring

  1. 下载 Azure IoT 资源管理器,然后将应用程序连接到 IoT 中心。Download Azure IoT explorer, and connect the application to your IoT Hub.

  2. 选择 IoT 设备,并从导航菜单导航到“遥测”。Select your IoT Device and navigate to Telemetry from the navigation menu.

  3. 选择“启动”以开始监视来自 IoT Edge 设备的输出。Select Start to begin monitoring output from the IoT Edge Device.

有效安装

监视模块(可选)Monitor the module (Optional)

  1. 在 VS Code 命令面板中,运行“Azure IoT 中心: 选择 IoT 中心”。In the VS Code command palette, run Azure IoT Hub: Select IoT Hub.

  2. 选择包含要配置的 IoT Edge 设备的订阅和 IoT 中心。Choose the subscription and IoT hub that contain the IoT Edge device that you want to configure. 在这种情况下,请选择用于部署 Azure Stack Edge 设备的订阅,并选择为 Azure Stack Edge 设备创建的 IoT Edge 设备。In this case, select the subscription used to deploy the Azure Stack Edge device, and select the IoT Edge device created for your Azure Stack Edge device. 在前面的步骤中通过 Azure 门户配置计算时,会发生这种情况。This occurs when you configure compute via the Azure portal in the earlier steps.

  3. 在 VS Code 资源管理器中,展开“Azure IoT 中心”部分。In the VS Code explorer, expand the Azure IoT Hub section. 在“设备”下,应会看到与 Azure Stack Edge 设备对应的 IoT Edge 设备。Under Devices, you should see the IoT Edge device corresponding to your Azure Stack Edge device.

    1. 选择该设备,右键单击,然后选择“开始监视内置事件终结点”。Select that device, right-click, and select Start Monitoring Built-in Event Endpoint.

    2. 转到“设备”>“模块”,应会看到“GPU 模块”正在运行 。Go to Devices > Modules and you should see your GPU module running.

    3. VS Code 终端还应显示 IoT 中心事件,这些事件显示为 Azure Stack Edge 设备的监视输出。The VS Code terminal should also show the IoT Hub events as the monitoring output for your Azure Stack Edge device.

    有效安装是

    你可看到 GPU 执行同一组操作(5000 次形状转换迭代)所用时间比 CPU 所用时间要少得多。You can see that the time taken to execute the same set of operations (5000 iterations of shape transformation) by GPU is lot lesser than it is for CPU.

后续步骤Next Steps