Share via


教學課程:設定、連線及驗證 GPU 的 IoT Edge 模組

適用於:IoT Edge 1.5 複選標記 IoT Edge 1.5 IoT Edge 1.4 複選標記 IoT Edge 1.4

重要

支援 IoT Edge 1.5 LTS 和 IoT Edge 1.4 LTS 版本。 IoT Edge 1.4 LTS 於 2024 年 11 月 12 日結束生命週期。 如果您是舊版,請參閱更新 IoT Edge

本教學課程說明如何建置已啟用 GPU 的虛擬機 (VM)。 從 VM 中,您將瞭解如何執行 IoT Edge 裝置,將工作從其中一個模組配置至 GPU。

我們將使用 Azure 入口網站、Azure Cloud Shell 和 VM 的命令行來:

必要條件

建立 GPU 優化的虛擬機

若要建立 GPU 優化的虛擬機(VM),選擇正確的大小很重要。 並非所有 VM 大小都會容納 GPU 處理。 此外,不同工作負載有不同的 VM 大小。 如需詳細資訊,請參閱 GPU 優化虛擬機大小 ,或嘗試 虛擬機選取器

讓我們在 GitHub 中使用 Azure Resource Manager (ARM) 範本建立 IoT Edge VM,然後將它設定為 GPU 優化。

  1. 移至 GitHub 中的 IoT Edge VM 部署範本: Azure/iotedge-vm-deploy

  2. 選取 [部署至 Azure] 按鈕,以在 Azure 入口網站 中為您起始自定義 VM 的建立。

  3. 使用您的 Azure 認證與資源填寫[自訂部署] 欄位:

    屬性 描述或範例值
    訂用帳戶 選擇您的 Azure 帳戶訂用帳戶。
    資源群組 新增您的 Azure 資源群組。
    區域 East US
    GPU VM 無法在所有區域中使用。
    DNS 標籤首碼 為您的 VM 建立名稱。
    管理員使用者名稱 adminUser
    或者,建立您自己的用戶名稱。
    裝置連接字串 從 IoT Edge 裝置複製您的 連接字串,然後貼到這裡。
    VM 大小 Standard_NV6
    驗證類型 視需要選擇密碼SSH 公鑰,然後建立密碼或金鑰組名稱。

    提示

    檢查每個區域中支援哪些 GPU VM: 依區域提供的產品。

    若要檢查 Azure 訂用帳戶允許的區域,請從 Azure 入口網站 嘗試此 Azure 命令。 中的 NStandard_N 表示它是已啟用 GPU 的 VM。

    az vm list-skus --location <YOUR-REGION> --size Standard_N --all --output table
    
  4. 選取底部的 [ 檢閱 + 建立] 按鈕,然後選取 [ 建立] 按鈕。 部署最多可能需要一分鐘的時間才能完成。

安裝 NVIDIA 擴充功能

既然我們有 GPU 優化的 VM,讓我們使用 Azure 入口網站 在 VM 上安裝 NVIDIA 擴充功能

  1. 在 Azure 入口網站 中開啟您的 VM,然後從左側功能表中選取 [擴充功能 + 應用程式]。

  2. 選取 [新增 ],然後 從列表中選擇 NVIDIA GPU 驅動程式擴充功能 ,然後選取 [ 下一步]。

  3. 選擇 [ 檢閱 + 建立],然後選擇 [建立]。 部署最多可能需要 30 分鐘才能完成。

  4. 若要確認 Azure 入口網站 中的安裝,請返回 VM 中的 [擴充功能 + 應用程式] 選單。 名為 NvidiaGpuDriverLinux 的新延伸模組應位於您的延伸模組清單中,並在 [狀態] 底下顯示 [布建成功]。

  5. 若要使用 Azure Cloud Shell 確認安裝,請執行此命令來列出您的擴充功能。 以 <> 您的值取代佔位元:

    az vm extension list --resource-group <YOUR-RESOURCE-GROUP> --vm-name <YOUR-VM-NAME> -o table
    
  6. 透過 NVIDIA 模組,我們將使用 NVIDIA 系統管理介面程式,也稱為 nvidia-smi

    從您的裝置,根據您的Ubuntu版本安裝 nvidia-smi 套件。 在本教學課程中,我們將針對Ubuntu20.04安裝 nvidia-utils-515 。 在安裝中出現提示時選擇 Y

    sudo apt install nvidia-utils-515
    

    以下是所有 nvidia-smi 版本的清單。 如果您先執行 nvidia-smi 但未安裝,此列表將會在控制台中列印。

    所有 『nvidia-smi』 版本的螢幕快照。

  7. 安裝之後,請執行此命令以確認已安裝:

    nvidia-smi
    

    確認數據表隨即出現,類似於此數據表。

    NVIDIA 驅動程式數據表的螢幕快照。

注意

NVIDIA 擴充功能是安裝 NVIDIA 驅動程式的簡化方式,但您可能需要更多自定義。 如需 N 系列 VM 上自定義安裝的詳細資訊,請參閱 在執行 Linux 的 N 系列 VM 上安裝 NVIDIA GPU 驅動程式。

使用 GPU 加速啟用模組

有不同方式可以啟用IoT Edge模組,使其使用 GPU 進行處理。 其中一種方式是在裝置上設定現有的IoT Edge模組,以變成 GPU 加速。 另一種方式是使用預先建立的容器模組,例如 來自已優化 GPU 的 NVIDIA DIGITS 模組 。 讓我們看看這兩種方式的完成方式。

使用 DeviceRequests 在現有模組中啟用 GPU

如果您的 IoT Edge 裝置上有現有的模組,請在部署指令清單中使用 createOptions 新增組態DeviceRequests,讓模組 GPU 優化。 請遵循下列步驟來設定現有的模組。

  1. 移至 Azure 入口網站 中的 IoT 中樞,然後選擇 [裝置管理] 功能表下的 [裝置]。

  2. 選取您的IoT Edge裝置加以開啟。

  3. 選取頂端的 [ 設定模組 ] 索引標籤。

  4. 選取您想要在 [IoT Edge 模組] 清單中啟用 GPU 使用的 模組

  5. 側邊面板隨即開啟,選擇 [ 容器建立選項 ] 索引標籤。

  6. 複製此 HostConfig JSON 字串,並貼到 [ 建立選項 ] 方塊中。

     {
         "HostConfig": {
             "DeviceRequests": 
             [
                 {
                     "Count": -1,
                     "Capabilities": [
                         [
                             "gpu"
                         ]
                     ]
                 }
             ]
         }
     }
    
  7. 選取更新

  8. 選取 [檢閱 + 建立]。 新的 HostConfig 物件現在會顯示在模組的 中 settings

  9. 選取 建立

  10. 若要確認新的組態可運作,請在您的 VM 中執行此命令:

    sudo docker inspect <YOUR-MODULE-NAME>
    

    您應該會在主控台的 JSON 列印輸出中看到您指定的 DeviceRequests 參數。

注意

若要進一步了解 DeviceRequests 參數,請檢視原始程式碼: moby/host_config.go

在預先建立的 NVIDIA 模組中啟用 GPU

讓我們將 NVIDIA DIGITS 模組新增至 IoT Edge 裝置,然後藉由設定其環境變數,將 GPU 配置給模組。 此 NVIDIA 模組已在 Docker 容器中。

  1. 從 IoT 中樞 的 [裝置] 功能表,選取 Azure 入口網站 中的IoT Edge裝置

  2. 選取頂端的 [ 設定模組 ] 索引標籤。

  3. 選取 [IoT Edge 模組] 標題下的 [+ 新增 ],然後選擇 [ IoT Edge 模組]。

  4. 在 [IoT Edge 模組名稱] 欄位中提供名稱

  5. 在 [模組 設定] 索引標籤底下,新增nvidia/digits:6.0至 [影像 URI] 字段。

  6. 選取 [ 環境變數] 索引標籤。

  7. 使用值0新增環境變數名稱NVIDIA_VISIBLE_DEVICES。 此變數可控制在邊緣裝置上執行的容器化應用程式可以看到哪些 GPU。 NVIDIA_VISIBLE_DEVICES環境變數可以設定為以逗號分隔的裝置標識符清單,其對應至系統中的實體 GPU。 例如,如果系統中有兩個具有裝置標識碼 0 和 1 的 GPU,變數可以設定為 “NVIDIA_VISIBLE_DEVICES=0,1”,讓兩個 GPU 都可見到容器。 在本文中,由於 VM 只有一個 GPU,因此我們將使用第一個 GPU(且只有) 一個。

    名稱 類型
    NVIDIA_VISIBLE_DEVICES Text 0
  8. 選取 [新增]。

  9. 選取 [檢閱 + 建立]。 您的部署指令清單屬性隨即出現。

  10. 選取 [建立] 以建立模組。

  11. 選取 [ 重新整理 ] 以更新模組清單。 模組需要幾分鐘的時間才能在運行時間狀態顯示執行,因此請繼續重新整理裝置。

  12. 從您的裝置執行此命令,以確認新的 NVIDIA 模組存在且正在執行中。

    iotedge list
    

    您應該會在 IoT Edge 裝置上具有 狀態 running的模組清單中看到 NVIDIA 模組。

    'iotedge list' 命令結果的螢幕快照。

注意

如需 NVIDIA DIGITS 容器模組的詳細資訊,請參閱深度學習數字檔

清除資源

如果您想要繼續進行其他 IoT Edge 教學課程,您可以使用您為此教學課程建立的裝置。 否則,您可以刪除您所建立的 Azure 資源,以避免產生費用。

如果您在新的資源群組中建立虛擬機和 IoT 中樞,您可以刪除該群組,這會刪除所有相關聯的資源。 請仔細檢查資源群組的內容,以確定沒有任何您想要保留的內容。 如果您不想刪除整個群組,您可以改為刪除個別資源(虛擬機、裝置或 GPU 模組)。

重要

刪除資源群組是無法回復的動作。

使用下列命令來移除您的 Azure 資源群組。 刪除資源群組可能需要幾分鐘的時間。

az group delete --name <YOUR-RESOURCE-GROUP> --yes

您可以藉由檢視資源群組清單來確認資源群組已移除。

az group list

下一步

本文協助您將虛擬機和IoT Edge裝置設定為 GPU 加速。 若要執行具有類似設定的應用程式,請嘗試使用 Microsoft Azure 進行 NVIDIA DeepStream 開發的學習路徑。 Learn 教學課程示範如何開發優化的智慧型手機視訊應用程式,以取用多個視訊、影像和音訊來源。