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:
Azure CLI dan ekstensi
ml
ke Azure CLI. Untuk informasi selengkapnya, lihat Menginstal, menyiapkan, dan menggunakan CLI (v2).Penting
Contoh CLI dalam artikel ini mengasumsikan bahwa Anda menggunakan shell Bash (atau kompatibel). Misalnya, dari sistem Linux atau Subsistem Windows untuk Linux.
Ruang kerja Azure Machine Learning. Jika Anda tidak memilikinya, gunakan langkah-langkah di Pasang, siapkan, dan gunakan CLI (v2) untuk membuatnya.
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 penambahan kuota untuk langganan Anda sebelum dapat menggunakan rangkaian VM 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.
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
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`
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
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
ketriton_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 penambahan kuota untuk langganan Anda sebelum dapat menggunakan VM 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)
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
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.
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%/*}
Untuk mendapatkan kunci autentikasi, gunakan perintah berikut:
auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)
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)
Setelah selesai dengan titik akhir, gunakan perintah berikut untuk menghapusnya:
az ml online-endpoint delete -n $ENDPOINT_NAME --yes
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:
- Menyebarkan model dengan REST
- Membuat dan menggunakan titik akhir online terkelola di studio
- Peluncuran yang aman untuk titik akhir online
- Cara menskalakan otomatis titik akhir online terkelola
- Melihat biaya untuk titik akhir online terkelola Azure Machine Learning
- Mengakses sumber daya Azure dengan titik akhir online terkelola dan identitas terkelola
- Memecahkan masalah penyebaran titik akhir online terkelola