Penyajian berkinerja tinggi dengan Triton Inference Server

BERLAKU UNTUK:Ekstensi ml Azure CLI v2 (saat ini)Python SDK azure-ai-ml v2 (saat ini)

Pelajari cara menggunakan NVIDIA Triton Inference Server di Azure Pembelajaran Mesin dengan titik akhir online.

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

Terutama ada dua pendekatan yang dapat Anda lakukan untuk memanfaatkan model Triton saat menyebarkannya ke titik akhir online: Penyebaran tanpa kode atau penyebaran kode lengkap (Bawa kontainer Anda sendiri).

  • Penyebaran tanpa kode untuk model Triton adalah cara sederhana untuk menyebarkannya karena Anda hanya perlu membawa model Triton untuk disebarkan.
  • Penyebaran kode penuh (Bawa kontainer Anda sendiri) untuk model Triton adalah cara yang lebih canggih untuk menyebarkannya karena Anda memiliki kontrol penuh pada penyesuaian konfigurasi yang tersedia untuk server inferensi Triton.

Untuk kedua opsi, server inferensi Triton akan melakukan inferensi berdasarkan model Triton seperti yang didefinisikan oleh NVIDIA. Misalnya, model ansambel dapat digunakan untuk skenario yang lebih canggih.

Triton didukung di titik akhir online terkelola dan titik akhir online Kubernetes.

Dalam artikel ini, Anda akan mempelajari cara menyebarkan model menggunakan penyebaran tanpa kode untuk Triton ke titik akhir online terkelola. Informasi disediakan tentang menggunakan CLI (baris perintah), Python SDK v2, dan studio Azure Pembelajaran Mesin. Jika Anda ingin menyesuaikan lebih lanjut secara langsung menggunakan konfigurasi server inferensi Triton, lihat Menggunakan kontainer kustom untuk menyebarkan model dan contoh BYOC untuk Triton (definisi penyebaran dan skrip end-to-end).

Catatan

Penggunaan kontainer NVIDIA Triton Inference Server diatur oleh perjanjian lisensi NVIDIA AI Enterprise Software dan dapat digunakan selama 90 hari tanpa langganan produk perusahaan. Untuk informasi selengkapnya, lihat NVIDIA AI Enterprise di Azure Pembelajaran Mesin.

Prasyarat

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

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

  • Anda harus memiliki paket Python tambahan yang diinstal untuk penilaian dan dapat menginstalnya dengan kode di bawah ini. Meliputi:

    • Numpy - Array dan pustaka komputasi numerik
    • Triton Inference Server Client - Memfasilitasi permintaan ke Triton Inference Server
    • Bantal - Pustaka untuk operasi gambar
    • Gevent - Pustaka jaringan yang digunakan saat menyambungkan ke Triton Server
pip install numpy
pip install tritonclient[http]
pip install pillow
pip install gevent
  • 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.

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/user_guide/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.

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 saat ini dengan menggunakan perintah az configure -l.

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

Tentukan konfigurasi penyebaran

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

Bagian ini memperlihatkan bagaimana Anda dapat menyebarkan 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. 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
    
  4. Buat file konfigurasi YAML untuk titik akhir Anda. Contoh berikut mengonfigurasi penyebaran bernama biru ke titik akhir yang ditentukan pada langkah sebelumnya. Yang digunakan dalam perintah berikut terletak 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
    

Sebarkan ke Azure

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

  1. 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
    
  2. 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
    

Menguji titik akhir

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

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. File ini berjalan di sisi klien.

  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 kunci 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 --image_path $BASE_PATH/data/peacock.jpg
    

    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

BERLAKU UNTUK:ekstensi ml Azure CLI v2 (saat ini)

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

    az ml online-endpoint delete -n $ENDPOINT_NAME --yes
    
  2. Gunakan perintah berikut untuk mengarsipkan model Anda:

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

Langkah berikutnya

Untuk mempelajari lebih lanjut, tinjau artikel ini: