Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Этот продукт выходит на пенсию с 14 июля 2025 года.
Чтобы выполнить определенные вычислительные рабочие нагрузки в экземплярах контейнеров Azure, разверните группы контейнеров с ресурсами графической обработки (GPU). Экземпляры контейнеров в группе могут получить доступ к одному или нескольким GPU NVIDIA Tesla при выполнении рабочих нагрузок контейнеров, таких как вычисление унифицированной архитектуры устройств (CUDA) и приложений глубокого обучения.
В этой статье показано, как добавить ресурсы GPU при развертывании группы контейнеров с помощью YAML-файла или шаблона Azure Resource Manager (шаблон ARM). Вы также можете указать ресурсы GPU при развертывании экземпляра контейнера с помощью портала Azure.
Предпосылки
Из-за некоторых текущих ограничений все запросы на увеличение предела могут не быть утверждены.
Если вы хотите использовать эту версию для развертываний рабочих контейнеров, создайте запрос в службу поддержки Azure , чтобы увеличить ограничение.
Ограничения предварительной версии
В предварительной версии при использовании ресурсов GPU в группах контейнеров применяются следующие ограничения.
Доступность по регионам
| Регионы | ОС | Доступные номера SKU для GPU |
|---|---|---|
| Восточная часть США, Западная Европа, Западная часть США 2, Юго-Восточная Азия, Центральная Индия | Линукс | V100 |
Поддержка будет добавлена для дополнительных регионов с течением времени.
Поддерживаемые типы ОС: только Linux.
Другие ограничения. При развертывании группы контейнеров в виртуальной сети нельзя использовать ресурсы GPU.
Сведения о ресурсах GPU
Количество и версия
Чтобы использовать GPU в экземпляре контейнера, укажите ресурс GPU со следующими сведениями:
Число: количество GPU составляет один, два или четыре.
Версия: ВЕРСИЯ GPU — V100. Каждая версия сопоставляется с GPU NVIDIA Tesla в одном из следующих семейств виртуальных машин с поддержкой GPU Azure:
Версия Семейство виртуальных машин V100 NCv3
Максимальное количество ресурсов на номер SKU
| ОС | Номер SKU GPU | Количество ЦП | макс. ЦП | Максимальная память (ГБ) | Хранилище (ГБ) |
|---|---|---|---|---|---|
| Линукс | V100 | 1 | 6 | 112 | 50 |
| Линукс | V100 | 2 | 12 | 224 | 50 |
| Линукс | V100 | 4 | двадцать четыре | 448 | 50 |
При развертывании ресурсов GPU задайте ресурсы ЦП и памяти, соответствующие рабочей нагрузке, до максимальных значений, отображаемых в предыдущей таблице. В настоящее время эти значения превышают ресурсы ЦП и памяти, доступные в группах контейнеров без ресурсов GPU.
Это важно
Ограничения подписки по умолчанию (квоты) для ресурсов GPU отличаются по версии. Ограничения ЦП по умолчанию для версий V100 изначально имеют значение 0. Чтобы запросить увеличение доступного региона, отправьте запрос в службу поддержки Azure.
Вещи, которые нужно знать
Время развертывания: создание группы контейнеров, содержащей ресурсы GPU, занимает до 8–10 минут. Для подготовки и настройки виртуальной машины GPU в Azure требуется дополнительное время.
Цены: Так же, как и в случае с группами контейнеров без ресурсов GPU, Azure выставляет счета за ресурсы, потребляемые на протяжении времени существования группы контейнеров с ресурсами GPU. Длительность использования рассчитывается с момента извлечения первого образа контейнера до момента завершения работы группы контейнеров. Он не включает время развертывания группы контейнеров.
Дополнительные сведения см. на странице с ценами.
Драйверы CUDA. Экземпляры контейнеров с ресурсами GPU предварительно подготовлены с драйверами NVIDIA CUDA и средствами выполнения контейнеров, чтобы можно было использовать образы контейнеров, разработанные для рабочих нагрузок CUDA.
На этом этапе поддерживается CUDA 11. Например, для файла Docker можно использовать следующие базовые образы:
Чтобы повысить надежность при использовании общедоступного образа контейнера из Docker Hub, импортируйте образ и управляйте им в частном реестре контейнеров Azure. Затем обновите файл Docker, чтобы использовать частный базовый образ. Узнайте больше о работе с общедоступными образами.
Пример YAML
Чтобы добавить группы GPU, можно развернуть группу контейнеров с помощью YAML-файла. Скопируйте следующий YAML в новый файл с именем gpu-deploy-aci.yaml, а затем сохраните файл. Этот YAML создает группу контейнеров с именем gpucontainergroup , которая указывает экземпляр контейнера с GPU версии 100. Экземпляр запускает пример приложения сложения векторов CUDA. Запросов ресурсов достаточно для запуска рабочей нагрузки.
Замечание
В следующем примере используется общедоступный образ контейнера. Чтобы повысить надежность, импортируйте образ и управляйте им в частном реестре контейнеров Azure. Затем обновите YAML, чтобы использовать управляемый вами личный базовый образ. Узнайте больше о работе с общедоступными образами.
additional_properties: {}
apiVersion: '2021-09-01'
name: gpucontainergroup
properties:
containers:
- name: gpucontainer
properties:
image: k8s-gcrio.azureedge.net/cuda-vector-add:v0.1
resources:
requests:
cpu: 1.0
memoryInGB: 1.5
gpu:
count: 1
sku: V100
osType: Linux
restartPolicy: OnFailure
Разверните группу контейнеров с помощью команды az container create и укажите имя файла YAML для --file параметра. Необходимо указать имя группы ресурсов и расположение для группы контейнеров, например eastus, которая поддерживает ресурсы GPU.
az container create --resource-group myResourceGroup --file gpu-deploy-aci.yaml --location eastus
Развертывание занимает несколько минут. Затем контейнер запускается и выполняет операцию сложения векторов CUDA. Для просмотра выходных данных журнала выполните команду az container logs:
az container logs --resource-group myResourceGroup --name gpucontainergroup --container-name gpucontainer
Выходные данные:
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done
Пример шаблона Resource Manager
Другим способом развертывания группы контейнеров с ресурсами GPU является использование шаблона ARM. Сначала создайте файл с именем gpudeploy.json. Затем скопируйте в него следующий код JSON. В этом примере развертывается экземпляр контейнера с графическим процессором V100, который выполняет задание обучения TensorFlow для набора данных MNIST. Запросов ресурсов достаточно для запуска рабочей нагрузки.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"containerGroupName": {
"type": "string",
"defaultValue": "gpucontainergrouprm",
"metadata": {
"description": "Container Group name."
}
}
},
"variables": {
"containername": "gpucontainer",
"containerimage": "mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu"
},
"resources": [
{
"name": "[parameters('containerGroupName')]",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2021-09-01",
"location": "[resourceGroup().location]",
"properties": {
"containers": [
{
"name": "[variables('containername')]",
"properties": {
"image": "[variables('containerimage')]",
"resources": {
"requests": {
"cpu": 4.0,
"memoryInGb": 12.0,
"gpu": {
"count": 1,
"sku": "V100"
}
}
}
}
}
],
"osType": "Linux",
"restartPolicy": "OnFailure"
}
}
]
}
Разверните шаблон с помощью команды az deployment group create. Необходимо указать имя группы ресурсов, созданной в регионе с поддержкой ресурсов GPU, например eastus.
az deployment group create --resource-group myResourceGroup --template-file gpudeploy.json
Развертывание занимает несколько минут. Затем контейнер запускается и выполняет задание TensorFlow. Для просмотра выходных данных журнала выполните команду az container logs:
az container logs --resource-group myResourceGroup --name gpucontainergrouprm --container-name gpucontainer
Выходные данные:
2018-10-25 18:31:10.155010: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2018-10-25 18:31:10.305937: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties:
name: Tesla V100 major: 3 minor: 7 memoryClockRate(GHz): 0.8235
pciBusID: ccb6:00:00.0
totalMemory: 11.92GiB freeMemory: 11.85GiB
2018-10-25 18:31:10.305981: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: Tesla V100, pci bus id: ccb6:00:00.0, compute capability: 3.7)
2018-10-25 18:31:14.941723: I tensorflow/stream_executor/dso_loader.cc:139] successfully opened CUDA library libcupti.so.8.0 locally
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting /tmp/tensorflow/input_data/train-images-idx3-ubyte.gz
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Extracting /tmp/tensorflow/input_data/train-labels-idx1-ubyte.gz
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Extracting /tmp/tensorflow/input_data/t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting /tmp/tensorflow/input_data/t10k-labels-idx1-ubyte.gz
Accuracy at step 0: 0.097
Accuracy at step 10: 0.6993
Accuracy at step 20: 0.8208
Accuracy at step 30: 0.8594
...
Accuracy at step 990: 0.969
Adding run metadata for 999
Очистите ресурсы
Так как использование ресурсов GPU может быть дорогостоящим, убедитесь, что контейнеры не работают неожиданно, в течение длительных периодов. Мониторинг контейнеров на портале Azure. Вы также можете проверить состояние группы контейнеров с помощью команды az container show . Рассмотрим пример.
az container show --resource-group myResourceGroup --name gpucontainergroup --output table
После завершения работы с созданными экземплярами контейнеров удалите их с помощью следующих команд:
az container delete --resource-group myResourceGroup --name gpucontainergroup -y
az container delete --resource-group myResourceGroup --name gpucontainergrouprm -y
Связанный контент
- Дополнительные сведения о развертывании группы контейнеров с помощью YAML-файла или шаблона ARM.
- Дополнительные сведения о размерах виртуальных машин, оптимизированных для GPU , в Azure.