Definisikan dan terapkan layanan online Elastic Algorithm Service (EAS) menggunakan file konfigurasi JSON dengan parameter resource, jaringan, dan kontainer yang dapat dikustomisasi.
Memulai dengan cepat
Siapkan file konfigurasi JSON
Buat file konfigurasi JSON dengan pengaturan yang diperlukan. Untuk pengguna pertama kali, konfigurasikan parameter pada halaman Custom Model Deployment > Custom Deployment. Sistem akan secara otomatis menghasilkan JSON yang sesuai, yang kemudian dapat dimodifikasi dan diperluas.
Contoh berikut menunjukkan file service.json. Untuk detail parameter, lihat Parameter JSON.
{
"metadata": {
"name": "demo",
"instance": 1,
"workspace_id": "your-workspace-id"
},
"cloud": {
"computing": {
"instances": [
{
"type": "ecs.c7a.large"
}
]
}
},
"containers": [
{
"image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/python-inference:py39-ubuntu2004",
"script": "python app.py",
"port": 8000
}
]
}
Terapkan layanan
-
Masuk ke Konsol PAI. Pilih wilayah di bagian atas halaman, lalu pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).
-
Pada tab Inference Service, klik Deploy Service. Di bagian Custom Model Deployment, pilih JSON Deployment.
-
Tempel konten file konfigurasi JSON Anda dan klik Deploy. Penerapan selesai ketika status layanan berubah menjadi running.
Parameter JSON
|
Parameter |
Wajib |
Deskripsi |
|
metadata |
Ya |
Metadata layanan. Untuk detail parameter, lihat deskripsi parameter metadata. |
|
cloud |
Tidak |
Resource komputasi dan konfigurasi VPC. Untuk detailnya, lihat deskripsi parameter cloud. |
|
containers |
Tidak |
Konfigurasi gambar kontainer. Untuk detailnya, lihat deskripsi parameter containers. |
|
dockerAuth |
Tidak |
Kredensial autentikasi untuk repositori pribadi. Nilainya adalah string Base64 dari |
|
networking |
Tidak |
Konfigurasi jaringan dan pemanggilan. Untuk detail parameter, lihat deskripsi parameter networking. |
|
storage |
Tidak |
Konfigurasi mount storage untuk memasang data dari OSS atau NAS ke dalam kontainer. Untuk detail konfigurasi, lihat Mount storage. |
|
token |
Tidak |
Token akses untuk autentikasi layanan. Jika dihilangkan, sistem secara otomatis menghasilkan token. |
|
aimaster |
Tidak |
Mengaktifkan Pemeriksaan daya komputasi dan toleransi kesalahan untuk layanan inferensi terdistribusi multi-node. |
|
model_path |
Ya |
Diperlukan saat menerapkan layanan dengan prosesor. Parameter model_path dan processor_path menentukan jalur sumber data input untuk model dan prosesor. Format alamat yang didukung:
|
|
oss_endpoint |
Tidak |
Titik akhir OSS. Contoh: oss-cn-beijing.aliyuncs.com. Untuk nilai lainnya, lihat Wilayah dan titik akhir. Catatan
Secara default, parameter ini dapat dihilangkan. Sistem menggunakan titik akhir OSS internal wilayah saat ini untuk mengunduh file model atau prosesor. Parameter ini diperlukan untuk akses OSS cross-region. Misalnya, jika Anda menerapkan layanan di wilayah China (Hangzhou) dan menentukan alamat OSS di wilayah China (Beijing) untuk parameter model_path, tentukan titik akhir OSS publik untuk wilayah China (Beijing). |
|
model_entry |
Tidak |
File entri model. Dapat berupa file apa pun. Jika tidak ditentukan, sistem menggunakan nama file dari model_path. Sistem meneruskan jalur file utama ke fungsi initialize() dalam prosesor. |
|
model_config |
Tidak |
Konfigurasi model. Mendukung teks apa pun. Sistem meneruskan nilai ini sebagai argumen kedua ke fungsi initialize() dalam prosesor. |
|
processor |
Tidak |
|
|
processor_path |
Tidak |
Jalur paket prosesor. Untuk informasi lebih lanjut, lihat deskripsi parameter model_path. |
|
processor_entry |
Tidak |
File utama prosesor. Contoh: libprocessor.so dan app.py. File harus berisi implementasi fungsi Parameter ini wajib saat processor_type diatur ke cpp atau python. |
|
processor_mainclass |
Tidak |
Kelas utama prosesor dalam paket JAR. Contoh: com.aliyun.TestProcessor. Parameter ini wajib saat processor_type diatur ke java. |
|
processor_type |
Tidak |
Bahasa implementasi processor. Nilai yang valid:
|
|
warm_up_data_path |
Tidak |
Jalur ke file permintaan yang digunakan untuk pra-ambil model. Untuk informasi lebih lanjut tentang pra-ambil model, lihat Pra-ambil layanan model. |
|
runtime.enable_crash_block |
Tidak |
Menentukan apakah instans layanan secara otomatis restart setelah crash karena pengecualian dalam kode prosesor. Nilai yang valid:
|
|
autoscaler |
Tidak |
Konfigurasi untuk auto scaling horizontal. Untuk detail parameter, lihat Auto scaling horizontal. |
|
labels |
Tidak |
Label untuk layanan EAS. Formatnya adalah |
|
unit.size |
Tidak |
Jumlah mesin yang diterapkan untuk satu instans dalam konfigurasi inferensi terdistribusi. Nilai default adalah 2. |
|
sinker |
Tidak |
Menyimpan semua permintaan dan respons layanan ke MaxCompute atau Simple Log Service (SLS). Untuk detail parameter, lihat deskripsi parameter sinker. |
|
confidential |
Tidak |
Mengaktifkan layanan inferensi yang aman dan dapat diverifikasi dengan mengonfigurasi layanan manajemen kepercayaan sistem. Ini memastikan data, model, dan kode dienkripsi secara aman selama penerapan dan pemanggilan layanan. Format: Catatan
Lingkungan enkripsi aman terutama untuk file pada storage yang Anda pasang. Pasang storage sebelum mengaktifkan fitur ini.
Daftar berikut menjelaskan parameter.
|
Parameter metadata
Parameter lanjutan
Parameter cloud
|
Parameter |
Wajib |
Deskripsi |
|
|
computing |
instances |
Tidak |
Menentukan daftar spesifikasi instans untuk menerapkan layanan di kelompok sumber daya publik. Jika penawaran untuk spesifikasi instans gagal atau inventarisnya tidak mencukupi, sistem mencoba membuat layanan menggunakan spesifikasi instans berikutnya dalam urutan yang dikonfigurasi.
|
|
disable_spot_protection_period |
Tidak |
Parameter ini hanya berlaku untuk spot instans. Nilai yang valid:
|
|
|
networking |
vpc_id |
Tidak |
Menentukan VPC, vSwitch, dan grup keamanan untuk layanan EAS. |
|
vswitch_id |
Tidak |
||
|
security_group_id |
Tidak |
||
Contoh:
{
"cloud": {
"computing": {
"instances": [
{
"type": "ecs.c8i.2xlarge",
"spot_price_limit": 1
},
{
"type": "ecs.c8i.xlarge",
"capacity": "20%"
}
],
"disable_spot_protection_period": false
},
"networking": {
"vpc_id": "vpc-bp1oll7xawovg9*****",
"vswitch_id": "vsw-bp1jjgkw51nsca1e****",
"security_group_id": "sg-bp1ej061cnyfn0b*****"
}
}
}
Parameter kontainer
Untuk menerapkan layanan menggunakan gambar kustom, lihat Menerapkan layanan dengan gambar kustom.
|
Parameter |
Wajib |
Deskripsi |
|
|
image |
Ya |
URI gambar kontainer untuk layanan model. |
|
|
env |
name |
Tidak |
Nama variabel lingkungan. |
|
value |
Tidak |
Nilai variabel lingkungan. |
|
|
command |
Salah satu dari command atau script wajib diisi. |
Perintah entry point untuk kontainer. Hanya perintah tunggal yang didukung. Untuk skrip kompleks, seperti |
|
|
script |
Skrip entry point untuk kontainer. Gunakan |
||
|
port |
Tidak |
Port kontainer. Penting
|
|
|
prepare |
pythonRequirements |
Tidak |
Daftar paket Python yang akan diinstal sebelum instans layanan dimulai. Gambar harus memiliki perintah
|
|
pythonRequirementsPath |
Tidak |
Jalur ke file
|
|
Parameter jaringan
|
Parameter |
Wajib |
Deskripsi |
|
gateway |
Tidak |
Menentukan gateway khusus untuk layanan EAS. |
|
gateway_policy |
Tidak |
Contoh konfigurasi:
|
Parameter sinker
|
Parameter |
Wajib |
Deskripsi |
|
|
type |
Tidak |
Jenis penyimpanan untuk menyimpan catatan secara persisten. Jenis yang didukung:
|
|
|
config |
maxcompute.project |
Tidak |
Nama proyek MaxCompute. |
|
maxcompute.table |
Tidak |
Nama tabel MaxCompute. |
|
|
sls.project |
Tidak |
Nama proyek SLS. |
|
|
sls.logstore |
Tidak |
Nama penyimpanan log SLS. |
|
Bagian berikut memberikan contoh konfigurasi.
MaxCompute
"sinker": {
"type": "maxcompute",
"config": {
"maxcompute": {
"project": "cl****",
"table": "te****"
}
}
}
Simple Log Service
"sinker": {
"type": "sls",
"config": {
"sls": {
"project": "k8s-log-****",
"logstore": "d****"
}
}
}
Lampiran: Contoh konfigurasi JSON
Contoh JSON berikut menggunakan parameter yang dijelaskan di atas:
{
"token": "****M5Mjk0NDZhM2EwYzUzOGE0OGMx****",
"processor": "tensorflow_cpu_1.12",
"model_path": "oss://examplebucket/exampledir/",
"oss_endpoint": "oss-cn-beijing.aliyuncs.com",
"model_entry": "",
"model_config": "",
"processor_path": "",
"processor_entry": "",
"processor_mainclass": "",
"processor_type": "",
"warm_up_data_path": "",
"runtime": {
"enable_crash_block": false
},
"unit": {
"size": 2
},
"sinker": {
"type": "maxcompute",
"config": {
"maxcompute": {
"project": "cl****",
"table": "te****"
}
}
},
"cloud": {
"computing": {
"instances": [
{
"capacity": 800,
"type": "dedicated_resource"
},
{
"capacity": 200,
"type": "ecs.c7.4xlarge",
"spot_price_limit": 3.6
}
],
"disable_spot_protection_period": true
},
"networking": {
"vpc_id": "vpc-bp1oll7xawovg9t8****",
"vswitch_id": "vsw-bp1jjgkw51nsca1e****",
"security_group_id": "sg-bp1ej061cnyfn0b****"
}
},
"autoscaler": {
"min": 2,
"max": 5,
"strategies": {
"qps": 10
}
},
"storage": [
{
"mount_path": "/data_oss",
"oss": {
"endpoint": "oss-cn-shanghai-internal.aliyuncs.com",
"path": "oss://bucket/path/"
}
}
],
"confidential": {
"trustee_endpoint": "xx",
"decryption_key": "xx"
},
"metadata": {
"name": "test_eascmd",
"resource": "eas-r-9lkbl2jvdm0puv****",
"instance": 1,
"workspace_id": "1405**",
"gpu": 0,
"cpu": 1,
"memory": 2000,
"gpu_memory": 10,
"gpu_core_percentage": 10,
"qos": "",
"cuda": "11.2",
"enable_grpc": false,
"enable_webservice": false,
"rdma": 1,
"rpc": {
"batching": false,
"keepalive": 5000,
"io_threads": 4,
"max_batch_size": 16,
"max_batch_timeout": 50,
"max_queue_size": 64,
"worker_threads": 5,
"rate_limit": 0,
"enable_sigterm": false
},
"rolling_strategy": {
"max_surge": 1,
"max_unavailable": 1
},
"eas.termination_grace_period": 30,
"scheduling": {
"spread": {
"policy": "host"
}
},
"resource_rebalancing": false,
"workload_type": "elasticjob",
"shm_size": 100
},
"features": {
"eas.aliyun.com/extra-ephemeral-storage": "100Gi",
"eas.aliyun.com/gpu-driver-version": "tesla=550.127.08"
},
"networking": {
"gateway": "gw-m2vkzbpixm7mo****"
},
"containers": [
{
"image": "registry-vpc.cn-shanghai.aliyuncs.com/xxx/yyy:zzz",
"prepare": {
"pythonRequirements": [
"numpy==1.16.4",
"absl-py==0.11.0"
]
},
"command": "python app.py",
"port": 8000
}
],
"dockerAuth": "dGVzdGNhbzoxM*******"
}