Поделиться через


Развертывание рабочей нагрузки IoT Edge с помощью совместного использования GPU на Azure Stack Edge Pro

В этой статье описывается, как контейнерные рабочие нагрузки могут совместно использовать GPU на устройстве Azure Stack Edge Pro GPU. Этот подход включает в себя включение многопроцессной службы (MPS) и указание рабочих нагрузок GPU с помощью развертывания IoT Edge.

Необходимые компоненты

Перед тем как начать, убедитесь в следующем.

  1. У вас есть доступ к подключенному устройству Azure Stack Edge Pro GPU, которое было активировано и настроено для вычислений. У вас есть Конечная точка API Kubernetes, и вы добавили эту конечную точку в файл hosts на клиенте, который будет получать доступ к устройству.

  2. У вас есть доступ к клиентской системе с поддерживаемой операционной системой. При использовании клиента Windows система должна запустить PowerShell 5.0 или более поздней версии для доступа к устройству.

  3. Сохраните следующее развертывание json в локальной системе. Вы будете использовать сведения из этого файла для запуска развертывания IoT Edge. Это развертывание основано на простых контейнерах CUDA, общедоступных из NVIDIA.

    {
        "modulesContent": {
            "$edgeAgent": {
                "properties.desired": {
                    "modules": {
                        "cuda-sample1": {
                            "settings": {
                                "image": "nvidia/samples:nbody",
                                "createOptions": "{\"Entrypoint\":[\"/bin/sh\"],\"Cmd\":[\"-c\",\"/tmp/nbody -benchmark -i=1000; while true; do echo no-op; sleep 10000;done\"],\"HostConfig\":{\"IpcMode\":\"host\",\"PidMode\":\"host\"}}"
                            },
                            "type": "docker",
                            "version": "1.0",
                            "env": {
                                "NVIDIA_VISIBLE_DEVICES": {
                                    "value": "0"
                                }
                            },
                            "status": "running",
                            "restartPolicy": "never"
                        },
                        "cuda-sample2": {
                            "settings": {
                                "image": "nvidia/samples:nbody",
                                "createOptions": "{\"Entrypoint\":[\"/bin/sh\"],\"Cmd\":[\"-c\",\"/tmp/nbody -benchmark -i=1000; while true; do echo no-op; sleep 10000;done\"],\"HostConfig\":{\"IpcMode\":\"host\",\"PidMode\":\"host\"}}"
                            },
                            "type": "docker",
                            "version": "1.0",
                            "env": {
                                "NVIDIA_VISIBLE_DEVICES": {
                                    "value": "0"
                                }
                            },
                            "status": "running",
                            "restartPolicy": "never"
                        }
                    },
                    "runtime": {
                        "settings": {
                            "minDockerVersion": "v1.25"
                        },
                        "type": "docker"
                    },
                    "schemaVersion": "1.1",
                    "systemModules": {
                        "edgeAgent": {
                            "settings": {
                                "image": "mcr.microsoft.com/azureiotedge-agent:1.0",
                                "createOptions": ""
                            },
                            "type": "docker"
                        },
                        "edgeHub": {
                            "settings": {
                                "image": "mcr.microsoft.com/azureiotedge-hub:1.0",
                                "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
                            },
                            "type": "docker",
                            "status": "running",
                            "restartPolicy": "always"
                        }
                    }
                }
            },
            "$edgeHub": {
                "properties.desired": {
                    "routes": {
                        "route": "FROM /messages/* INTO $upstream"
                    },
                    "schemaVersion": "1.1",
                    "storeAndForwardConfiguration": {
                        "timeToLiveSecs": 7200
                    }
                }
            },
            "cuda-sample1": {
                "properties.desired": {}
            },
            "cuda-sample2": {
                "properties.desired": {}
            }
        }
    }
    

Проверка драйвера GPU, версия CUDA

Первым делом необходимо убедиться, что на устройстве выполняются требуемые версии драйвера GPU и CUDA.

  1. Подключитесь к интерфейсу PowerShell на вашем устройстве.

  2. Выполните следующую команду:

    Get-HcsGpuNvidiaSmi

  3. В выходных данных устройства NVIDIA SMI запишите версию GPU и версию CUDA, установленные на вашем устройстве. Если вы используете программное обеспечение Azure Stack Edge 2102, эта версия будет соответствовать следующим версиям драйвера:

    • Версия драйвера GPU: 460.32.03
    • Версия CUDA: 11.2

    Пример выходных данных:

    [10.100.10.10]: PS>Get-HcsGpuNvidiaSmi
    K8S-1HXQG13CL-1HXQG13:
    
    Tue Feb 23 10:34:01 2021
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  Tesla T4            On   | 0000041F:00:00.0 Off |                    0 |
    | N/A   40C    P8    15W /  70W |      0MiB / 15109MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |  No running processes found                                                 |
    +-----------------------------------------------------------------------------+
    [10.100.10.10]: PS>  
    
  4. Не закрывайте эту сессию, так как она будет использоваться для просмотра выходных данных SMI для NVIDIA в этой статье.

Развертывание без общего доступа к контексту

Теперь вы можете развернуть приложение на устройстве, если служба многопроцессной обработки не запущена и нет общего доступа к контексту. Развертывание осуществляется через портал Azure в пространстве имен iotedge, которое существует на вашем устройстве.

Создание пользователя в пространстве имен IoT Edge

Сначала вы создадите пользователя, который будет подключаться к пространству имен iotedge. Модули IoT Edge развертываются в пространстве имен iotedge. Дополнительные сведения см. в разделе пространства имен Kubernetes на устройстве.

Выполните следующие действия, чтобы создать пользователя и предоставить ему доступ к пространству имен iotedge.

  1. Подключитесь к интерфейсу PowerShell на вашем устройстве.

  2. Создайте нового пользователя в пространстве имен iotedge. Выполните следующую команду:

    New-HcsKubernetesUser -UserName <user name>

    Пример выходных данных:

    [10.100.10.10]: PS>New-HcsKubernetesUser -UserName iotedgeuser
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: 
    ===========================//snipped //======================// snipped //=============================
        server: https://compute.myasegpudev.wdshcsso.com:6443
      name: kubernetes
    contexts:
    - context:
        cluster: kubernetes
        user: iotedgeuser
      name: iotedgeuser@kubernetes
    current-context: iotedgeuser@kubernetes
    kind: Config
    preferences: {}
    users:
    - name: iotedgeuser
      user:
        client-certificate-data: 
    ===========================//snipped //======================// snipped //=============================
        client-key-data: 
    ===========================//snipped //======================// snipped ============================
    PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
    
  3. Скопируйте выходные данные в виде обычного текста. Сохраните выходные данные в виде файла конфигурации (без расширения) в папке.kube вашего профиля пользователя на локальном компьютере, например C:\Users\<username>\.kube.

  4. Предоставьте созданному вами пользователю доступ к пространству имен iotedge. Выполните следующую команду:

    Grant-HcsKubernetesNamespaceAccess -Namespace iotedge -UserName <user name>

    Пример выходных данных:

    [10.100.10.10]: PS>Grant-HcsKubernetesNamespaceAccess -Namespace iotedge -UserName iotedgeuser
    [10.100.10.10]: PS>    
    

Подробные инструкции см. в статье Подключение к кластеру Kubernetes и управление им с помощью kubectl на устройстве Azure Stack Edge Pro GPU.

Развертывание модулей с помощью портала

Развертывание и мониторинг модулей IoT Edge с помощью портала Azure. Вы развернете общедоступные образцы модулей NVIDIA CUDA, которые выполняют имитацию n-Body.

  1. Убедитесь, что на вашем устройстве запущена служба IoT Edge.

    IoT Edge service running.

  2. Щелкните плитку IoT Edge на правой панели. Перейдите к свойствам IoT Edge>. На правой панели выберите ресурс центра Интернета вещей, связанный с устройством.

    View properties.

  3. В ресурсе Центр Интернета вещей перейдите в раздел "Автоматический Управление устройствами > IoT Edge". На правой панели выберите устройство IoT Edge, связанное с устройством.

    Go to IoT Edge.

  4. Щелкните Set modules (Настроить модули).

    Go to Set Modules.

  5. Выберите и добавьте и модуль > IoT Edge.

    Add IoT Edge module.

  6. На вкладке Параметры модуля укажите имя модуля IOT Edge и URI образа. Задайте для параметра опрашивающей политики образа значение При создании.

    Module settings.

  7. На вкладке переменные среды укажите NVIDIA_VISIBLE_DEVICES как 0.

    Environment variables.

  8. На вкладке Параметры создания контейнера укажите следующие параметры:

    {
        "Entrypoint": [
            "/bin/sh"
        ],
        "Cmd": [
            "-c",
            "/tmp/nbody -benchmark -i=1000; while true; do echo no-op; sleep 10000;done"
        ],
        "HostConfig": {
            "IpcMode": "host",
            "PidMode": "host"
        }
    }    
    

    Параметры определяются следующим образом:

    Container create options.

    Выберите Добавить.

  9. Добавленный модуль должен отображаться как выполняемый.

    Review and create deployment.

  10. Повторите все шаги, чтобы добавить модуль, который вы составите при добавлении первого модуля. В этом примере укажите имя модуля в виде cuda-sample2.

    Module settings for 2nd module.

    Используйте ту же переменную среды, в которой оба модуля будут совместно использовать один GPU.

    Environment variable for 2nd module.

    Используйте те же параметры создания контейнера, которые вы указали для первого модуля, и нажмите кнопку Добавить.

    Container create options for 2nd modules.

  11. На странице Установка модулей выберите Проверить и создать, а затем щелкните Создать.

    Review and create 2nd deployment.

  12. Состояние среды выполнения обоих модулей должно отобразиться как выполняемое.

    2nd deployment status.

Мониторинг развертывания рабочей нагрузки

  1. Запустите новый сеанс PowerShell.

  2. Выведите список модулей Pod, выполняющихся в пространстве имен iotedge. Выполните следующую команду:

    kubectl get pods -n iotedge

    Пример выходных данных:

    PS C:\WINDOWS\system32> kubectl get pods -n iotedge --kubeconfig C:\GPU-sharing\kubeconfigs\configiotuser1
    NAME                            READY   STATUS    RESTARTS   AGE
    cuda-sample1-869989578c-ssng8   2/2     Running   0          5s
    cuda-sample2-6db6d98689-d74kb   2/2     Running   0          4s
    edgeagent-79f988968b-7p2tv      2/2     Running   0          6d21h
    edgehub-d6c764847-l8v4m         2/2     Running   0          24h
    iotedged-55fdb7b5c6-l9zn8       1/1     Running   1          6d21h
    PS C:\WINDOWS\system32>   
    

    На вашем устройстве работают два модуля (Pod): cuda-sample1-97c494d7f-lnmns и cuda-sample2-d9f6c4688-2rld9.

  3. Пока оба контейнера работают с имитацией n-Body, просмотрите использование GPU из выходных данных NVIDIA SMI. Перейдите к интерфейсу PowerShell устройства и выполните команду Get-HcsGpuNvidiaSmi.

    Ниже приведен пример выходных данных, когда оба контейнера работают с имитацией n-Body:

    [10.100.10.10]: PS>Get-HcsGpuNvidiaSmi
    K8S-1HXQG13CL-1HXQG13:
    
    Fri Mar  5 13:31:16 2021
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  Tesla T4            On   | 00002C74:00:00.0 Off |                    0 |
    | N/A   52C    P0    69W /  70W |    221MiB / 15109MiB |    100%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |    0   N/A  N/A    188342      C   /tmp/nbody                        109MiB |
    |    0   N/A  N/A    188413      C   /tmp/nbody                        109MiB |
    +-----------------------------------------------------------------------------+
    [10.100.10.10]: PS>
    

    Как видите, существует два контейнера, работающих с имитацией n-Body в GPU 0. Можно также просмотреть соответствующее использование памяти.

  4. После завершения моделирования выходные данные NVIDIA SMI будут показывать, что на устройстве не запущено ни одного процесса.

    [10.100.10.10]: PS>Get-HcsGpuNvidiaSmi
    K8S-1HXQG13CL-1HXQG13:
    
    Fri Mar  5 13:54:48 2021
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  Tesla T4            On   | 00002C74:00:00.0 Off |                    0 |
    | N/A   34C    P8     9W /  70W |      0MiB / 15109MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |  No running processes found                                                 |
    +-----------------------------------------------------------------------------+
    [10.100.10.10]: PS>
    
  5. После завершения имитации n-Body просмотрите журналы, чтобы понять сведения о развертывании и время, необходимое для завершения моделирования.

    Ниже приведен пример вывода в первом контейнере:

    PS C:\WINDOWS\system32> kubectl -n iotedge  --kubeconfig C:\GPU-sharing\kubeconfigs\configiotuser1 logs cuda-sample1-869989578c-ssng8 cuda-sample1
    Run "nbody -benchmark [-numbodies=<numBodies>]" to measure performance.
    ==============// snipped //===================//  snipped  //=============
    > Windowed mode
    > Simulation data stored in video memory
    > Single precision floating point simulation
    > 1 Devices used for simulation
    GPU Device 0: "Turing" with compute capability 7.5
    
    > Compute 7.5 CUDA device: [Tesla T4]
    40960 bodies, total time for 10000 iterations: 170171.531 ms
    = 98.590 billion interactions per second
    = 1971.801 single-precision GFLOP/s at 20 flops per interaction
    no-op
    PS C:\WINDOWS\system32>
    

    Ниже приведен пример вывода во втором контейнере:

    PS C:\WINDOWS\system32> kubectl -n iotedge  --kubeconfig C:\GPU-sharing\kubeconfigs\configiotuser1 logs cuda-sample2-6db6d98689-d74kb cuda-sample2
    Run "nbody -benchmark [-numbodies=<numBodies>]" to measure performance.
    ==============// snipped //===================//  snipped  //=============
    > Windowed mode
    > Simulation data stored in video memory
    > Single precision floating point simulation
    > 1 Devices used for simulation
    GPU Device 0: "Turing" with compute capability 7.5
    
    > Compute 7.5 CUDA device: [Tesla T4]
    40960 bodies, total time for 10000 iterations: 170054.969 ms
    = 98.658 billion interactions per second
    = 1973.152 single-precision GFLOP/s at 20 flops per interaction
    no-op
    PS C:\WINDOWS\system32>
    
  6. Останавливает развертывание модуля. В ресурсе центра Интернета вещей для вашего устройства:

    1. Перейдите в раздел " Автоматическое развертывание > устройств IoT Edge". Выберите устройство IoT Edge, соответствующее устройству.

    2. Перейдите к разделу Настройка модулей и выберите модуль.

      Select Set module.

    3. На вкладке Модули выберите модуль.

      Select a module.

    4. На вкладке Параметры модуля задайте для параметра Желательное состояние значение остановлено. Выберите Обновить.

      Modify module settings.

    5. Повторите шаги, чтобы закрыть второй модуль, развернутый на устройстве. Выберите Просмотр и создание, а затем нажмите кнопку Создать. Это должно обновить развертывание.

      Review and create updated deployment.

    6. Перезагрузите страницу Установка модулей несколько раз, пока состояние выполнения модуля не будет отображаться как остановленное.

      Verify deployment status.

Развертывание с совместно используемым контекстом

Теперь можно развернуть модель n-Body в двух контейнерах CUDA при выполнении MPS на устройстве. Во-первых, вы включите MPS на устройстве.

  1. Подключитесь к интерфейсу PowerShell на вашем устройстве.

  2. Чтобы включить MPS на устройстве, выполните команду Start-HcsGpuMPS.

    [10.100.10.10]: PS>Start-HcsGpuMPS
    K8S-1HXQG13CL-1HXQG13:
    Set compute mode to EXCLUSIVE_PROCESS for GPU 0000191E:00:00.0.
    All done.
    Created nvidia-mps.service
    [10.100.10.10]: PS>    
    
  3. Получение выходных данных NVIDIA SMI из интерфейса PowerShell устройства. На устройстве можно увидеть, что процесс nvidia-cuda-mps-server или служба MPS запущена.

    Пример выходных данных:

    [10.100.10.10]: PS>Get-HcsGpuNvidiaSmi
    K8S-1HXQG13CL-1HXQG13:
    
    Thu Mar  4 12:37:39 2021
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  Tesla T4            On   | 00002C74:00:00.0 Off |                    0 |
    | N/A   36C    P8     9W /  70W |     28MiB / 15109MiB |      0%   E. Process |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |    0   N/A  N/A    122792      C   nvidia-cuda-mps-server             25MiB |
    +-----------------------------------------------------------------------------+
    [10.100.10.10]: PS>Get-HcsGpuNvidiaSmi
    
  4. Разверните модули, которые были остановлены ранее. Задайте требуемое состояние для выполнения через Настройку модулей.

    Ниже приведен пример выходных данных.

    PS C:\WINDOWS\system32> kubectl get pods -n iotedge --kubeconfig C:\GPU-sharing\kubeconfigs\configiotuser1
    NAME                            READY   STATUS    RESTARTS   AGE
    cuda-sample1-869989578c-2zxh6   2/2     Running   0          44s
    cuda-sample2-6db6d98689-fn7mx   2/2     Running   0          44s
    edgeagent-79f988968b-7p2tv      2/2     Running   0          5d20h
    edgehub-d6c764847-l8v4m         2/2     Running   0          27m
    iotedged-55fdb7b5c6-l9zn8       1/1     Running   1          5d20h
    PS C:\WINDOWS\system32>
    

    Вы увидите, что модули развернуты и запущены на вашем устройстве.

  5. При развертывании модулей эмуляция n-Body также начинает работать в обоих контейнерах. Ниже приведен пример выходных данных при завершении имитации в первом контейнере:

    PS C:\WINDOWS\system32> kubectl -n iotedge logs cuda-sample1-869989578c-2zxh6 cuda-sample1
    Run "nbody -benchmark [-numbodies=<numBodies>]" to measure performance.
    ==============// snipped //===================//  snipped  //=============
    
    > Windowed mode
    > Simulation data stored in video memory
    > Single precision floating point simulation
    > 1 Devices used for simulation
    GPU Device 0: "Turing" with compute capability 7.5
    
    > Compute 7.5 CUDA device: [Tesla T4]
    40960 bodies, total time for 10000 iterations: 155256.062 ms
    = 108.062 billion interactions per second
    = 2161.232 single-precision GFLOP/s at 20 flops per interaction
    no-op
    PS C:\WINDOWS\system32> 
    

    Ниже приведен пример выходных данных по завершении имитации во втором контейнере:

    PS C:\WINDOWS\system32> kubectl -n iotedge  --kubeconfig C:\GPU-sharing\kubeconfigs\configiotuser1 logs cuda-sample2-6db6d98689-fn7mx cuda-sample2
    Run "nbody -benchmark [-numbodies=<numBodies>]" to measure performance.
    ==============// snipped //===================//  snipped  //=============
    
    > Windowed mode
    > Simulation data stored in video memory
    > Single precision floating point simulation
    > 1 Devices used for simulation
    GPU Device 0: "Turing" with compute capability 7.5
    
    > Compute 7.5 CUDA device: [Tesla T4]
    40960 bodies, total time for 10000 iterations: 155366.359 ms
    = 107.985 billion interactions per second
    = 2159.697 single-precision GFLOP/s at 20 flops per interaction
    no-op
    PS C:\WINDOWS\system32>    
    
  6. Получите выходные данные NVIDIA SMI из интерфейса PowerShell устройства, когда оба контейнера работают с имитацией n-Body. Ниже приведен пример выходных данных. Существует три процесса: процесс nvidia-cuda-mps-server (тип C) соответствует службе MPS, а процессы /tmp/nbody (тип M + C) соответствуют рабочим нагрузкам n-Body, развернутым модулями.

    [10.100.10.10]: PS>Get-HcsGpuNvidiaSmi
    K8S-1HXQG13CL-1HXQG13:
    
    Thu Mar  4 12:59:44 2021
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  Tesla T4            On   | 00002C74:00:00.0 Off |                    0 |
    | N/A   54C    P0    69W /  70W |    242MiB / 15109MiB |    100%   E. Process |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |    0   N/A  N/A     56832    M+C   /tmp/nbody                        107MiB |
    |    0   N/A  N/A     56900    M+C   /tmp/nbody                        107MiB |
    |    0   N/A  N/A    122792      C   nvidia-cuda-mps-server             25MiB |
    +-----------------------------------------------------------------------------+
    [10.100.10.10]: PS>Get-HcsGpuNvidiaSmi
    

Следующие шаги