Elastic Algorithm Service (EAS) menyediakan prosesor Predictive Model Markup Language (PMML) bawaan untuk menerapkan model berformat PMML sebagai layanan online dan menjalankan tugas inferensi real-time secara online. Topik ini menjelaskan cara menerapkan dan memanggil layanan model PMML.
Informasi latar belakang
Prosesor PMML dapat digunakan untuk menerapkan model algoritma dalam format PMML di EAS. Model algoritma yang diekspor dari Machine Learning Designer dapat langsung diterapkan di EAS. Namun, model algoritma yang dilatih menggunakan kerangka algoritma sumber terbuka seperti scikit-learn dan XGBoost harus dikonversi ke format PMML terlebih dahulu sebelum dapat diterapkan di EAS. Untuk informasi lebih lanjut, lihat Ekspor Model.
Untuk informasi lebih lanjut, kunjungi PMML 4.4 - Struktur Umum.
Penanganan nilai yang hilang
Prosesor PMML menyediakan kebijakan default untuk mengisi nilai yang hilang. Jika kebijakan penanganan nilai yang hilang (isMissing) tidak ditentukan untuk kolom fitur dalam file PMML, nilai-nilai berikut akan diisi secara default.
Tipe data | Nilai yang diisi |
BOOLEAN | false |
DOUBLE | 0.0 |
FLOAT | 0.0 |
INT | 0 |
STRING | "" |
Langkah 1: Terapkan layanan model
Ketika menggunakan klien EASCMD untuk menerapkan layanan model PMML, atur parameter prosesor menjadi pmml. Blok kode berikut menunjukkan contohnya.
{
"name": "eas_lr_example",
"processor": "pmml",
"model_path": "http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/lr.pmml",
"metadata": {
"instance": 1,
"cpu": 1
}
}Untuk informasi lebih lanjut tentang cara menggunakan klien EASCMD untuk menerapkan model, lihat Terapkan Layanan Model dengan Menggunakan EASCMD.
Anda juga dapat menerapkan layanan model PMML di konsol Platform for AI (PAI). Untuk informasi lebih lanjut, lihat Parameter untuk Penyebaran Kustom di Konsol.
Langkah 2: Panggil layanan model
Anda dapat melakukan operasi berikut untuk memanggil layanan model.
Setelah menerapkan layanan model PMML, peroleh titik akhir layanan dan token yang digunakan untuk otentikasi layanan. Untuk mendapatkan informasi tersebut, lakukan operasi berikut: Pada halaman Elastic Algorithm Service (EAS), temukan layanan yang ingin Anda panggil dan klik Call Inform di kolom Service Type.
Buat permintaan layanan.
Baik input maupun output layanan model PMML adalah array JSON. Anda dapat menyertakan beberapa sampel dalam satu permintaan. Setiap sampel berisi data yang disajikan menggunakan pasangan kunci-nilai. Contoh:
[ { "address": 12, "age": 22, "ed": 4, "marital": 3.0, "region": 2.0, "tenure": 4.0 }, { "address": 2, "age": 34, "ed": 6, "marital": 1.3, "region": 2.1, "tenure": 4.2 } ]CatatanSaat mengirim permintaan layanan, Anda harus menghapus jeda baris dan karakter spasi dari file JSON untuk mempercepat transmisi data dan meningkatkan kinerja layanan.
Kirim permintaan layanan.
Metode berikut didukung:
PentingJika Anda menjalankan perintah curl untuk mengirim permintaan, token otentikasi ditentukan dalam header HTTP dan ditransmisikan dalam teks biasa melalui Internet. Jika Anda menggunakan EAS SDK untuk Python untuk mengirim permintaan, token digunakan untuk menandatangani permintaan, yang meningkatkan keamanan.
Jalankan perintah curl untuk mengirim permintaan.
Layanan PMML mendukung akses HTTP. Saat mengirim permintaan, token otentikasi dapat langsung ditentukan dalam header HTTP. Contoh:
// Kirim permintaan. curl -v 18284888792***.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml_test \ -H 'Authorization: YmE3NDkyMzdiMzNmMGM3ZmE4ZmNjZDk0M2NiMDA***' \ -d '[{"region": 2.0, "marital":3.0,"tenure":4.0, "age":22,"address":12,"ed":4},{"region": 2.1, "marital":1.3,"tenure":4.2, "age":34,"address":2,"ed":6}]'Parameter:
18284888792***.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml_test: Ganti nilainya dengan titik akhir yang Anda peroleh di Langkah 1.
Authorization: Konfigurasikan token yang Anda peroleh di Langkah 1 untuk otentikasi layanan.
Hasil berikut dikembalikan:
[{"p_0":0.2856724025030001,"p_1":0.7143275974969999},{"p_0":0.18324957921381624,"p_1":0.8167504207861838}]Gunakan EAS SDK untuk Python untuk mengirim permintaan. Untuk informasi lebih lanjut, lihat SDK untuk Python.
Contoh kode:
#!/usr/bin/env python from eas_prediction import PredictClient from eas_prediction import StringRequest if __name__ == '__main__': # Ganti nilainya dengan titik akhir dan nama layanan yang Anda peroleh di Langkah 1. client = PredictClient('1828488879222***.cn-shanghai.pai-eas.aliyuncs.com', 'pmml_test') # Ganti nilainya dengan token yang Anda peroleh di Langkah 1 untuk otentikasi layanan. client.set_token('YmE3NDkyMzdiMzNmMGM3ZmE4ZmNjZDk0M2NiMDA***') client.init() req = StringRequest('[{"region": 2.0, "marital":3.0,"tenure":4.0, "age":22,"address":12,"ed":4},{"region": 2.1, "marital":1.3,"tenure":4.2, "age":34,"address":2,"ed":6}]') for x in range(100): resp = client.predict(req) print(resp)Untuk informasi lebih lanjut tentang cara menggunakan EAS SDK untuk bahasa lainnya, lihat SDK.
Referensi
Anda juga dapat menggunakan prosesor bawaan lainnya untuk menerapkan layanan online EAS. Untuk informasi lebih lanjut, lihat Terapkan Layanan Model dengan Menggunakan Prosesor Bawaan.
Anda dapat mengembangkan prosesor kustom dan menggunakan prosesor kustom tersebut untuk menerapkan layanan online EAS. Untuk informasi lebih lanjut, lihat Terapkan Layanan dengan Menggunakan Prosesor Kustom.