Performa tinggi yang disajikan dengan Triton Inference Server (Pratinjau)

BERLAKU UNTUK:Azure CLI ml extensionv2 (saat ini)

Pelajari cara menggunakan NVIDIA Triton Inference Server di Azure Machine Learning dengan Titik akhir online terkelola.

Triton adalah perangkat lunak sumber terbuka multi-kerangka kerja yang dioptimalkan untuk inferensi. Ini mendukung kerangka kerja pembelajaran mesin populer seperti TensorFlow, ONNX Runtime, PyTorch, NVIDIA TensorRT, dan banyak lagi. Ini dapat digunakan untuk beban kerja CPU atau GPU Anda.

Pada artikel ini, Anda akan belajar cara menyebarkan Triton dan model ke titik akhir online terkelola. Informasi diberikan tentang penggunaan CLI (baris perintah) dan studio Azure Machine Learning.

Catatan

  • NVIDIA Triton Inference Server adalah perangkat lunak pihak ketiga sumber terbuka yang terintegrasi dalam Azure Machine Learning.
  • Meskipun titik akhir online Azure Machine Learning secara umum tersedia, menggunakan Triton dengan penyebaran titik akhir online masih dalam pratinjau.

Prasyarat

Sebelum mengikuti langkah-langkah dalam artikel ini, pastikan Anda memiliki prasyarat berikut:

  • Lingkungan Python 3.8 (atau lebih tinggi) yang berfungsi.

  • Akses ke mesin virtual seri NCv3 untuk langganan Azure Anda.

    Penting

    Anda mungkin perlu meminta peningkatan kuota untuk langganan Anda sebelum Anda dapat menggunakan seri mesin virtual ini. Untuk informasi selengkapnya, lihat Seri NCv3.

Informasi dalam artikel ini didasarkan pada sampel kode yang terkandung dalam repositori azureml-examples. Untuk menjalankan perintah secara lokal tanpa harus menyalin/menempelkan YAML dan file lainnya, klon repositori dan kemudian ubah direktori ke direktori cli di repositori:

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples
cd cli

Jika belum mengatur default untuk Azure CLI, simpan pengaturan default Anda. Untuk menghindari meneruskan nilai untuk langganan, ruang kerja, dan grup sumber daya Anda beberapa kali, gunakan perintah berikut ini. Ganti parameter berikut dengan nilai untuk konfigurasi spesifik Anda:

  • Ganti <subscription> dengan ID langganan Azure Anda.
  • Ganti <workspace> dengan nama ruang kerja Azure Machine Learning Anda.
  • Ganti <resource-group> dengan grup sumber daya Azure yang berisi ruang kerja Anda.
  • Ganti <location> dengan wilayah Azure yang berisi ruang kerja Anda.

Tip

Anda dapat melihat default Anda saat ini dengan menggunakan perintah az configure -l.

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

NVIDIA Triton Inference Server membutuhkan struktur repositori model tertentu, tempat tersedianya direktori untuk setiap model dan subdirektori untuk versi model. Isi dari setiap subdirektori versi model ditentukan oleh jenis model dan persyaratan backend yang mendukung model. Untuk melihat semua struktur repositori model https://github.com/triton-inference-server/server/blob/main/docs/model_repository.md#model-files

Informasi dalam dokumen ini didasarkan pada penggunaan model yang disimpan dalam format ONNX, sehingga struktur direktori repositori model adalah <model-repository>/<model-name>/1/model.onnx. Secara khusus, model ini melakukan identifikasi gambar.

Sebarkan menggunakan CLI (v2)

BERLAKU UNTUK:Azure CLI ml extensionv2 (saat ini)

Bagian ini menunjukkan bagaimana Anda dapat menyebarkan Triton ke titik akhir online terkelola menggunakan Azure CLI dengan ekstensi Pembelajaran Mesin (v2).

Penting

Untuk penyebaran tanpa kode Triton, pengujian melalui titik akhir lokal saat ini tidak didukung.

  1. Untuk menghindari pengetikan jalur untuk beberapa perintah, gunakan perintah berikut untuk mengatur variabel lingkungan BASE_PATH. Variabel ini menunjuk ke direktori tempat model dan file konfigurasi YAML terkait berada:

    BASE_PATH=endpoints/online/triton/single-model
    
  2. Gunakan perintah berikut untuk mengatur nama titik akhir yang akan dibuat. Dalam contoh ini, nama acak dibuat untuk titik akhir:

    export ENDPOINT_NAME=triton-single-endpt-`echo $RANDOM`
    
  3. Instal persyaratan Python menggunakan perintah berikut:

    pip install numpy
    pip install tritonclient[http]
    pip install pillow
    pip install gevent
    
  4. Buat file konfigurasi YAML untuk titik akhir Anda. Contoh berikut mengonfigurasi nama dan mode autentikasi titik akhir. Yang digunakan dalam perintah berikut terletak di /cli/endpoints/online/triton/single-model/create-managed-endpoint.yml di repositori azureml-examples yang Anda klon sebelumnya:

    create-managed-endpoint.yaml

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
    name: my-endpoint
    auth_mode: aml_token
    
  5. Untuk membuat titik akhir baru menggunakan konfigurasi YAML, gunakan perintah berikut:

    az ml online-endpoint create -n $ENDPOINT_NAME -f $BASE_PATH/create-managed-endpoint.yaml
    
  6. Buat file konfigurasi YAML untuk titik akhir Anda. Contoh berikut mengonfigurasi penyebaran bernama blue ke titik akhir yang dibuat di langkah sebelumnya. Yang digunakan dalam perintah berikut digunakan di /cli/endpoints/online/triton/single-model/create-managed-deployment.yml di repositori azureml-examples yang Anda klon sebelumnya:

    Penting

    Agar penyebaran tanpa kode Triton (NCD) berfungsi, mengatur type ke triton_model​ wajib dilakukan, type: triton_model​. Untuk informasi selengkapnya, lihat skema YAML model CLI (v2).

    Penyebaran ini menggunakan mesin virtual Standard_NC6s_v3. Anda mungkin perlu meminta peningkatan kuota untuk langganan Anda sebelum Anda dapat menggunakan mesin virtual ini. Untuk informasi selengkapnya, lihat Seri NCv3.

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
    name: blue
    endpoint_name: my-endpoint
    model:
      name: sample-densenet-onnx-model
      version: 1
      path: ./models
      type: triton_model
    instance_count: 1
    instance_type: Standard_NC6s_v3
    
  7. Untuk membuat penyebaran menggunakan konfigurasi YAML, gunakan perintah berikut:

    az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f $BASE_PATH/create-managed-deployment.yaml --all-traffic
    

Memanggil titik akhir Anda

Setelah penyebaran selesai, gunakan perintah berikut untuk membuat permintaan penilaian ke titik akhir yang disebarkan.

Tip

File /cli/endpoints/online/triton/single-model/triton_densenet_scoring.py dalam repositori azureml-examples digunakan untuk menilai. Gambar yang diteruskan ke titik akhir memerlukan pra-pemrosesan untuk memenuhi persyaratan ukuran, jenis, dan format, serta pasca-pemrosesan untuk menunjukkan label yang diprediksi. triton_densenet_scoring.py menggunakan perpustakaan tritonclient.http untuk berkomunikasi dengan server antarmuka Triton.

  1. Untuk mendapatkan uri penilaian titik akhir, gunakan perintah berikut:

    scoring_uri=$(az ml online-endpoint show -n $ENDPOINT_NAME --query scoring_uri -o tsv)
    scoring_uri=${scoring_uri%/*}
    
  2. Untuk mendapatkan token autentikasi, gunakan perintah berikut:

    auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)
    
  3. Untuk menilai data dengan titik akhir, gunakan perintah berikut. Perintah akan mengirimkan gambar merak (https://aka.ms/peacock-pic) ke titik akhir:

    python $BASE_PATH/triton_densenet_scoring.py --base_url=$scoring_uri --token=$auth_token
    

    Respons dari skrip mirip dengan teks berikut:

    Is server ready - True
    Is model ready - True
    /azureml-examples/cli/endpoints/online/triton/single-model/densenet_labels.txt
    84 : PEACOCK
    

Menghapus titik akhir dan model Anda

Setelah selesai dengan titik akhir, gunakan perintah berikut untuk menghapusnya:

az ml online-endpoint delete -n $ENDPOINT_NAME --yes

Gunakan perintah berikut untuk menghapus model Anda:

az ml model delete --name $MODEL_NAME --version $MODEL_VERSION

Sebarkan menggunakan studio Azure Machine Learning

Bagian ini menampilkan cara Anda dapat menyebarkan Triton ke titik akhir online terkelola menggunakan studio Azure Machine Learning.

  1. Daftarkan model Anda dalam format Triton menggunakan perintah YAML dan CLI berikut. YAML menggunakan model densenet-onnx dari https://github.com/Azure/azureml-examples/tree/main/cli/endpoints/online/triton/single-model

    create-triton-model.yaml

    name: densenet-onnx-model
    version: 1
    path: ./models
    type: triton_model​
    description: Registering my Triton format model.
    
    az ml model create -f create-triton-model.yaml
    

    Tangkapan layar berikut menunjukkan bagaimana model terdaftar Anda akan terlihat di halaman Model studio Azure Machine Learning.

    Screenshot showing Triton model format on Models page.

  2. Dari studio, pilih ruang kerja Anda, lalu gunakan halaman titik akhir atau model untuk membuat penyebaran titik akhir:

    1. Dari halaman Titik akhir, Pilih Buat.

      Screenshot showing create option on the Endpoints UI page.

    2. Berikan tipe nama dan autentikasi untuk titik akhir, lalu pilih Berikutnya.

    3. Saat memilih model, pilih model Triton yang terdaftar sebelumnya. Pilih Berikutnya untuk melanjutkan.

    4. Saat Anda memilih model yang terdaftar dalam format Triton, di langkah Lingkungan panduan, Anda tidak perlu mencetak skrip dan lingkungan.

      Screenshot showing no code and environment needed for Triton models

    5. Selesaikan panduan untuk menyebarkan model ke titik akhir.

      Screenshot showing NCD review screen

Langkah berikutnya

Untuk mempelajari lebih lanjut, tinjau artikel ini: