TensorFlow Serving adalah mesin inferensi untuk model pembelajaran mendalam. TensorFlow Serving memungkinkan Anda menerapkan model TensorFlow dalam format SavedModel sebagai layanan online. TensorFlow Serving juga mendukung fitur seperti pembaruan bergulir dan manajemen versi model. Topik ini menjelaskan cara menerapkan layanan model menggunakan gambar TensorFlow Serving.
Sebelum Anda mulai
File model
Untuk menerapkan layanan model dengan gambar TensorFlow Serving, pastikan file model disimpan di Bucket Object Storage Service (OSS) dengan struktur berikut:
Sub-direktori versi: Setiap direktori harus memiliki setidaknya satu sub-direktori versi. Nama sub-direktori versi harus berupa angka yang menunjukkan versi model. Angka yang lebih besar menunjukkan versi model yang lebih baru.
File model: File model disimpan dalam format SavedModel di dalam sub-direktori versi. Layanan model secara otomatis memuat file model dari sub-direktori yang sesuai dengan versi terbaru.
Ikuti langkah-langkah berikut:
Buat direktori penyimpanan model di bucket OSS (contoh:
oss://contohbucket/models/tf_serving/). Untuk informasi lebih lanjut, lihat Kelola direktori.Unggah file model ke direktori yang dibuat pada langkah sebelumnya (Anda dapat menggunakan tf_serving.zip sebagai contoh). Format direktori penyimpanan model adalah sebagai berikut:
tf_serving ├── modelA │ └── 1 │ ├── saved_model.pb │ └── variables │ ├── variables.data-00000-of-00001 │ └── variables.index │ ├── modelB │ ├── 1 │ │ └── ... │ └── 2 │ └── ... │ └── modelC ├── 1 │ └── ... ├── 2 │ └── ... └── 3 └── ...
File konfigurasi model
File konfigurasi memungkinkan Anda menjalankan beberapa model dalam satu layanan. Jika Anda hanya perlu menerapkan layanan model tunggal, lewati langkah ini.
Buat file konfigurasi mengikuti petunjuk di bawah ini dan unggah ke OSS (contoh yang diberikan dalam bagian File model mencakup file konfigurasi model bernama model_config.pbtxt, yang dapat Anda gunakan atau modifikasi sesuai kebutuhan). Dalam contoh ini, file konfigurasi model diunggah ke oss://contohbucket/models/tf_serving/.
File konfigurasi model, model_config.pbtxt, harus berisi hal berikut:
model_config_list {
config {
name: 'modelA'
base_path: '/models/modelA/'
model_platform: 'tensorflow'
model_version_policy{
all: {}
}
}
config {
name: 'modelB'
base_path: '/models/modelB/'
model_platform: 'tensorflow'
model_version_policy{
specific {
versions: 1
versions: 2
}
}
version_labels {
key: 'stable'
value: 1
}
version_labels {
key: 'canary'
value: 2
}
}
config {
name: 'modelC'
base_path: '/models/modelC/'
model_platform: 'tensorflow'
model_version_policy{
latest {
num_versions: 2
}
}
}
}Tabel berikut menjelaskan parameter utama:
Parameter | Diperlukan | Deskripsi |
name | Tidak | Nama model. Kami sarankan Anda menentukan parameter ini. Jika tidak, Anda tidak akan dapat memanggil layanan nanti. |
base_path | Ya | Jalur ke direktori model dalam instance layanan, digunakan untuk membaca file model di langkah selanjutnya. Misalnya, jika direktori mount adalah |
model_version_policy | Tidak | Kebijakan untuk memuat versi model.
|
version_labels | Tidak | Label kustom untuk mengidentifikasi versi model. Tanpa version_labels, versi model hanya dapat dibedakan oleh nomor mereka. Jalur permintaan adalah: Jika version_labels diatur, Anda dapat meminta label versi untuk menunjuk ke nomor versi tertentu: Catatan Label hanya dapat ditetapkan ke versi model yang telah dimuat dan dijalankan sebagai layanan secara default. Untuk menetapkan label ke versi model yang belum dimuat, atur Command to Run menjadi |
Terapkan layanan
Anda dapat menggunakan salah satu metode berikut untuk menerapkan layanan model TensorFlow Serving.
Penyebaran berbasis skenario: Cocok untuk skenario penyebaran dasar. Anda hanya perlu mengonfigurasi beberapa parameter untuk menerapkan layanan model TensorFlow Serving.
Penyebaran kustom: Mendukung konfigurasi fleksibel. Misalnya, Anda dapat memodifikasi port atau menentukan periode polling file model.
Layanan model TensorFlow Serving mendukung port 8501 dan 8500:
8501: Meluncurkan server HTTP atau REST pada port 8501 untuk menerima permintaan HTTP.
8500: Meluncurkan server Google Remote Procedure Call (gRPC) pada port 8500 untuk menerima permintaan gRPC.
Secara default, penyebaran berbasis skenario menggunakan port 8501 dan tidak dapat diubah. Untuk menggunakan port 8500, Anda harus memilih penyebaran kustom.
Penyebaran berbasis skenario
Lakukan langkah-langkah berikut:
Masuk ke Konsol PAI. Pilih wilayah dan ruang kerja, lalu klik Enter Elastic Algorithm Service (EAS).
Di halaman Elastic Algorithm Service (EAS), klik Deploy Service. Di bagian Scenario-based Model Deployment dari halaman yang muncul, klik TensorFlow Serving Deployment.
Di halaman TFServing deployment, konfigurasikan parameter utama yang dijelaskan dalam tabel berikut. Untuk informasi tentang parameter lainnya, lihat Parameter untuk penyebaran kustom di konsol.
Parameter
Deskripsi
Deployment Method
Metode penyebaran yang didukung meliputi:
Standard Model Deployment: Metode ini digunakan untuk menerapkan layanan yang menggunakan model tunggal.
Configuration File Deployment: Pendekatan ini digunakan untuk menerapkan layanan yang menggabungkan beberapa model.
Model Settings
Ketika Anda memilih Standard Model Deployment sebagai Deployment Method, tentukan jalur OSS yang berisi file model.
Ketika Anda memilih Configuration File Deployment sebagai Deployment Method, konfigurasikan parameter berikut:
OSS: Pilih jalur OSS tempat file model disimpan.
Mount Path: Menentukan jalur tujuan dalam instance layanan untuk mengakses file model.
Configuration File: Pilih jalur OSS untuk file konfigurasi model.
Konfigurasi contoh:
Parameter
Contoh model tunggal (terapkan modelA)
Contoh multi-model
Service Name
modela_scene
multi_scene
Deployment Method
Pilih Standard Model Deployment.
Pilih Configuration File Deployment.
Model Settings
OSS:
oss://contohbucket/models/tf_serving/modelA/.OSS:
oss://contohbucket/models/tf_serving/.Mount Path: /models
Configuration File:
oss://contohbucket/models/tf_serving/model_config.pbtxt
Klik Deploy.
Penyebaran kustom
Lakukan langkah-langkah berikut:
Masuk ke Konsol PAI. Pilih wilayah dan ruang kerja, lalu klik Enter Elastic Algorithm Service (EAS).
Di halaman Elastic Algorithm Service (EAS), klik Deploy Service. Di bagian Custom Model Deployment, klik Custom Deployment.
Di halaman Custom Deployment, konfigurasikan parameter utama yang dijelaskan dalam tabel berikut. Untuk informasi tentang parameter lainnya, lihat Parameter untuk penyebaran kustom di konsol.
Parameter
Deskripsi
Image Configuration
Pilih versi tensorflow-serving dari Alibaba Cloud Image. Kami sarankan Anda menggunakan versi terbaru.
CatatanJika layanan model memerlukan sumber daya GPU, versi gambar harus dalam format x.xx.x-gpu.
Model Settings
Anda dapat mengonfigurasi file model menggunakan beberapa metode. Contoh ini menggunakan OSS.
Uri: Pilih jalur OSS tempat file model disimpan.
Mount Path: Jalur dalam instance layanan untuk membaca file model.
Run Command
Parameter startup untuk tensorflow-serving. Saat memilih gambar tensorflow-serving, perintah
/usr/bin/tf_serving_entrypoint.shdimuat sebelumnya. Konfigurasikan parameter berikut:Parameter startup untuk penyebaran model tunggal:
--model_name: Nama model, digunakan dalam URL permintaan layanan. Nilai default: model.
--model_base_path: Jalur ke direktori model dalam instance layanan. Nilai default:
/models/model.
Parameter startup untuk penyebaran multi-model:
--model_config_file: Diperlukan. Jalur ke file konfigurasi model.
--model_config_file_poll_wait_seconds: Opsional. Interval untuk memeriksa pembaruan file konfigurasi model, dalam detik. Misalnya,
--model_config_file_poll_wait_seconds=30berarti layanan memeriksa file setiap 30 detik.CatatanKetika file konfigurasi baru terdeteksi, hanya perubahan dalam file baru yang diterapkan. Misalnya, jika Model A dihapus dari file baru dan Model B ditambahkan, layanan akan membongkar Model A dan memuat Model B.
--allow_version_labels_for_unavailable_models: Opsional. Nilai default: false. Atur ke true untuk menetapkan label kustom ke versi model yang belum dimuat. Misalnya,
--allow_version_labels_for_unavailable_models=true.
Konfigurasi contoh:
Parameter
Contoh model tunggal (terapkan modelA)
Contoh multi-model
Deployment Method
Pilih Image-based Deployment.
Image Configuration
Pilih Alibaba Cloud Image: tensorflow-serving:2.14.1.
Model Settings
Pilih OSS.
Uri:
oss://examplebucket/models/tf_serving/.Mount Path:
/models.
Run Command
/usr/bin/tf_serving_entrypoint.sh --model_name=modelA --model_base_path=/models/modelA/usr/bin/tf_serving_entrypoint.sh --model_config_file=/models/model_config.pbtxt --model_config_file_poll_wait_seconds=30 --allow_version_labels_for_unavailable_models=trueNomor port default adalah 8501. Layanan model meluncurkan server HTTP atau REST pada port 8501 untuk menerima permintaan HTTP. Jika Anda ingin layanan mendukung permintaan gRPC, lakukan operasi berikut:
Di Environment Information, ubah Port Number menjadi 8500.
Di Environment Information, aktifkan Enable gRPC.
Di Edit Service Configuration, tambahkan konfigurasi berikut:
"networking": { "path": "/" }
Pilih Deploy.
Panggil layanan model
Anda dapat mengirim permintaan HTTP atau gRPC ke layanan model berdasarkan nomor port yang dikonfigurasi saat menerapkan layanan model. Contoh di bawah ini mengirim permintaan ke modelA.
Siapkan Data Uji
ModelA adalah model klasifikasi gambar yang menggunakan dataset pelatihan Fashion-MNIST, terdiri dari gambar grayscale 28x28. Model ini memprediksi kemungkinan sampel termasuk dalam salah satu dari sepuluh kategori. Untuk pengujian, data uji untuk permintaan layanan modelA direpresentasikan oleh
[[[[1.0]] * 28] * 28].Lihat contoh permintaan.
Permintaan HTTP
Layanan dikonfigurasikan untuk mendengarkan port 8501 untuk permintaan HTTP. Berikut adalah ringkasan jalur permintaan HTTP untuk penyebaran model tunggal dan multi-model:
Model Tunggal
Multi-Model
Format jalur:
<service_url>/v1/models/<model_name>:predictDimana:
Untuk penyebaran berbasis skenario, <model_name> telah ditentukan sebelumnya sebagai model.
Untuk penyebaran kustom, <model_name> sesuai dengan nama model yang ditetapkan di Command to Run. Nilai default: model.
Layanan menampung permintaan dengan atau tanpa versi model yang ditentukan. Format jalur masing-masing adalah:
Untuk permintaan tanpa versi (secara otomatis memuat versi terbaru):
<service_url>/v1/models/<model_name>:predictUntuk permintaan yang menentukan versi model:
<service_url>/v1/models/<model_name>/versions/<version_num>:predictJika label versi dikonfigurasikan:
<service_url>/v1/models/<model_name>/labels/<version label>:predict
Disini, <model_name> merujuk pada nama yang ditetapkan dalam file konfigurasi model.
<service_url> adalah titik akhir layanan Anda. Untuk melihatnya, buka halaman Elastic Algorithm Service (EAS), klik Invocation Method di kolom Service Type dari layanan yang diinginkan. URL ini sudah diisi sebelumnya saat menggunakan konsol untuk debugging online.
Sebagai contoh, jalur permintaan HTTP untuk penyebaran model tunggal berbasis skenario dari modelA adalah:
<service_url>/v1/models/model:predict.Berikut adalah contoh cara melakukan debugging online di konsol dan mengirim permintaan layanan menggunakan kode Python:
Lakukan debugging online
Setelah layanan diterapkan, pilih Online Debugging di kolom Actions. <service_url> disertakan dalam Request Parameter Online Tuning. Tambahkan jalur
/v1/models/model:predictke URL dan masukkan data permintaan di Body:{"signature_name": "serving_default", "instances": [[[[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]]]]}Setelah menyetel parameter, klik Send Request. Contoh hasil:

Kirim permintaan HTTP menggunakan kode Python
Contoh kode Python:
from urllib import request import json # Silakan ganti dengan endpoint layanan dan token Anda. # Anda dapat melihat token di tab Panggilan Alamat Publik dengan mengklik Informasi Panggilan di kolom Metode Layanan daftar layanan inferensi. service_url = '<service_url>' token = '<test-token>' # Untuk penyebaran model tunggal berbasis skenario, gunakan model. Untuk kasus lain, lihat tabel deskripsi jalur di atas. model_name = "model" url = "{}/v1/models/{}:predict".format(service_url, model_name) # Buat permintaan HTTP. req = request.Request(url, method="POST") req.add_header('authorization', token) data = { 'signature_name': 'serving_default', 'instances': [[[[1.0]] * 28] * 28] } # Kirim permintaan. response = request.urlopen(req, data=json.dumps(data).encode('utf-8')).read() # Lihat respons. response = json.loads(response) print(response)Permintaan gRPC
Untuk permintaan gRPC, konfigurasikan layanan untuk menggunakan port 8500 dan tambahkan pengaturan yang diperlukan. Berikut adalah contoh kode Python untuk mengirim permintaan gRPC:
import grpc import tensorflow as tf from tensorflow_serving.apis import predict_pb2 from tensorflow_serving.apis import prediction_service_pb2_grpc from tensorflow.core.framework import tensor_shape_pb2 # Titik akhir layanan. Untuk informasi lebih lanjut, lihat deskripsi parameter host di bawah ini. host = "tf-serving-multi-grpc-test.166233998075****.cn-hangzhou.pai-eas.aliyuncs.com:80" # Ganti <test-token> dengan token layanan. Anda dapat melihat token di tab Panggilan Alamat Publik. token = "<test-token>" # Nama model. Untuk informasi lebih lanjut, lihat deskripsi parameter name di bawah ini. name = "<model_name>" signature_name = "serving_default" # Tetapkan nilai ke versi model yang ingin Anda gunakan. Anda hanya dapat menentukan satu versi model dalam permintaan. version = "<version_num>" # Buat permintaan gRPC. request = predict_pb2.PredictRequest() request.model_spec.name = name request.model_spec.signature_name = signature_name request.model_spec.version.value = version request.inputs["keras_tensor"].CopyFrom(tf.make_tensor_proto([[[[1.0]] * 28] * 28])) # Kirim permintaan. channel = grpc.insecure_channel(host) stub = prediction_service_pb2_grpc.PredictionServiceStub(channel) metadata = (("authorization", token),) response, _ = stub.Predict.with_call(request, metadata=metadata) print(response)Tabel berikut menjelaskan parameter utama:
Parameter
Deskripsi
host
Titik akhir layanan model tanpa awalan
http://dan dengan akhiran:80. Untuk mendapatkan titik akhir, lakukan langkah-langkah berikut: Buka halaman Elastic Algorithm Service (EAS), temukan layanan model, lalu klik Invocation Method di kolom Service Type.name
Untuk permintaan gRPC model tunggal:
Dalam penyebaran berbasis skenario, atur name menjadi model.
Dalam penyebaran kustom, atur name menjadi nama model yang ditentukan di Command to Run. Jika tidak diatur, secara default menjadi model.
Untuk permintaan gRPC multi-model:
Atur name menjadi nama model yang diuraikan dalam file konfigurasi model.
version
Versi model yang ingin Anda gunakan. Anda hanya dapat menentukan satu versi model dalam permintaan.
metadata
Token layanan model. Anda dapat mengklik Invocation Method untuk melihatnya.
Referensi
Untuk informasi tentang cara menerapkan layanan model menggunakan gambar Triton Inference Server, lihat Gunakan gambar Triton Inference Server untuk menerapkan layanan model.
Anda dapat membuat gambar kustom untuk menerapkan layanan model di EAS. Untuk informasi lebih lanjut, lihat Terapkan layanan model menggunakan gambar kustom.