分享方式:


教學課程:設定、連線及驗證 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 的命令行來:

必要條件

  • Azure 帳戶 - 建立免費帳戶

  • Azure IoT 中樞 - 建立 IoT 中樞

  • Azure IoT Edge 裝置

    如果您還沒有 IoT Edge 裝置,但必須快速建立裝置,請執行下列命令。 使用位於 Azure 入口網站的 Azure Cloud Shell。 為 <DEVICE-NAME> 建立新的裝置名稱,並將 IoT <IOT-HUB-NAME> 換成您自己的裝置名稱。

    az iot hub device-identity create --device-id <YOUR-DEVICE-NAME> --edge-enabled --hub-name <YOUR-IOT-HUB-NAME>
    

    如需建立 IoT Edge 裝置的詳細資訊,請參閱快速入門:將第一個 IoT Edge 模組部署至虛擬 Linux 裝置。 在本教學課程後半,我們會將 NVIDIA 模組新增至 IoT Edge 裝置。

建立 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 命令。 Standard_N 中的 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 套件。 在本教學課程,我們將安裝 nvidia-utils-515 for Ubuntu 20.04。 安裝過程出現提示時,請選取 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 加速。 另一種方式是使用預先建立的容器模組,例如,NVIDIA DIGITS 已最佳化 GPU 的模組。 我們來了解一下如何完成這兩種方式。

使用 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. 從 Azure 入口網站 IoT 中樞的[裝置] 功能表選取 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,因此我們會使用第一個 (唯一一個)。

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

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

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

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

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

    iotedge list
    

    您應該會在 IoT Edge 裝置模組清單中看到 NVIDIA 模組,狀態為 running

    '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 教學課程示範如何開發最佳化的智慧視訊應用程式,該應用程式可取用多個視訊、影像和音訊來源。