자습서: GPU에서 IoT Edge 모듈 구성, 연결 및 확인

적용 대상:IoT Edge 1.5 확인 표시 IoT Edge 1.5 IoT Edge 1.4 확인 표시 IoT Edge 1.4

Important

IoT Edge 1.5 LTS 및 IoT Edge 1.4 LTS는 지원되는 릴리스입니다. IoT Edge 1.4 LTS는 2024년 11월 12일에 수명이 종료됩니다. 이전 릴리스에 있는 경우 IoT Edge 업데이트를 참조하세요.

이 자습서에서는 GPU 지원 VM(가상 머신)을 빌드하는 방법을 보여 줍니다. VM에서 모듈 중 하나의 작업을 GPU에 할당하는 IoT Edge 디바이스를 실행하는 방법을 확인할 수 있습니다.

Azure Portal, Azure Cloud Shell 및 VM의 명령줄을 사용하여 다음을 수행합니다.

  • GPU 지원 VM 빌드
  • VM에 NVIDIA 드라이버 확장 설치
  • GPU에 작업을 할당하도록 IoT Edge 디바이스의 모듈 구성

필수 조건

  • Azure 계정 - 무료 계정 만들기

  • Azure IoT Hub - IoT Hub 만들기

  • Azure IoT Edge 디바이스

    아직 IoT Edge 디바이스가 없고 신속하게 만들어야 하는 경우 다음 명령을 실행합니다. Azure Portal에 있는 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 디바이스를 만드는 방법에 대한 자세한 내용은 빠른 시작: 가상 Linux 디바이스에 첫 번째 IoT Edge 모듈 배포를 참조하세요. 이 자습서의 뒷부분에서는 IoT Edge 디바이스에 NVIDIA 모듈을 추가합니다.

GPU 최적화 가상 머신 만들기

GPU 최적화 VM(가상 머신)을 만들려면 적절한 크기를 선택하는 것이 중요합니다. 모든 VM 크기가 GPU 처리를 수용하지는 않습니다. 또한 워크로드마다 VM 크기가 서로 다릅니다. 자세한 내용을 보려면 GPU 최적화 가상 머신 크기를 참조하거나 가상 머신 선택기를 사용해 보세요.

GitHub에서 ARM(Azure Resource Manager) 템플릿을 사용하여 IoT Edge VM을 만든 다음, GPU 최적화로 구성해 보겠습니다.

  1. GitHub의 IoT Edge VM 배포 템플릿(Azure/iotedge-vm-deploy)으로 이동합니다.

  2. Azure에 배포 단추를 선택하면 Azure Portal에서 사용자 지정 VM 만들기가 자동으로 시작됩니다.

  3. Azure 자격 증명 및 리소스로 사용자 지정 배포 필드를 채웁니다.

    속성 설명 또는 샘플 값
    구독 Azure 계정 구독을 선택합니다.
    Resource group Azure 리소스 그룹을 추가합니다.
    지역 East US
    일부에서는 GPU VM을 사용할 수 없습니다.
    DNS 레이블 접두사 VM의 이름을 만듭니다.
    관리자 사용자 이름 adminUser
    또는 고유한 사용자 이름을 만듭니다.
    디바이스 연결 문자열 IoT Edge 디바이스에서 연결 문자열을 복사한 다음, 여기에 붙여넣습니다.
    VM 크기 Standard_NV6
    Authentication type 암호 또는 SSH 공개 키를 선택한 다음, 필요한 경우 암호 또는 키 쌍 이름을 만듭니다.

    각 지역에서 지원되는 GPU VM(지역별로 사용 가능한 제품)을 확인합니다.

    Azure 구독에 허용되는 지역을 확인하려면 Azure Portal에서 이 Azure 명령을 사용해 보세요. Standard_NN은 GPU 지원 VM을 의미합니다.

    az vm list-skus --location <YOUR-REGION> --size Standard_N --all --output table
    
  4. 아래쪽에서 검토 + 만들기 단추를 선택한 다음, 만들기 단추를 선택합니다. 배포를 완료하는 데 최대 1분이 소요될 수 있습니다.

NVIDIA 확장 설치

이제 GPU 최적화 VM이 있으므로 Azure Portal을 사용하여 VM에 NVIDIA 확장을 설치해 보겠습니다.

  1. Azure Portal에서 VM을 열고 왼쪽 메뉴에서 확장 + 애플리케이션을 선택합니다.

  2. 추가를 선택하고 목록에서 NVIDIA GPU 드라이버 확장을 선택한 후 다음을 선택합니다.

  3. 검토 + 만들기를 선택한 후 만들기를 선택합니다. 배포를 완료하는데 최대 30분이 소요될 수 있습니다.

  4. Azure Portal에서 설치를 확인하려면 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 패키지를 설치합니다. 이 자습서에서는 Ubuntu 20.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 가속을 지원하는 모듈 사용

GPU를 사용하여 처리하도록 IoT Edge 모듈을 사용하도록 설정하는 방법에는 여러 가지가 있습니다. 한 가지 방법은 GPU 가속이 지원되도록 디바이스에서 기존 IoT Edge 모듈을 구성하는 것입니다. 또 다른 방법은 사전 조립식 컨테이너 모듈(예: 이미 GPU 최적화된 NVIDIA DIGITS의 모듈)을 사용하는 것입니다. 두 가지 방법을 모두 살펴보겠습니다.

DeviceRequests를 사용하여 기존 모듈에서 GPU 사용

IoT Edge 디바이스에 기존 모듈이 있는 경우 배포 매니페스트의 createOptionsDeviceRequests를 사용하여 구성을 추가하면 모듈이 GPU에 최적화됩니다. 다음 단계에 따라 기존 모듈을 구성합니다.

  1. Azure Portal에서 IoT Hub로 이동하고 장치 관리 메뉴에서 디바이스를 선택합니다.

  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>
    

    DeviceRequests에 지정한 매개 변수가 콘솔의 JSON 인쇄물에 표시됩니다.

참고 항목

DeviceRequests 매개 변수를 더 잘 이해하려면 소스 코드 moby/host_config.go를 확인합니다.

조립식 NVIDIA 모듈에서 GPU 사용

IoT Edge 디바이스에 NVIDIA DIGITS 모듈을 추가한 다음, 환경 변수를 설정하여 모듈에 GPU를 할당해 보겠습니다. 이 NVIDIA 모듈은 이미 Docker 컨테이너에 있습니다.

  1. IoT Hub의 디바이스 메뉴에서 Azure Portal의 IoT Edge 디바이스를 선택합니다.

  2. 맨 위에 있는 모듈 설정 탭을 선택합니다.

  3. IoT Edge 모듈 제목 아래에서 + 추가를 선택하고 IoT Edge 모듈을 선택합니다.

  4. IoT Edge 모듈 이름 필드에 이름을 지정합니다.

  5. 모듈 설정 탭에서 이미지 URI 필드에 nvidia/digits:6.0을 추가합니다.

  6. 환경 변수 탭을 선택합니다.

  7. 값이 0인 환경 변수 이름 NVIDIA_VISIBLE_DEVICES를 추가합니다. 이 변수는 에지 디바이스에서 실행되는 컨테이너화된 애플리케이션에 표시되는 GPU를 제어합니다. NVIDIA_VISIBLE_DEVICES 환경 변수는 시스템의 물리적 GPU에 해당하는 디바이스 ID의 쉼표로 구분된 목록으로 설정할 수 있습니다. 예를 들어 디바이스 ID가 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 컨테이너 모듈에 대한 자세한 내용은 Deep Learning Digits 설명서를 참조하세요.

리소스 정리

다른 IoT Edge 자습서를 계속 진행하려는 경우 이 자습서에서 만든 디바이스를 사용할 수 있습니다. 그렇지 않으면 요금이 발생하지 않도록 Azure 리소스를 삭제할 수 있습니다.

새 리소스 그룹에서 가상 머신 및 IoT 허브를 만든 경우 해당 그룹을 삭제할 수 있습니다. 그러면 모든 관련 리소스가 삭제됩니다. 리소스 그룹의 콘텐츠를 한 번 더 확인하여 유지할 내용이 없는지 검토합니다. 전체 그룹을 삭제하지는 않으려는 경우 개별 리소스(가상 머신, 디바이스 또는 GPU 모듈)를 대신 삭제할 수 있습니다.

Important

리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다.

다음 명령을 사용하여 Azure 리소스 그룹을 제거합니다. 리소스 그룹을 삭제하는 데 몇 분 정도 소요될 수 있습니다.

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

리소스 그룹 목록을 확인하여 리소스 그룹이 제거되었는지 확인할 수 있습니다.

az group list

다음 단계

이 문서는 가상 머신을 설정하고 IoT Edge 디바이스가 GPU 가속을 지원하도록 하는 데 도움이 됩니다. 비슷한 설정으로 애플리케이션을 실행하려면 Microsoft Azure를 사용한 NVIDIA DeepStream 개발의 학습 경로를 시도하세요. Learn 자습서에서는 여러 비디오, 이미지 및 오디오 원본을 사용할 수 있는 최적화된 지능형 비디오 애플리케이션을 개발하는 방법을 보여 줍니다.