Processor adalah paket yang berisi logika prediksi online. Elastic Algorithm Service (EAS) menyediakan beberapa processor bawaan umum untuk menerapkan model standar dan mengurangi biaya pengembangan logika prediksi online.
EAS menyediakan processor yang dijelaskan dalam tabel berikut. Saat menggunakan EASCMD untuk menerapkan layanan, tentukan kode processor tersebut.
|
Nama processor |
Kode processor (hanya untuk penerapan EASCMD) |
Dokumentasi |
|
|
Versi CPU |
Versi GPU |
||
|
EasyRec |
easyrec-2.4 |
easyrec-2.4 |
|
|
TorchEasyRec |
easyrec-torch-1.0 |
easyrec-torch-1.0 |
|
|
PMML |
pmml |
None |
|
|
TensorFlow 1.12 |
tensorflow_cpu_1.12 |
tensorflow_gpu_1.12 |
|
|
TensorFlow 1.14 |
tensorflow_cpu_1.14 |
tensorflow_gpu_1.14 |
|
|
TensorFlow 1.15 |
tensorflow_cpu_1.15 |
tensorflow_gpu_1.15 |
Processor TensorFlow 1.15 (dengan mesin optimasi agile PAI-Blade bawaan) |
|
TensorFlow 2.3 |
tensorflow_cpu_2.3 |
None |
|
|
PyTorch 1.6 |
pytorch_cpu_1.6 |
pytorch_gpu_1.6 |
Processor PyTorch 1.6 (dengan mesin optimasi agile PAI-Blade bawaan) |
|
Caffe |
caffe_cpu |
caffe_gpu |
|
|
PS algorithm |
parameter_sever |
None |
|
|
Alink |
alink_pai_processor |
None |
None |
|
xNN |
xnn_cpu |
None |
None |
|
EasyVision |
easy_vision_cpu_tf1.12_torch151 |
easy_vision_gpu_tf1.12_torch151 |
|
|
EasyTransfer |
easytransfer_cpu |
easytransfer_gpu |
|
|
EasyNLP |
easynlp |
easynlp |
|
|
EasyCV |
easycv |
easycv |
|
|
Blade |
blade_cpu |
blade_cuda10.0_beta |
None |
|
MediaFlow |
None |
mediaflow |
|
|
Triton |
None |
triton |
|
Processor PMML
Processor PMML bawaan di EAS melakukan operasi-operasi berikut:
-
Memuat file model PMML sebagai layanan.
-
Memproses permintaan yang dikirim ke layanan model.
-
Menghitung hasil permintaan menggunakan model dan mengembalikan hasilnya ke klien.
Processor PMML menyediakan kebijakan default untuk menangani nilai yang hilang. Jika kebijakan isMissing tidak ditentukan untuk bidang fitur dalam file model PMML, sistem menggunakan nilai padding default berikut.
|
Tipe data |
Nilai padding default |
|
BOOLEAN |
false |
|
DOUBLE |
0.0 |
|
FLOAT |
0.0 |
|
INT |
0 |
|
STRING |
"" |
Terapkan model PMML dengan salah satu cara berikut:
-
Unggah di konsol
Atur Processor Type ke PMML. Untuk informasi selengkapnya, lihat Menerapkan layanan dengan mengunggah model di konsol.
-
Terapkan menggunakan klien lokal
Dalam file konfigurasi service.json, atur bidang processor ke kode processor yang sesuai, yaitu pmml. Contoh kode berikut disediakan.
{ "processor": "pmml", "generate_token": "true", "model_path": "http://xxxxx/lr.pmml", "name": "eas_lr_example", "metadata": { "instance": 1, "cpu": 1 # 4 GB memori dialokasikan secara otomatis untuk setiap CPU. Ini disebut 1 Quota. } } -
Penerapan DSW
Metode ini mirip dengan penerapan menggunakan klien lokal. Edit file konfigurasi service.json. Untuk informasi selengkapnya, lihat Menerapkan layanan menggunakan klien lokal (EASCMD).
Processor TensorFlow 1.12
Processor TensorFlow 1.12 yang disediakan oleh EAS dapat memuat model TensorFlow dalam format SavedModel (direkomendasikan) atau SessionBundle. Konversikan model Keras dan Checkpoint ke format SavedModel sebelum menerapkannya. Untuk informasi selengkapnya, lihat FAQ TensorFlow.
Processor ini tidak mendukung OP TensorFlow kustom.
Terapkan model TensorFlow dengan salah satu cara berikut:
-
Unggah di konsol
Atur Processor Type ke TensorFlow1.12. Untuk informasi selengkapnya, lihat Menerapkan layanan dengan mengunggah model di konsol.
-
Terapkan menggunakan klien lokal
Dalam file konfigurasi service.json, atur bidang processor ke kode processor yang sesuai, yaitu tensorflow_cpu_1.12 atau tensorflow_gpu_1.12. Pilih kode berdasarkan sumber daya penerapan Anda. Terjadi kesalahan penerapan jika processor yang ditentukan tidak sesuai dengan sumber daya. Contoh kode berikut disediakan.
{ "name": "tf_serving_test", "generate_token": "true", "model_path": "http://xxxxx/savedmodel_example.zip", "processor": "tensorflow_cpu_1.12", "metadata": { "instance": 1, "cpu": 1, "gpu": 0, "memory": 2000 } } -
Terapkan menggunakan DSW
Metode ini mirip dengan penerapan menggunakan klien lokal. Edit file konfigurasi service.json. Untuk informasi selengkapnya, lihat Menerapkan layanan menggunakan klien lokal (EASCMD).
Processor TensorFlow 1.14
Processor TensorFlow 1.14 yang disediakan oleh EAS dapat memuat model TensorFlow dalam format SavedModel (direkomendasikan) atau SessionBundle. Konversikan model Keras dan Checkpoint ke format SavedModel sebelum menerapkannya. Untuk informasi selengkapnya, lihat FAQ TensorFlow.
Processor ini tidak mendukung OP TensorFlow kustom.
Terapkan model TensorFlow dengan salah satu cara berikut:
-
Unggah di konsol
Atur Processor Type ke TensorFlow1.14. Untuk informasi selengkapnya, lihat Menerapkan layanan dengan mengunggah model di konsol.
-
Terapkan menggunakan klien lokal
Dalam file konfigurasi service.json, atur bidang processor ke kode processor yang sesuai, yaitu tensorflow_cpu_1.14 atau tensorflow_gpu_1.14. Pilih kode berdasarkan sumber daya penerapan Anda. Terjadi kesalahan penerapan jika processor yang ditentukan tidak sesuai dengan sumber daya. Contoh kode berikut disediakan.
{ "name": "tf_serving_test", "generate_token": "true", "model_path": "http://xxxxx/savedmodel_example.zip", "processor": "tensorflow_cpu_1.14", "metadata": { "instance": 1, "cpu": 1, "gpu": 0, "memory": 2000 } } -
Penerapan DSW
Metode ini mirip dengan penerapan menggunakan klien lokal. Edit file konfigurasi service.json. Untuk informasi selengkapnya, lihat Menerapkan layanan menggunakan klien lokal (EASCMD).
Processor TensorFlow 1.15 (dengan mesin optimasi agile PAI-Blade bawaan)
Processor TensorFlow 1.15 yang disediakan oleh EAS dapat memuat model TensorFlow dalam format SavedModel (direkomendasikan) atau SessionBundle. Konversikan model Keras dan Checkpoint ke format SavedModel sebelum menerapkannya. Untuk informasi selengkapnya, lihat FAQ TensorFlow.
-
Processor ini tidak mendukung OP TensorFlow kustom.
-
Processor ini memiliki mesin optimasi agile PAI-Blade bawaan. Gunakan untuk menerapkan model TensorFlow yang telah dioptimalkan oleh mesin optimasi agile PAI-Blade.
Terapkan model TensorFlow dengan salah satu cara berikut:
-
Unggah di konsol
Atur Processor Type ke TensorFlow1.15. Untuk informasi selengkapnya, lihat Menerapkan layanan dengan mengunggah model di konsol.
-
Terapkan menggunakan klien lokal
Dalam file konfigurasi service.json, atur bidang processor ke kode processor yang sesuai, yaitu tensorflow_cpu_1.15 atau tensorflow_gpu_1.15. Pilih kode berdasarkan sumber daya penerapan Anda. Terjadi kesalahan penerapan jika processor yang ditentukan tidak sesuai dengan sumber daya. Contoh kode berikut disediakan.
{ "name": "tf_serving_test", "generate_token": "true", "model_path": "http://xxxxx/savedmodel_example.zip", "processor": "tensorflow_cpu_1.15", "metadata": { "instance": 1, "cpu": 1, "gpu": 0, "memory": 2000 } } -
Penerapan DSW
Metode ini mirip dengan penerapan menggunakan klien lokal. Anda perlu mengedit file konfigurasi service.json. Untuk informasi selengkapnya, lihat Menerapkan layanan menggunakan klien lokal (EASCMD). Untuk informasi lebih lanjut tentang parameter dalam file konfigurasi, lihat Membuat layanan.
Processor TensorFlow 2.3
Processor TensorFlow 2.3 yang disediakan oleh EAS dapat memuat model TensorFlow dalam format SavedModel (direkomendasikan) atau SessionBundle. Konversikan model Keras dan Checkpoint ke format SavedModel sebelum menerapkannya. Untuk informasi selengkapnya, lihat FAQ TensorFlow.
Processor ini tidak mendukung OP TensorFlow kustom.
Terapkan model TensorFlow dengan salah satu cara berikut:
-
Unggah di konsol
Atur Processor Type ke TensorFlow2.3. Untuk informasi selengkapnya, lihat Menerapkan layanan dengan mengunggah model di konsol.
-
Terapkan menggunakan klien lokal
Dalam file konfigurasi service.json, atur bidang processor ke kode processor yang sesuai, yaitu tensorflow_cpu_2.3. Contoh kode berikut disediakan.
{ "name": "tf_serving_test", "generate_token": "true", "model_path": "http://xxxxx/savedmodel_example.zip", "processor": "tensorflow_cpu_2.3", "metadata": { "instance": 1, "cpu": 1, "gpu": 0, "memory": 2000 } } -
Penerapan DSW
Metode ini mirip dengan penerapan menggunakan klien lokal. Edit file konfigurasi service.json. Untuk informasi selengkapnya, lihat Menerapkan layanan menggunakan klien lokal (EASCMD).
Processor PyTorch 1.6 (dengan mesin optimasi agile PAI-Blade bawaan)
Processor PyTorch 1.6 yang disediakan oleh EAS dapat memuat model dalam format TorchScript. Untuk informasi selengkapnya, lihat dokumentasi resmi TorchScript.
-
Processor ini tidak mendukung ekstensi PyTorch atau input dan output model yang bukan bertipe tensor.
-
Processor ini memiliki mesin optimasi agile PAI-Blade bawaan dan dapat digunakan untuk menerapkan model PyTorch yang telah dioptimalkan.
Terapkan model TorchScript dengan salah satu cara berikut:
-
Unggah di konsol
Atur Processor Type ke PyTorch1.6. Untuk informasi selengkapnya, lihat Menerapkan layanan dengan mengunggah model di konsol.
-
Terapkan menggunakan klien lokal
Dalam file konfigurasi service.json, atur bidang processor ke kode processor yang sesuai, yaitu pytorch_cpu_1.6 atau pytorch_gpu_1.6. Pilih kode berdasarkan sumber daya penerapan Anda. Terjadi kesalahan penerapan jika processor yang ditentukan tidak sesuai dengan sumber daya. Contoh kode berikut disediakan.
{ "name": "pytorch_serving_test", "generate_token": "true", "model_path": "http://xxxxx/torchscript_model.pt", "processor": "pytorch_gpu_1.6", "metadata": { "instance": 1, "cpu": 1, "gpu": 1, "cuda": "10.0", "memory": 2000 } } -
Penerapan DSW
Metode ini mirip dengan penerapan menggunakan klien lokal. Anda perlu mengedit file konfigurasi service.json. Untuk informasi selengkapnya, lihat Menerapkan layanan menggunakan klien lokal (EASCMD). Untuk informasi lebih lanjut tentang parameter dalam file konfigurasi, lihat Membuat layanan.
Processor Caffe
Processor Caffe yang disediakan oleh EAS dapat memuat model pembelajaran mendalam yang dilatih menggunakan framework Caffe. Karena framework Caffe bersifat fleksibel, tentukan nama file model dan bobot dalam paket model saat menerapkan model Caffe.
Processor ini tidak mendukung lapisan data kustom.
Terapkan model Caffe dengan salah satu cara berikut:
-
Unggah di konsol
Atur Processor Type ke Caffe. Untuk informasi selengkapnya, lihat Menerapkan layanan dengan mengunggah model di konsol.
-
Terapkan menggunakan klien lokal
Dalam file konfigurasi service.json, atur bidang processor ke kode processor yang sesuai, yaitu caffe_cpu atau caffe_gpu. Pilih kode berdasarkan sumber daya penerapan Anda. Terjadi kesalahan penerapan jika processor yang ditentukan tidak sesuai dengan sumber daya. Contoh kode berikut disediakan.
{ "name": "caffe_serving_test", "generate_token": "true", "model_path": "http://xxxxx/caffe_model.zip", "processor": "caffe_cpu", "model_config": { "model": "deploy.prototxt", "weight": "bvlc_reference_caffenet.caffemodel" }, "metadata": { "instance": 1, "cpu": 1, "gpu": 0, "memory": 2000 } } -
Penerapan DSW
Metode ini mirip dengan penerapan menggunakan klien lokal. Edit file konfigurasi service.json. Untuk informasi selengkapnya, lihat Menerapkan layanan menggunakan klien lokal (EASCMD).
Processor algoritma PS
Processor algoritma PS yang disediakan oleh EAS dapat memuat model dalam format PS.
Bagian ini menjelaskan cara menggunakan processor algoritma PS untuk menerapkan layanan model dan mengirim permintaan layanan.
-
Terapkan model dalam format PS dengan salah satu cara berikut:
-
Unggah di konsol
Atur Processor Type ke PS Algorithm. Untuk informasi selengkapnya, lihat Penerapan kustom.
-
Terapkan menggunakan klien lokal
Dalam file konfigurasi service.json, atur bidang processor ke kode processor yang sesuai, yaitu parameter_sever. Contoh kode berikut disediakan.
{ "name":"ps_smart", "model_path": "oss://examplebucket/xlab_m_pai_ps_smart_b_1058272_v0.tar.gz", "processor": "parameter_sever", "metadata": { "region": "beijing", "cpu": 1, "instance": 1, "memory": 2048 } } -
Penerapan DSW
Metode ini mirip dengan penerapan menggunakan klien lokal. Edit file konfigurasi service.json. Untuk informasi selengkapnya, lihat Menerapkan layanan menggunakan klien lokal (EASCMD).
-
-
Deskripsi
Permintaan prediksi tunggal dan batch didukung. Struktur data permintaan sama untuk kedua jenis permintaan tersebut dan berupa array JSON yang berisi objek fitur.
-
Contoh permintaan tunggal
curl "http://eas.location/api/predict/ps_smart" -d "[ { "f0": 1, "f1": 0.2, "f3": 0.5 } ]" -
Contoh permintaan
curl "http://eas.location/api/predict/ps_smart" -d "[ { "f0": 1, "f1": 0.2, "f3": 0.5 }, { "f0": 1, "f1": 0.2, "f3": 0.5 } ]" -
Nilai kembali
Format nilai kembali sama untuk permintaan tunggal maupun batch. Nilai kembali berupa array yang berisi objek nilai kembali. Posisi setiap objek nilai kembali sesuai dengan posisi data dalam permintaan.
[ { "label":"xxxx", "score" : 0.2, "details" : [{"k1":0.3}, {"k2":0.5}] }, { "label":"xxxx", "score" : 0.2, "details" : [{"k1":0.3}, {"k2":0.5}] } ]
-
Processor EasyTransfer
Processor EasyTransfer yang disediakan oleh EAS dapat memuat model NLP pembelajaran mendalam berbasis TensorFlow yang dilatih menggunakan framework EasyTransfer.
Terapkan model EasyTransfer dengan salah satu cara berikut:
-
Unggah di konsol
Atur Processor Type ke EasyTransfer. Untuk informasi selengkapnya, lihat Menerapkan layanan dengan mengunggah model di konsol.
-
Terapkan menggunakan klien lokal
Dalam file konfigurasi service.json, atur bidang processor ke kode processor yang sesuai, yaitu easytransfer_cpu atau easytransfer_gpu. Pilih kode berdasarkan sumber daya penerapan Anda. Terjadi kesalahan penerapan jika processor yang ditentukan tidak sesuai dengan sumber daya. Di bagian model_config, tentukan tipe model di bidang type. Contoh kode berikut disediakan untuk model klasifikasi teks. Untuk informasi selengkapnya tentang parameter lainnya, lihat Membuat layanan.
-
Contoh konfigurasi untuk penerapan berbasis GPU (menggunakan kelompok sumber daya publik)
{ "name": "et_app_demo", "metadata": { "instance": 1 }, "cloud": { "computing": { "instance_type": "ecs.gn6i-c4g1.xlarge" } }, "model_path": "http://xxxxx/your_model.zip", "processor": "easytransfer_gpu", "model_config": { "type": "text_classify_bert" } } -
Contoh konfigurasi untuk penerapan berbasis CPU
{ "name": "et_app_demo", "model_path": "http://xxxxx/your_model.zip", "processor": "easytransfer_cpu", "model_config": { "type":"text_classify_bert" }, "metadata": { "instance": 1, "cpu": 1, "memory": 4000 } }
Tipe tugas yang didukung tercantum dalam tabel berikut.
Tipe tugas
type
Pencocokan teks
text_match_bert
Klasifikasi teks
text_classify_bert
Pelabelan sekuens
sequence_labeling_bert
Penyematan teks
vectorization_bert
-
Processor EasyNLP
Processor EasyNLP yang disediakan oleh EAS dapat memuat model NLP pembelajaran mendalam berbasis PyTorch yang dilatih menggunakan framework EasyNLP.
Terapkan model EasyNLP dengan salah satu cara berikut:
-
Unggah di konsol
Atur Processor Type ke EasyNLP . Untuk informasi selengkapnya, lihat Menerapkan layanan dengan mengunggah model di konsol.
-
Terapkan menggunakan klien lokal
Dalam file konfigurasi service.json, atur bidang processor ke kode processor yang sesuai, yaitu easynlp. Di bagian model_config, tentukan tipe model di bidang type. Contoh kode berikut disediakan untuk model klasifikasi teks label tunggal. Untuk informasi selengkapnya tentang parameter lainnya, lihat Membuat layanan.
{ "name": "easynlp_app_demo", "metadata": { "instance": 1 }, "cloud": { "computing": { "instance_type": "ecs.gn6i-c4g1.xlarge" } }, "model_config": { "app_name": "text_classify", "type": "text_classify" }, "model_path": "http://xxxxx/your_model.tar.gz", "processor": "easynlp" }Tipe tugas yang didukung tercantum dalam tabel berikut.
Tipe tugas
type
Klasifikasi teks (label tunggal)
text_classify
Klasifikasi teks (multi-label)
text_classify_multi
Pencocokan teks
text_match
Pelabelan sekuens
sequence_labeling
Penyematan teks
vectorization
Generasi ringkasan bahasa Mandarin (GPU)
sequence_generation_zh
Generasi ringkasan bahasa Inggris (GPU)
sequence_generation_en
Pemahaman membaca mesin (bahasa Mandarin)
machine_reading_comprehension_zh
Pemahaman membaca mesin (bahasa Inggris)
machine_reading_comprehension_en
WUKONG_CLIP (GPU)
wukong_clip
CLIP (GPU)
clip
Setelah layanan diterapkan, pada halaman Elastic Algorithm Service (EAS), temukan layanan yang akan dipanggil dan klik View Endpoint Information di kolom Service Type. Lihat titik akhir layanan dan token yang diperlukan untuk otentikasi. Panggil layanan menggunakan kode Python berikut.
import requests
# Ganti <eas-service-url> dengan titik akhir layanan Anda.
url = '<eas-service-url>'
# Ganti <eas-service-token> dengan token layanan Anda.
token = '<eas-service-token>'
# Tentukan data untuk prediksi. Kode berikut memberikan contoh untuk klasifikasi teks.
request_body = {
"first_sequence": "hello"
}
headers = {"Authorization": token}
resp = requests.post(url=url, headers=headers, json=request_body)
print(resp.content.decode())
Processor EasyCV
Processor EasyCV yang disediakan oleh EAS dapat memuat model pembelajaran mendalam yang dilatih menggunakan framework EasyCV.
Terapkan model EasyCV dengan salah satu cara berikut:
-
Unggah di konsol
Atur Processor Type ke EasyCV. Untuk informasi selengkapnya, lihat Menerapkan layanan dengan mengunggah model di konsol.
-
Terapkan menggunakan klien lokal
Dalam file konfigurasi service.json, atur bidang processor ke kode processor yang sesuai, yaitu easycv. Di bagian model_config, tentukan tipe model di bidang type. Contoh kode berikut disediakan untuk model klasifikasi gambar. Untuk informasi selengkapnya tentang parameter lainnya, lihat Membuat layanan.
{ "name": "easycv_classification_example", "processor": "easycv", "model_path": "oss://examplebucket/epoch_10_export.pt", "model_config": {"type":"TorchClassifier"}, "metadata": { "instance": 1 }, "cloud": { "computing": { "instance_type": "ecs.gn5i-c4g1.xlarge" } } }Tipe tugas yang didukung tercantum dalam tabel berikut.
Tipe tugas
model_config
Klasifikasi gambar
{"type":"TorchClassifier"}
Deteksi objek
{"type":"DetectionPredictor"}
Segmentasi semantik
{"type":"SegmentationPredictor"}
Deteksi objek YOLOX
{"type":"YoloXPredictor"}
Klasifikasi video
{"type":"VideoClassificationPredictor"}
Setelah layanan diterapkan, pada halaman Elastic Algorithm Service (EAS), temukan layanan yang akan dipanggil dan klik View Endpoint Information di kolom Service Type. Lihat titik akhir layanan dan token yang diperlukan untuk otentikasi. Panggil layanan menggunakan kode Python berikut.
import requests
import base64
import json
resp = requests.get('http://exmaplebucket.oss-cn-zhangjiakou.aliyuncs.com/images/000000123213.jpg')
ENCODING = 'utf-8'
datas = json.dumps( {
"image": base64.b64encode(resp.content).decode(ENCODING)
})
# Ganti nilai ini dengan token yang Anda peroleh.
head = {
"Authorization": "NTFmNDJlM2E4OTRjMzc3OWY0NzI3MTg5MzZmNGQ5Yj***"
}
for x in range(0,10):
# Ganti nilai ini dengan titik akhir layanan.
resp = requests.post("http://150231884461***.cn-hangzhou.pai-eas.aliyuncs.com/api/predict/test_easycv_classification_example", data=datas, headers=head)
print(resp.text)
Encode data gambar atau video dalam format Base64 untuk transmisi. Gunakan kata kunci image untuk data gambar dan kata kunci video untuk data video.
Processor EasyVision
Processor EasyVision yang disediakan oleh EAS dapat memuat model pembelajaran mendalam yang dilatih menggunakan framework EasyVision.
Terapkan model EasyVision dengan salah satu cara berikut:
-
Unggah di konsol
Atur Processor Type ke EasyVision. Untuk informasi selengkapnya, lihat Menerapkan layanan dengan mengunggah model di konsol.
-
Terapkan menggunakan klien lokal
Dalam file konfigurasi service.json, atur bidang processor ke kode processor yang sesuai, yaitu easy_vision_cpu_tf1.12_torch151 atau easy_vision_gpu_tf1.12_torch151. Pilih kode berdasarkan sumber daya penerapan Anda. Terjadi kesalahan penerapan jika processor yang ditentukan tidak sesuai dengan sumber daya. Di bagian model_config, tentukan tipe model di bidang type. Contoh kode berikut disediakan. Untuk informasi selengkapnya tentang parameter lainnya, lihat Membuat layanan.
-
Contoh konfigurasi untuk penerapan berbasis GPU
{ "name": "ev_app_demo", "processor": "easy_vision_gpu_tf1.12_torch151", "model_path": "oss://path/to/your/model", "model_config": "{\"type\":\"classifier\"}", "metadata": { "resource": "your_resource_name", "cuda": "9.0", "instance": 1, "memory": 4000, "gpu": 1, "cpu": 4, "rpc.worker_threads" : 5 } } -
Contoh konfigurasi untuk penerapan berbasis CPU
{ "name": "ev_app_cpu_demo", "processor": "easy_vision_cpu_tf1.12_torch151", "model_path": "oss://path/to/your/model", "model_config": "{\"type\":\"classifier\"}", "metadata": { "resource": "your_resource_name", "instance": 1, "memory": 4000, "gpu": 0, "cpu": 4, "rpc.worker_threads" : 5 } }
-
Processor MediaFlow
Processor MediaFlow yang disediakan oleh EAS adalah mesin orkestrasi universal yang dapat menganalisis dan memproses video, audio, dan gambar.
Terapkan model MediaFlow dengan salah satu cara berikut:
-
Unggah di konsol
Atur Processor Type ke MediaFlow. Untuk informasi selengkapnya, lihat Menerapkan layanan dengan mengunggah model di konsol.
-
Terapkan menggunakan klien lokal
Dalam file konfigurasi service.json, atur bidang processor ke kode processor yang sesuai, yaitu mediaflow. Saat menggunakan processor MediaFlow untuk menerapkan model, tambahkan juga bidang spesifik berikut ke file konfigurasi. Untuk informasi selengkapnya tentang bidang lainnya, lihat Membuat layanan.
-
graph_pool_size: jumlah pool graf.
-
worker_threads: jumlah thread penjadwalan.
Berikut adalah contohnya.
-
Contoh konfigurasi untuk menerapkan model klasifikasi video
{ "model_entry": "video_classification/video_classification_ext.js", "name": "video_classification", "model_path": "oss://path/to/your/model", "generate_token": "true", "processor": "mediaflow", "model_config" : { "graph_pool_size":8, "worker_threads":16 }, "metadata": { "eas.handlers.disable_failure_handler" :true, "resource": "your_resource_name", "rpc.worker_threads": 30, "rpc.enable_jemalloc": true, "rpc.keepalive": 500000, "cpu": 4, "instance": 1, "cuda": "9.0", "rpc.max_batch_size": 64, "memory": 10000, "gpu": 1 } } -
Konfigurasi untuk penerapan model pengenalan suara (ASR)
{ "model_entry": "asr/video_asr_ext.js", "name": "video_asr", "model_path": "oss://path/to/your/model", "generate_token": "true", "processor": "mediaflow", "model_config" : { "graph_pool_size":8, "worker_threads":16 }, "metadata": { "eas.handlers.disable_failure_handler" :true, "resource": "your_resource_name", "rpc.worker_threads": 30, "rpc.enable_jemalloc": true, "rpc.keepalive": 500000, "cpu": 4, "instance": 1, "cuda": "9.0", "rpc.max_batch_size": 64, "memory": 10000, "gpu": 1 } }
Perbedaan utama dalam konfigurasi service.json antara pengenalan suara dan klasifikasi video terletak pada nilai bidang model_entry, name, dan model_path. Ubah bidang-bidang ini sesuai dengan tipe model yang akan diterapkan.
-
Processor Triton
Triton Inference Server adalah framework layanan online dari NVIDIA. Framework ini menyediakan antarmuka penerapan dan manajemen yang mudah digunakan untuk model pada GPU serta kompatibel dengan standar API KFServing. Fitur-fiturnya meliputi:
-
Mendukung penerapan beberapa framework open source, seperti TensorFlow, PyTorch, ONNX Runtime, dan TensorRT. Juga mendukung backend layanan kustom.
-
Mendukung menjalankan beberapa model pada satu GPU secara bersamaan untuk meningkatkan pemanfaatan GPU.
-
Mendukung protokol komunikasi HTTP dan gRPC. Juga menyediakan ekstensi format biner untuk mengompres ukuran permintaan yang dikirim.
-
Mendukung batching dinamis untuk meningkatkan throughput layanan.
Triton Inference Server tersedia di EAS sebagai processor Triton bawaan.
-
Processor Triton sedang dalam pratinjau publik dan hanya tersedia di wilayah China (Shanghai). Wilayah lain tidak didukung.
-
Semua model yang diterapkan menggunakan layanan Triton harus disimpan di OSS. Oleh karena itu, aktifkan OSS dan unggah file model Anda ke OSS terlebih dahulu. Untuk informasi selengkapnya tentang cara mengunggah file ke OSS, lihat Simple upload.
Bagian ini menjelaskan cara menggunakan processor Triton untuk menerapkan layanan model dan cara memanggil layanan tersebut:
-
Terapkan layanan model menggunakan processor Triton
Terapkan layanan model Triton hanya menggunakan tool klien eascmd. Untuk informasi selengkapnya, lihat Membuat layanan. Saat menerapkan layanan model, dalam file konfigurasi service.json, atur bidang processor ke kode processor yang sesuai, yaitu triton. Karena Triton mengambil model dari OSS, konfigurasikan juga parameter terkait OSS. Contoh kode berikut menunjukkan file service.json.
{ "name": "triton_test", "processor": "triton", "processor_params": [ "--model-repository=oss://triton-model-repo/models", "--allow-http=true", ], "metadata": { "instance": 1, "cpu": 4, "gpu": 1, "memory": 10000, "resource":"<your resource id>" } }Tabel berikut menjelaskan parameter spesifik yang diperlukan untuk menerapkan layanan model Triton. Untuk informasi selengkapnya tentang parameter umum lainnya, lihat Parameter dalam service.json.
Parameter
Deskripsi
processor_params
Parameter yang diteruskan ke Triton Server saat startup layanan. Parameter yang tidak didukung akan difilter secara otomatis. Untuk daftar parameter yang didukung yang dapat diteruskan ke Triton Server, lihat Parameter yang dapat diteruskan ke Triton Server. Parameter model-repository wajib diisi. Untuk informasi selengkapnya tentang parameter opsional lainnya, lihat main.cc.
oss_endpoint
Endpoint OSS. Jika tidak ditentukan, sistem secara otomatis menggunakan layanan OSS di wilayah tempat layanan EAS diterapkan. Untuk menggunakan layanan OSS di wilayah berbeda, tentukan parameter ini. Untuk informasi tentang nilai yang valid, lihat Endpoints.
metadata
resource
ID kelompok sumber daya EAS khusus yang digunakan untuk menerapkan layanan model. Saat menggunakan processor Triton untuk menerapkan layanan model, sumber daya harus termasuk dalam kelompok sumber daya EAS khusus. Untuk informasi selengkapnya tentang cara membuat kelompok sumber daya EAS khusus, lihat Use EAS resource groups.
Tabel 1. Parameter yang dapat diteruskan ke Triton Server
Parameter
Wajib
Deskripsi
model-repository
Ya
Jalur harus berupa jalur OSS. Sistem tidak mendukung penggunaan direktori root bucket sebagai model-repository. Tentukan subdirektori dalam bucket tersebut.
Contohnya,
oss://triton-model-repo/models, di mana triton-model-repo adalah nama bucket dan models adalah subdirektori dalam bucket tersebut.log-verbose
Tidak
Untuk informasi selengkapnya tentang parameter-parameter tersebut, lihat main.cc.
log-info
Tidak
log-warning
Tidak
log-error
Tidak
exit-on-error
Tidak
strict-model-config
Tidak
strict-readiness
Tidak
allow-http
Tidak
http-thread-count
Tidak
pinned-memory-pool-byte-size
Tidak
cuda-memory-pool-byte-size
Tidak
min-supported-compute-capability
Tidak
buffer-manager-thread-count
Tidak
backend-config
Tidak
-
Gunakan klien Triton native untuk memanggil layanan processor Triton EAS
Untuk mengirim permintaan menggunakan klien Python, jalankan perintah berikut terlebih dahulu untuk menginstal klien Triton resmi.
pip3 install nvidia-pyindex pip3 install tritonclient[all]Jalankan perintah berikut untuk mengunduh gambar uji ke direktori saat ini.
wget http://pai-blade.oss-cn-zhangjiakou.aliyuncs.com/doc-assets/cat.pngContoh berikut menunjukkan cara menggunakan klien Python untuk mengirim permintaan dalam format biner ke layanan processor Triton.
import numpy as np import time from PIL import Image import tritonclient.http as httpclient from tritonclient.utils import InferenceServerException URL = "<service url>" # Ganti <service url> dengan titik akhir layanan. HEADERS = {"Authorization": "<service token>"} # Ganti <service token> dengan token akses layanan. input_img = httpclient.InferInput("input", [1, 299, 299, 3], "FP32") img = Image.open('./cat.png').resize((299, 299)) img = np.asarray(img).astype('float32') / 255.0 input_img.set_data_from_numpy(img.reshape([1, 299, 299, 3]), binary_data=True) output = httpclient.InferRequestedOutput( "InceptionV3/Predictions/Softmax", binary_data=True ) triton_client = httpclient.InferenceServerClient(url=URL, verbose=False) start = time.time() for i in range(10): results = triton_client.infer( "inception_graphdef", inputs=[input_img], outputs=[output], headers=HEADERS ) res_body = results.get_response() elapsed_ms = (time.time() - start) * 1000 if i == 0: print("model name: ", res_body["model_name"]) print("model version: ", res_body["model_version"]) print("output name: ", res_body["outputs"][0]["name"]) print("output shape: ", res_body["outputs"][0]["shape"]) print("[{}] Avg rt(ms): {:.2f}".format(i, elapsed_ms)) start = time.time()