Topik ini menjelaskan cara mendaftarkan model yang dideploy pada NVIDIA Triton Inference Server dalam pekerjaan Flink.
Latar Belakang
Mulai versi mesin VVR 11.7, Realtime Compute for Apache Flink mendukung pendaftaran model yang dideploy pada NVIDIA Triton Inference Server menggunakan pernyataan CREATE MODEL. Anda kemudian dapat menggunakan fungsi ML_PREDICT dalam pekerjaan SQL untuk melakukan inferensi model pada aliran data real-time.
NVIDIA Triton Inference Server adalah layanan inferensi open-source berkinerja tinggi dari NVIDIA yang mendukung berbagai framework model, seperti TensorFlow, PyTorch, ONNX, dan TensorRT. Anda dapat menggunakan layanan Triton yang dikelola sendiri atau mendeploynya melalui Elastic Algorithm Service (EAS) pada Platform for AI (PAI). Untuk informasi lebih lanjut tentang cara mendeploy layanan Triton pada PAI-EAS, lihat Deploy layanan menggunakan image Triton Inference Server.
Catatan penggunaan
Fitur ini hanya didukung pada versi mesin VVR 11.7 dan yang lebih baru.
Permintaan ke NVIDIA Triton Inference Server yang dideploy secara eksternal dikirim melalui internet publik dan memerlukan akses jaringan publik.
Jika NVIDIA Triton Inference Server dideploy pada platform PAI, permintaan dikirim melalui jaringan pribadi dan tidak memerlukan akses jaringan publik. Untuk informasi lebih lanjut tentang cara memperoleh titik akhir, lihat bagian FAQ.
Sumber daya server Triton, kondisi jaringan, dan kinerja model memengaruhi throughput inferensi model. Jika layanan Triton mengalami beban berlebih atau dikenai Pembatasan laju, pekerjaan Flink mungkin mengalami back pressure sehingga operator inferensi menjadi bottleneck. Pembatasan laju yang parah dapat menyebabkan timeout operator dan restart pekerjaan.
Sintaksis
CREATE MODEL [catalog_name.][db_name.]model_name
INPUT (
input_column input_type
)
OUTPUT (
output_column output_type
)
WITH (
'provider' = 'triton',
'endpoint' = '<endpoint>',
'auth-token' = '<authentication_token>'
'model-name' = '<model_name>',
'model-version' = '<model_version>'
);Dengan parameter
Parameter umum
Parameter | Deskripsi | Jenis | Wajib | Bawaan | Catatan |
provider | Jenis layanan model. | String | Ya | Tidak ada | Nilainya harus |
endpoint | Titik akhir HTTP server Triton. | String | Ya | Tidak ada | Anda harus memastikan konektivitas jaringan antara ruang kerja Realtime Compute for Apache Flink dan layanan Triton. Untuk informasi lebih lanjut, lihat Opsi koneksi jaringan. Jika Anda mendeploy layanan Triton menggunakan PAI-EAS, Anda dapat memperoleh titik akhir dari informasi pemanggilan layanan pada halaman layanan inferensi model di Konsol PAI. |
model-name | Nama model pada server Triton. | String | Ya | Tidak ada | Nama ini harus sesuai dengan nama model dalam repositori model Triton. |
model-version | Versi model Triton. | String | Tidak | latest | Anda dapat menentukan versi tertentu, misalnya |
timeout | Timeout untuk permintaan HTTP. | Durasi | Tidak | 30s | Timeout ini berlaku untuk operasi koneksi, baca, dan tulis. Anda dapat menentukan nilainya dalam format durasi, seperti |
flatten-batch-dim | Apakah dimensi batch dari input array diratakan. | Boolean | Tidak | false | Secara bawaan, bentuk input array adalah |
priority | Prioritas permintaan. | Integer | Tidak | Tidak ada | Nilai valid berkisar dari |
compression | Algoritma kompresi untuk badan permintaan. | String | Tidak | Tidak ada | Saat ini, hanya |
auth-token | Token otentikasi untuk model Triton. | String | Tidak | Tidak ada | Mengonfigurasi parameter ini akan menambahkan header |
custom-headers | Header permintaan HTTP kustom. | Map | Tidak | Tidak ada | Contoh: 'X-Trace-Id:abc,Authorization:token'. |
Parameter Model Stateful
Parameter berikut berlaku untuk model stateful Triton, seperti RNN dan LSTM, yang perlu mempertahankan state di beberapa permintaan.
Parameter | Deskripsi | Tipe | Wajib | Bawaan | Catatan |
sequence-id | ID sekuens. | String | Tidak | Tidak ada | Triton mengarahkan permintaan dengan ID sekuens yang sama ke instans model yang sama. |
sequence-start | Menentukan apakah permintaan saat ini ditandai sebagai awal sekuens. | Boolean | Tidak | false | Jika diatur ke |
sequence-end | Menentukan apakah permintaan saat ini ditandai sebagai akhir sekuens. | Boolean | Tidak | false | Jika diatur ke |
Pemetaan tipe
Tipe data kolom input dan output Flink harus sesuai dengan data_type yang dideklarasikan dalam file config.pbtxt model pada server Triton.
Tipe Flink | Tipe data Triton | Deskripsi |
BOOLEAN | BOOL | Tipe boolean. |
TINYINT | INT8 | Integer bertanda 8-bit. |
SMALLINT | INT16 | Integer bertanda 16-bit. |
INT | INT32 | Integer bertanda 32-bit. |
BIGINT | INT64 | Integer bertanda 64-bit. |
FLOAT | FP32 | Bilangan titik mengambang 32-bit. |
DOUBLE | FP64 | Bilangan titik mengambang 64-bit. |
STRING / VARCHAR | BYTES | Tipe teks. |
ARRAY<T> | Sesuai dengan tipe elemen | Hanya array satu dimensi yang didukung. |
Aturan bentuk:
Bentuk input skalar adalah
[1].Bentuk bawaan input
ARRAY<T>adalah[1, N], di manaNadalah panjang array. Jika model Triton mengharapkan bentuk[N], atur 'flatten-batch-dim' = 'true'.
FAQ
Menemukan titik akhir dan token PAI-EAS
Masuk ke Konsol Platform for AI (PAI).
Di panel navigasi kiri, pilih > Inference Service, lalu klik nama layanan target Anda untuk membuka halaman Overview.
Pada bagian Basic Information, klik View Invocation Information.
Di panel Invocation Information, salin titik akhir dan token tersebut.
Menangani error ketidaksesuaian bentuk
Pastikan tipe kolom input Flink sesuai dengan dims yang ditentukan dalam file config.pbtxt model pada server Triton. Untuk input ARRAY<T>, Flink mengirim bentuk bawaan [1, N]. Jika konfigurasi model mengharapkan bentuk [N], atur parameter berikut:
'flatten-batch-dim' = 'true'
Array bersarang tidak didukung. Jika model Anda mengharapkan tensor multidimensi, kami menyarankan agar Anda meratakan tensor tersebut menjadi ARRAY<T> satu dimensi dan mengembalikan bentuknya di sisi model.
Dukungan untuk banyak input atau output
Fitur ini hanya mendukung satu kolom input dan satu kolom output. Untuk model dengan banyak input, Anda dapat mengemas beberapa fitur numerik ke dalam satu ARRAY<T> atau membuat serial struktur kompleks ke dalam string JSON dan menguraikannya di sisi model. Untuk model dengan banyak output, gabungkan output tersebut menjadi satu tensor output tunggal atau string JSON di sisi model.