Bagikan melalui


Menyebarkan instans kontainer yang menggunakan sumber daya GPU

Untuk menjalankan beban kerja intensif komputasi tertentu pada Azure Container Instances, sebarkan grup kontainer Anda dengan sumber daya GPU. Instans kontainer dalam grup dapat mengakses satu atau beberapa GPU NVIDIA Tesla saat menjalankan beban kerja kontainer seperti CUDA dan aplikasi pembelajaran mendalam.

Artikel ini memperlihatkan cara menambahkan sumber daya GPU saat Anda menyebarkan grup kontainer dengan menggunakan file YAML atau templat Resource Manager. Anda juga dapat menentukan sumber daya GPU saat Anda menyebarkan instans kontainer menggunakan portal Microsoft Azure.

Penting

SKU GPU K80 dan P100 dihentikan paling cepat 31 Agustus 2023. Hal ini disebabkan oleh penghentian VM yang mendasar yang digunakan: Seri NC dan Seri NCv2 Meskipun SKU V100 akan tersedia, V100 akan direceommended untuk menggunakan Azure Kubernetes Service sebagai gantinya. Sumber daya GPU tidak didukung sepenuhnya dan tidak boleh digunakan untuk beban kerja produksi. Gunakan sumber daya berikut untuk bermigrasi ke AKS hari ini: Cara Bermigrasi ke AKS.

Penting

Fitur ini saat ini dalam pratinjau, dan beberapa batasan berlaku. Pratinjau disediakan untuk Anda dengan syarat Anda menyetujui ketentuan penggunaan tambahan. Beberapa aspek dari fitur ini dapat berubah sebelum ketersediaan umum (GA).

Prasyarat

Catatan

Karena beberapa batasan saat ini, tidak semua permintaan kenaikan batas dijamin akan disetujui.

  • Jika Anda ingin menggunakan sku ini untuk penyebaran kontainer produksi Anda, buat permintaan Dukungan Azure untuk meningkatkan batas.

Batasan pratinjau

Dalam pratinjau, batasan berikut berlaku saat menggunakan sumber daya GPU dalam grup kontainer.

Ketersediaan wilayah

Wilayah OS SKU GPU yang tersedia
US Timur, Eropa Barat, US Barat 2, Asia Tenggara, India Tengah Linux V100

Dukungan akan ditambahkan untuk wilayah tambahan dari waktu ke waktu.

Jenis OS yang didukung: Hanya Linux

Batasan tambahan: Sumber daya GPU tidak dapat digunakan saat menyebarkan grup kontainer ke jaringan virtual.

Tentang sumber daya GPU

Jumlah dan SKU

Untuk menggunakan GPU dalam instans kontainer, tentukan sumber daya GPU dengan informasi berikut:

  • Jumlah - Jumlah GPU: 1, 2, atau 4.

  • SKU - SKU GPU: V100. Setiap SKU memetakan ke GPU NVIDIA Tesla di salah satu keluarga VM berkemampuan GPU Azure berikut:

    SKU Keluarga VM
    V100 NCv3

Sumber daya maksimum per SKU

OS SKU GPU Jumlah GPU CPU Maks Memori maksimum (GB) Penyimpanan (GB)
Linux V100 1 6 112 50
Linux V100 2 12 224 50
Linux V100 4 24 448 50

Saat menyebarkan sumber daya GPU, atur sumber daya CPU dan memori yang sesuai untuk beban kerja, hingga nilai maksimum yang diperlihatkan dalam tabel sebelumnya. Nilai-nilai ini saat ini lebih besar dari sumber daya CPU dan memori yang tersedia di grup kontainer tanpa sumber daya GPU.

Penting

Batas langganan default (kuota) untuk sumber daya GPU berbeda menurut SKU. Batas CPU default untuk SKU V100 awalnya diatur ke 0. Untuk meminta peningkatan di wilayah yang tersedia, kirimkan permintaan dukungan Azure.

Hal-hal yang perlu diketahui

  • Waktu penyebaran - Pembuatan grup kontainer yang berisi sumber daya GPU membutuhkan waktu hingga 8-10 menit. Hal ini disebabkan oleh waktu tambahan untuk menyediakan dan mengonfigurasi VM GPU di Azure.

  • Harga - Mirip dengan grup kontainer tanpa sumber daya GPU, Azure menagih sumber daya yang digunakan selama durasi grup kontainer dengan sumber daya GPU. Durasi dihitung dari waktu untuk menarik citra kontainer pertama Anda sampai grup kontainer berakhir. Ini tidak termasuk waktu untuk menyebarkan grup kontainer.

    Lihat detail harga.

  • Driver CUDA - Instans kontainer dengan sumber daya GPU telah disediakan sebelumnya dengan driver NVIDIA CUDA dan runtime kontainer, sehingga Anda dapat menggunakan citra kontainer yang dikembangkan untuk beban kerja CUDA.

    Kami mendukung melalui CUDA 11 pada tahap ini. Misalnya, Anda dapat menggunakan gambar dasar berikut untuk Dockerfile Anda:

    Catatan

    Untuk meningkatkan keandalan saat menggunakan image kontainer publik dari Docker Hub, impor dan kelola image di registri kontainer Azure pribadi, dan perbarui Dockerfile Anda untuk menggunakan image dasar yang dikelola secara privat. Pelajari lebih lanjut cara menangani citra publik.

Contoh YAML

Salah satu cara untuk menambahkan sumber daya GPU adalah dengan menyebarkan grup kontainer dengan menggunakan file YAML. Salin YAML berikut ke dalam file baru bernama gpu-deploy-aci.yaml, lalu simpan file. YAML ini membuat grup kontainer bernama gpucontainergroup yang menentukan instans kontainer dengan GPU V100. Instans menjalankan contoh aplikasi penambahan vektor CUDA. Permintaan sumber daya cukup untuk menjalankan beban kerja.

Catatan

Contoh berikut menggunakan gambar kontainer publik. Untuk meningkatkan keandalan, impor dan kelola gambar dalam registri kontainer Azure privat, serta perbarui YAML Anda untuk menggunakan gambar dasar terkelola secara privat. Pelajari lebih lanjut cara menangani citra publik.

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

Sebarkan grup kontainer dengan perintah az container create, tentukan nama file YAML untuk parameter --file. Anda perlu menyediakan nama grup sumber daya dan lokasi untuk grup kontainer seperti eastus yang mendukung sumber daya GPU.

az container create --resource-group myResourceGroup --file gpu-deploy-aci.yaml --location eastus

Penyebaran memerlukan waktu beberapa menit untuk menyelesaikan. Kemudian, kontainer dimulai dan menjalankan operasi penambahan vektor CUDA. Jalankan perintah az container logs untuk melihat output log:

az container logs --resource-group myResourceGroup --name gpucontainergroup --container-name gpucontainer

Output:

[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

Contoh templat Resource Manager

Cara lain untuk menyebarkan grup kontainer dengan sumber daya GPU adalah dengan menggunakan templat Resource Manager. Mulailah dengan membuat file bernama gpudeploy.json, lalu salin JSON berikut ke dalamnya. Contoh ini menyebarkan instans kontainer dengan GPU V100 yang menjalankan pekerjaan pelatihan TensorFlow terhadap himpunan data MNIST. Permintaan sumber daya cukup untuk menjalankan beban kerja.

{
    "$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"
        }
      }
    ]
}

Sebarkan templat dengan perintah az deployment group create. Anda perlu menyediakan nama grup sumber daya yang dibuat di wilayah seperti eastus yang mendukung sumber daya GPU.

az deployment group create --resource-group myResourceGroup --template-file gpudeploy.json

Penyebaran memerlukan waktu beberapa menit untuk menyelesaikan. Lalu, kontainer dimulai dan menjalankan pekerjaan TensorFlow. Jalankan perintah az container logs untuk melihat output log:

az container logs --resource-group myResourceGroup --name gpucontainergrouprm --container-name gpucontainer

Output:

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

Membersihkan sumber daya

Karena menggunakan sumber daya GPU mungkin mahal, pastikan kontainer Anda tidak berjalan secara tiba-tiba untuk waktu yang lama. Pantau kontainer Anda di portal Microsoft Azure, atau periksa status grup kontainer dengan perintah az container show. Contohnya:

az container show --resource-group myResourceGroup --name gpucontainergroup --output table

Setelah selesai bekerja dengan instans kontainer yang Anda buat, hapus dengan perintah berikut:

az container delete --resource-group myResourceGroup --name gpucontainergroup -y
az container delete --resource-group myResourceGroup --name gpucontainergrouprm -y

Langkah berikutnya