Di EAS, Anda dapat menggunakan file konfigurasi JSON untuk menentukan dan menerapkan layanan online.
Quick start
1. Siapkan file JSON
Penerapan layanan memerlukan file JSON yang berisi seluruh konfigurasi yang diperlukan. Untuk pengguna baru, kami merekomendasikan membuat file ini secara otomatis dengan mengonfigurasi parameter di bawah Custom Model Deployment > Custom Deployment. Anda kemudian dapat memodifikasi dan memperluas konten JSON yang dihasilkan.
Berikut adalah contoh file service.json. Untuk daftar lengkap parameter, lihat Lampiran: Referensi 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
}
]
}2. 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 JSON Anda dan klik Deploy. Penerapan berhasil jika status layanan berubah menjadi running.
Lampiran: Parameter JSON
Parameter | Wajib | Deskripsi |
metadata | Ya | Metadata layanan. Untuk detailnya, lihat deskripsi parameter metadata. |
cloud | Tidak | Konfigurasi untuk sumber daya komputasi dan VPC. Untuk detailnya, lihat deskripsi parameter cloud. |
containers | Tidak | Konfigurasi image. Untuk detailnya, lihat deskripsi parameter containers. |
dockerAuth | Tidak | Parameter ini harus dikonfigurasi untuk mengakses repositori pribadi yang memerlukan autentikasi. Nilainya adalah string Base64 dari |
networking | Tidak | Konfigurasi pemanggilan layanan. Untuk detailnya, lihat deskripsi parameter networking. |
storage | Tidak | Memasang data dari sumber seperti OSS atau NAS ke dalam kontainer. Untuk konfigurasi terperinci, lihat pemasangan storage. |
token | Tidak | Token akses untuk autentikasi layanan. Jika tidak ditentukan, sistem akan menghasilkan token tersebut secara otomatis. |
aimaster | Tidak | Mengaktifkan pemeriksaan daya komputasi dan toleransi kesalahan untuk inferensi terdistribusi multi-node. |
model_path | Ya | Diperlukan saat Anda menerapkan layanan menggunakan prosesor. Parameter model_path dan processor_path menentukan path sumber data untuk model dan prosesor, masing-masing. Kedua parameter mendukung format path berikut:
|
oss_endpoint | Tidak | Titik akhir OSS. Contoh: oss-cn-beijing.aliyuncs.com. Untuk nilai valid lainnya, lihat Wilayah dan titik akhir. Catatan Secara default, Anda tidak perlu menentukan parameter ini. Sistem menggunakan titik akhir OSS internal di wilayah saat ini untuk mengunduh file model atau prosesor. Anda harus menentukan parameter ini saat mengakses OSS lintas wilayah. Misalnya, jika Anda menerapkan layanan di wilayah Tiongkok (Hangzhou) dan parameter model_path menentukan path OSS di wilayah Tiongkok (Beijing), Anda harus mengatur parameter ini ke titik akhir OSS publik wilayah Tiongkok (Beijing). |
model_entry | Tidak | File entri untuk model, yang bisa berupa file apa saja. Jika tidak ditentukan, nama file dalam model_path yang digunakan. Path file entri diteruskan ke fungsi initialize() di Processor. |
model_config | Tidak | Menentukan konfigurasi model dan mendukung teks apa saja. Nilai parameter ini diteruskan ke parameter kedua fungsi initialize() di Processor. |
processor | Tidak |
|
processor_path | Tidak | Path ke paket prosesor. Untuk informasi lebih lanjut, lihat deskripsi parameter model_path. |
processor_entry | Tidak | File utama Processor, seperti libprocessor.so atau app.py, yang berisi implementasi fungsi Parameter ini wajib jika processor_type diatur ke cpp atau python. |
processor_mainclass | Tidak | Kelas utama prosesor dalam paket JAR, misalnya com.aliyun.TestProcessor. Parameter ini wajib jika processor_type diatur ke java. |
processor_type | Tidak | Bahasa pemrograman tempat processor diimplementasikan. Nilai yang valid adalah sebagai berikut:
|
warm_up_data_path | Tidak | Path ke file permintaan yang digunakan untuk pra-ambil model. Untuk informasi lebih lanjut tentang fitur ini, lihat pra-ambil 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 layanan model. Untuk detailnya, lihat auto scaling horizontal. |
labels | Tidak | Konfigurasikan label untuk EAS. Formatnya adalah |
unit.size | Tidak | Jumlah mesin per instans layanan dalam penerapan inferensi terdistribusi. Nilai default adalah 2. |
sinker | Tidak | Mempertahankan semua permintaan dan respons layanan ke MaxCompute atau Simple Log Service (SLS). Untuk detailnya, lihat deskripsi parameter sinker. |
confidential | Tidak | Dengan mengonfigurasi layanan manajemen kepercayaan sistem, Anda dapat mengaktifkan layanan inferensi yang aman dan terenkripsi. Hal ini memastikan bahwa informasi seperti data, model, dan kode diamankan selama penerapan dan pemanggilan layanan. Formatnya sebagai berikut: Catatan Fitur enkripsi aman ini berlaku untuk file pada storage yang Anda pasang. Pastikan Anda telah memasang file storage yang diperlukan sebelum mengaktifkan fitur ini. Parameter-parameter tersebut adalah sebagai berikut.
|
Parameter metadata
Parameter lanjutan
Parameter cloud
Parameter | Wajib | Deskripsi | |
computing | instances | Tidak | Menentukan tipe instans yang akan digunakan saat menerapkan layanan di kelompok sumber daya publik. Jika penawaran untuk instans spot gagal atau tipe instans memiliki inventaris yang tidak mencukupi, sistem akan mencoba membuat layanan menggunakan tipe instans berikutnya sesuai urutan yang dikonfigurasi.
|
disable_spot_protection_period | Tidak | Parameter ini berlaku untuk instans spot. Nilai yang valid:
| |
networking | vpc_id | Tidak | ID VPC. |
vswitch_id | Tidak | ID VSwitch. | |
security_group_id | Tidak | ID grup keamanan. | |
destination_cidrs | Tidak | Jika Blok CIDR VSwitch yang Anda konfigurasi bertentangan dengan Blok CIDR manajemen EAS (10.224.0.0/16 atau 10.240.0.0/12), Anda harus secara eksplisit mengatur field ini ke Blok CIDR VSwitch Anda. Ganti | |
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 containers
Untuk menerapkan layanan dengan custom image, lihat Custom Images.
Parameter | Wajib | Deskripsi | |
image | Ya | Alamat image untuk layanan model. | |
env | name | Tidak | Nama variabel lingkungan. |
value | Tidak | Nilai variabel lingkungan. | |
command | Salah satu dari | Perintah entry point untuk kontainer. Hanya perintah tunggal yang didukung. Untuk skrip kompleks, seperti | |
script | Skrip entry point yang dijalankan di dalam kontainer. Parameter ini mendukung skrip kompleks. Gunakan | ||
port | Tidak | Port kontainer. Penting
| |
prepare | pythonRequirements | Tidak | Daftar paket Python yang akan diinstal sebelum instans layanan dimulai. Perintah |
pythonRequirementsPath | Tidak | Path ke file | |
Parameter jaringan
Parameter | Wajib | Deskripsi |
gateway | Tidak | Gateway khusus yang dikonfigurasi untuk layanan EAS. |
gateway_policy | Tidak |
Contoh konfigurasi: |
Parameter sinker
Parameter | Wajib | Deskripsi | |
type | Tidak | Tipe penyimpanan. Tipe yang didukung adalah:
| |
config | maxcompute.project | Tidak | Nama proyek MaxCompute. |
maxcompute.table | Tidak | Nama tabel MaxCompute. | |
sls.project | Tidak | Nama proyek Log Service (SLS). | |
sls.logstore | Tidak | Nama penyimpanan log. | |
Contoh konfigurasi:
MaxCompute
"sinker": {
"type": "maxcompute",
"config": {
"maxcompute": {
"project": "cl****",
"table": "te****"
}
}
}Log Service (SLS)
"sinker": {
"type": "sls",
"config": {
"sls": {
"project": "k8s-log-****",
"logstore": "d****"
}
}
}Contoh konfigurasi JSON
Berikut adalah contoh konfigurasi JSON untuk 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*******"
}