全部产品
Search
文档中心

Platform For AI:Terapkan layanan menggunakan file konfigurasi JSON

更新时间:Nov 30, 2025

Di Elastic Algorithm Service (EAS), Anda dapat mendefinisikan dan menerapkan layanan online menggunakan file konfigurasi JSON. Setelah menyiapkan file konfigurasi tersebut, Anda dapat menerapkan layanan melalui Konsol EAS, klien EASCMD, atau kit pengembangan perangkat lunak (SDK).

Persiapkan file konfigurasi JSON

Untuk menerapkan layanan, buat file JSON yang berisi seluruh konfigurasi yang diperlukan. Jika Anda pengguna baru, Anda dapat mengonfigurasi pengaturan dasar pada halaman penerapan layanan di Konsol. Sistem akan secara otomatis menghasilkan konten JSON yang sesuai, yang kemudian dapat Anda modifikasi dan perluas.

Berikut contoh file service.json. Untuk deskripsi semua parameter, lihat Lampiran: Deskripsi parameter JSON.

{
    "metadata": {
        "name": "demo",
        "instance": 1,
        "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 menggunakan file JSON

Konsol

  1. Masuk ke Konsol PAI. Pilih Wilayah di bagian atas halaman, lalu pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).

  2. Pada tab Inference Service, klik Deploy Service. Di halaman Deploy Service, pilih Custom Model Deployment > JSON On Premises Deployment.

  3. Masukkan konten file JSON yang telah disiapkan, lalu klik Deploy. Tunggu hingga status layanan berubah menjadi Running, yang menunjukkan bahwa layanan telah berhasil diterapkan.

EASCMD

Anda dapat menggunakan klien EASCMD untuk mengelola layanan model, termasuk membuat, melihat, menghapus, dan memperbarui layanan. Prosedurnya sebagai berikut:

  1. Unduh dan autentikasi klien

    Jika Anda menggunakan lingkungan pengembangan Distribution Switch (DSW) dengan image resmi, klien EASCMD telah dipra-instal di /etc/dsw/eascmd64. Jika tidak, unduh dan autentikasi klien.

  2. Jalankan perintah deployment

    Di direktori tempat file JSON berada, jalankan perintah berikut untuk menerapkan layanan. Contoh berikut menggunakan versi Windows 64-bit. Untuk informasi lebih lanjut tentang operasi, lihat Referensi perintah.

    eascmdwin64.exe create <service.json>

    Ganti <service.json> dengan nama file JSON Anda.

    Catatan

    Jika Anda menggunakan lingkungan pengembangan DSW dan perlu mengunggah file konfigurasi JSON, lihat Unggah dan unduh file.

    Sistem mengembalikan hasil yang mirip dengan berikut ini.

    [RequestId]: 1651567F-8F8D-4A2B-933D-F8D3E2DD****
    +-------------------+----------------------------------------------------------------------------+
    | Intranet Endpoint | http://166233998075****.cn-shanghai.pai-eas.aliyuncs.com/api/predict/test_eascmd |
    |             Token | YjhjOWQ2ZjNkYzdiYjEzMDZjOGEyNGY5MDIxMzczZWUzNGEyMzhi****                   |
    +-------------------+--------------------------------------------------------------------------+
    [OK] Creating api gateway
    [OK] Building image [registry-vpc.cn-shanghai.aliyuncs.com/eas/test_eascmd_cn-shanghai:v0.0.1-20221122114614]
    [OK] Pushing image [registry-vpc.cn-shanghai.aliyuncs.com/eas/test_eascmd_cn-shanghai:v0.0.1-20221122114614]
    [OK] Waiting [Total: 1, Pending: 1, Running: 0]
    [OK] Waiting [Total: 1, Pending: 1, Running: 0]
    [OK] Service is running

Lampiran: Deskripsi parameter JSON

Parameter

Wajib

Deskripsi

metadata

Ya

Metadata layanan. Untuk informasi lebih lanjut tentang pengaturan parameter, lihat deskripsi parameter metadata.

cloud

Tidak

Konfigurasi sumber daya komputasi dan virtual private cloud (VPC). Untuk informasi selengkapnya, lihat deskripsi parameter cloud.

containers

Tidak

Konfigurasi image. Untuk informasi selengkapnya, lihat deskripsi parameter containers.

dockerAuth

Tidak

Jika image berasal dari repositori pribadi, Anda harus mengonfigurasi dockerAuth. Nilainya adalah string Base64 dari username:password untuk repositori image tersebut.

networking

Tidak

Konfigurasi pemanggilan layanan. Untuk informasi lebih lanjut tentang pengaturan parameter, lihat deskripsi parameter networking.

storage

Tidak

Informasi mount penyimpanan untuk layanan. Untuk petunjuk konfigurasi terperinci, lihat Mount storage.

token

Tidak

String token untuk autentikasi akses. Jika Anda tidak menentukan parameter ini, sistem akan secara otomatis menghasilkan token.

aimaster

Tidak

Mengaktifkan deteksi daya komputasi dan toleransi kesalahan untuk layanan inferensi terdistribusi multi-mesin.

model_path

Ya

Parameter ini wajib saat Anda menerapkan layanan menggunakan prosesor. model_path dan processor_path masing-masing menentukan alamat data sumber untuk model dan prosesor. Format alamat berikut didukung:

  • Alamat OSS: Alamat dapat berupa path file spesifik atau path folder.

  • Alamat HTTP: File yang diperlukan harus berupa paket terkompresi, seperti TAR.GZ, TAR, BZ2, atau ZIP.

  • Path lokal: Jika Anda menggunakan perintah test untuk debugging lokal, Anda dapat menggunakan path lokal.

oss_endpoint

Tidak

Endpoint OSS, seperti oss-cn-beijing.aliyuncs.com. Untuk nilai lainnya, lihat Wilayah dan Endpoint.

Catatan

Secara default, Anda tidak perlu menentukan parameter ini. Sistem menggunakan alamat OSS jaringan internal di wilayah saat ini untuk mengunduh file model atau file prosesor. Anda harus menentukan parameter ini untuk akses lintas wilayah ke OSS. Misalnya, jika Anda menerapkan layanan di wilayah China (Hangzhou) dan model_path menentukan alamat OSS di wilayah China (Beijing), Anda harus menggunakan parameter ini untuk menentukan alamat akses jaringan publik untuk OSS di wilayah China (Beijing).

model_entry

Tidak

File entri model. Dapat berisi file apa pun. Jika Anda tidak menentukan parameter ini, nama file dalam model_path akan digunakan. Path file utama diteruskan ke fungsi initialize() dalam prosesor.

model_config

Tidak

Konfigurasi model. Mendukung teks apa pun. Nilai parameter ini diteruskan sebagai argumen kedua ke fungsi initialize() dalam prosesor.

processor

Tidak

  • Jika Anda menggunakan prosesor pra-bangun resmi, tentukan kode prosesor di sini. Untuk kode yang digunakan oleh prosesor dalam eascmd, lihat Prosesor pra-bangun.

  • Jika Anda menggunakan prosesor kustom, Anda tidak perlu mengonfigurasi parameter ini. Anda hanya perlu mengonfigurasi parameter processor_path, processor_entry, processor_mainclass, dan processor_type.

processor_path

Tidak

Path paket file yang terkait dengan prosesor. Untuk informasi selengkapnya, lihat deskripsi parameter model_path.

processor_entry

Tidak

File utama prosesor, seperti libprocessor.so atau app.py. Berisi implementasi fungsi initialize() dan process() yang diperlukan untuk prediksi.

Parameter ini wajib saat processor_type diatur ke cpp atau python.

processor_mainclass

Tidak

File utama prosesor, yaitu kelas utama dalam paket JAR. Misalnya, com.aliyun.TestProcessor.

Parameter ini wajib saat processor_type diatur ke java.

processor_type

Tidak

Bahasa yang digunakan untuk mengimplementasikan processor. Nilai yang valid:

  • cpp

  • java

  • python

warm_up_data_path

Tidak

Path file permintaan yang digunakan untuk pra-ambil model. Untuk informasi lebih lanjut tentang fitur 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:

  • true: Instans layanan tidak secara otomatis restart. Ini mempertahankan kondisi untuk troubleshooting.

  • false: Nilai default. Instans layanan secara otomatis restart.

autoscaler

Tidak

Informasi konfigurasi untuk skalabilitas horizontal otomatis layanan model. Untuk informasi lebih lanjut tentang pengaturan parameter, lihat Skalabilitas horizontal otomatis.

labels

Tidak

Mengonfigurasi tag untuk layanan EAS. Formatnya adalah key:value.

unit.size

Tidak

Jumlah mesin tempat satu instans diterapkan dalam konfigurasi inferensi terdistribusi. Nilai default adalah 2.

sinker

Tidak

Menyimpan semua catatan permintaan dan tanggapan layanan ke MaxCompute atau Simple Log Service (SLS). Untuk informasi lebih lanjut tentang pengaturan parameter, lihat deskripsi parameter sinker.

confidential

Tidak

Dengan mengonfigurasi layanan manajemen kepercayaan sistem, Anda dapat memastikan bahwa informasi seperti data, model, dan kode dienkripsi secara aman selama penerapan dan pemanggilan layanan. Hal ini mencapai layanan inferensi yang aman dan dapat diverifikasi. Formatnya sebagai berikut:

Catatan

Lingkungan enkripsi aman terutama ditujukan untuk file penyimpanan yang Anda mount. Mount file penyimpanan sebelum mengaktifkan fitur ini.

"confidential": {
        "trustee_endpoint": "xxxx",
        "decryption_key": "xxxx"
    }

Tabel berikut menjelaskan parameter.

  • trustee_endpoint: URI layanan manajemen kepercayaan sistem, Trustee.

  • decryption_key: URI KBS dari kunci dekripsi. Misalnya, kbs:///default/key/test-key.

Deskripsi parameter metadata

Parameter umum

Parameter

Wajib

Deskripsi

name

Ya

Nama layanan. Nama harus unik dalam wilayah yang sama.

instance

Ya

Jumlah instans yang akan dimulai untuk layanan.

workspace_id

Tidak

Setelah Anda menyetel ID ruang kerja, layanan hanya dapat digunakan dalam ruang kerja PAI yang ditentukan. Misalnya, 1405**.

cpu

Tidak

Jumlah core CPU yang dibutuhkan untuk setiap instans.

memory

Tidak

Jumlah memori yang dibutuhkan untuk setiap instans. Nilainya harus bilangan bulat. Satuan: MB. Misalnya, "memory": 4096 menunjukkan bahwa setiap instans membutuhkan memori 4 GB.

gpu

Tidak

Jumlah GPU yang dibutuhkan untuk setiap instans.

gpu_memory

Tidak

Mengonfigurasi fitur berbagi GPU saat Anda menggunakan kelompok sumber daya EAS atau kuota sumber daya. Fitur ini memungkinkan beberapa instans berbagi satu GPU.

gpu_core_percentage

qos

Tidak

Kualitas layanan (QoS) untuk instans. Nilai parameter yang valid adalah kosong atau BestEffort. Saat qos diatur ke BestEffort, mode berbagi CPU diaktifkan. Instans dijadwalkan berdasarkan memori GPU dan memori, dan tidak lagi dibatasi oleh jumlah core CPU pada node. Semua instans pada node berbagi sumber daya CPU. Dalam kasus ini, bidang cpu menunjukkan kuota maksimum yang dapat digunakan satu instans dalam mode berbagi CPU.

resource

Tidak

ID kelompok sumber daya. Kebijakan konfigurasinya sebagai berikut:

  • Jika layanan diterapkan di kelompok sumber daya publik, Anda dapat mengabaikan parameter ini. Layanan tersebut kemudian berbayar sesuai penggunaan.

  • Jika layanan diterapkan di kelompok sumber daya khusus, atur parameter ini ke ID kelompok sumber daya. Misalnya, eas-r-6dbzve8ip0xnzt****.

cuda

Tidak

Versi CUDA yang dibutuhkan oleh layanan. Saat layanan berjalan, versi CUDA yang ditentukan secara otomatis dimount ke direktori /usr/local/cuda instans.

Versi CUDA yang didukung: 8.0, 9.0, 10.0, 10.1, 10.2, 11.0, 11.1, dan 11.2. Contoh: "cuda":"11.2".

rdma

Tidak

Menentukan apakah akan mengaktifkan jaringan RDMA dalam konfigurasi inferensi terdistribusi. Atur ke 1 untuk mengaktifkan jaringan RDMA. Jika parameter rdma tidak dikonfigurasi, jaringan RDMA dinonaktifkan.

Catatan

Saat ini, hanya layanan yang diterapkan menggunakan Sumber daya komputasi cerdas Lingjun yang dapat menggunakan jaringan RDMA.

enable_grpc

Tidak

Menentukan apakah akan mengaktifkan koneksi gRPC untuk gerbang layanan. Nilai yang valid:

  • false: Nilai default. Gerbang tidak mengaktifkan koneksi gRPC. Permintaan HTTP didukung secara default.

  • true: Gerbang mengaktifkan koneksi gRPC.

Catatan

Jika Anda menggunakan custom image untuk menerapkan layanan dan implementasi sisi server dalam image tersebut adalah gRPC, Anda harus menggunakan parameter ini untuk mengalihkan protokol gerbang ke gRPC.

enable_webservice

Tidak

Menentukan apakah akan mengaktifkan server web untuk menerapkan aplikasi AI-Web:

  • false: Nilai default. Server web tidak diaktifkan.

  • true: Server web diaktifkan.

type

Tidak

Atur ke LLMGatewayService untuk menerapkan layanan router cerdas LLM. Untuk informasi tentang cara mengonfigurasi file JSON, lihat Langkah 1: Terapkan layanan router cerdas LLM.

Parameter lanjutan

Penting

Sesuaikan parameter lanjutan dengan hati-hati.

Parameter

Wajib

Deskripsi

rpc

batching

Tidak

Menentukan apakah akan mengaktifkan batching sisi server untuk mempercepat model GPU. Ini hanya didukung dalam mode prosesor pra-bangun. Nilai yang valid:

  • false: Nilai default. Batching sisi server dinonaktifkan.

  • true: Batching sisi server diaktifkan.

keepalive

Tidak

Waktu pemrosesan maksimum untuk satu permintaan, dalam milidetik. Jika waktu pemrosesan melebihi nilai ini, server mengembalikan error timeout 408 dan menutup koneksi. Nilai default: 600000 untuk gateway khusus. Gateway khusus berorientasi aplikasi (ALB) tidak mendukung konfigurasi ini.

io_threads

Tidak

Jumlah thread yang digunakan untuk memproses I/O jaringan untuk setiap instans. Nilai default adalah 4.

max_batch_size

Tidak

Ukuran maksimum setiap batch. Nilai default adalah 16. Ini hanya didukung dalam mode prosesor pra-bangun. Parameter ini hanya berlaku saat rpc.batching diatur ke true.

max_batch_timeout

Tidak

Timeout maksimum untuk setiap batch. Nilai default adalah 50 milidetik. Ini hanya didukung dalam mode prosesor pra-bangun. Parameter ini hanya berlaku saat rpc.batching diatur ke true.

max_queue_size

Tidak

Saat membuat layanan inferensi asinkron, ini adalah panjang maksimum antrian. Nilai default adalah 64. Jika antrian penuh, server mengembalikan error 450 dan menutup koneksi. Untuk mencegah server kelebihan beban, antrian dapat memberi tahu klien terlebih dahulu untuk mencoba ulang dengan instans lain. Untuk layanan dengan waktu respons (RT) yang lama, Anda dapat mengurangi panjang antrian untuk mencegah permintaan menumpuk dan menyebabkan timeout.

worker_threads

Tidak

Jumlah thread yang digunakan untuk pemrosesan permintaan konkuren dalam setiap instans. Nilai default adalah 5. Ini hanya didukung dalam mode prosesor pra-bangun.

rate_limit

Tidak

Mengaktifkan pembatasan kecepatan QPS dan membatasi QPS maksimum yang dapat ditangani oleh satu instans. Nilai default adalah 0, yang menonaktifkan pembatasan kecepatan QPS.

Misalnya, jika parameter ini diatur ke 2000, permintaan ditolak dengan error 429 (Too Many Requests) ketika QPS melebihi 2000.

enable_sigterm

Tidak

Nilai yang valid:

  • false (default): Sinyal SIGTERM tidak dikirim saat instans memasuki status exiting.

  • true: Saat instans layanan memasuki status exiting, sistem segera mengirim sinyal SIGTERM ke proses utama. Setelah menerima sinyal, proses dalam layanan harus melakukan operasi graceful exit kustom dalam penanganan sinyal. Jika sinyal tidak ditangani, proses utama mungkin langsung keluar setelah menerima sinyal, menyebabkan graceful exit gagal.

rolling_strategy

max_surge

Tidak

Selama pembaruan bergulir layanan, ini adalah jumlah maksimum instans tambahan yang dapat dibuat melebihi jumlah instans yang ditentukan. Parameter ini dapat berupa bilangan bulat positif, menunjukkan jumlah instans, atau persentase, seperti 2%. Defaultnya adalah 2%. Meningkatkan parameter ini dapat mempercepat pembaruan layanan.

Misalnya, jika jumlah instans layanan adalah 100 dan parameter ini diatur ke 20, 20 instans baru segera dibuat ketika pembaruan layanan dimulai.

max_unavailable

Tidak

Jumlah maksimum instans yang tidak tersedia selama pembaruan bergulir. Parameter ini dapat melepaskan sumber daya untuk instans baru selama pembaruan layanan untuk mencegah pembaruan macet karena sumber daya idle yang tidak mencukupi. Di kelompok sumber daya khusus, nilai default adalah 1. Di kelompok sumber daya publik, nilai default adalah 0.

Misalnya, jika parameter ini bernilai N, N instans segera dihentikan ketika pembaruan layanan dimulai.

Catatan

Jika sumber daya idle mencukupi, Anda dapat mengatur parameter ini ke 0. Mengatur parameter ini terlalu tinggi dapat memengaruhi stabilitas layanan. Hal ini karena jumlah instans yang tersedia berkurang pada saat pembaruan, sehingga meningkatkan beban trafik pada setiap instans. Anda perlu menyeimbangkan stabilitas layanan dan ketersediaan sumber daya saat mengonfigurasi parameter ini.

eas.termination_grace_period

Tidak

Waktu graceful exit untuk instans, dalam detik. Nilai default adalah 30 detik.

Layanan EAS menggunakan strategi pembaruan bergulir. Sebuah instans pertama-tama memasuki status Terminating. Layanan kemudian mengalihkan trafik dari instans yang akan keluar. Instans tersebut menunggu selama 30 detik untuk memproses permintaan yang diterima sebelum keluar. Jika pemrosesan permintaan memakan waktu lama, Anda dapat menambah nilai ini untuk memastikan bahwa semua permintaan yang sedang berlangsung diproses selama pembaruan layanan.

Penting

Menurunkan nilai ini memengaruhi stabilitas layanan. Mengatur nilai ini terlalu tinggi memperlambat pembaruan layanan. Jangan mengonfigurasi parameter ini kecuali diperlukan.

scheduling

spread.policy

Tidak

Kebijakan penyebaran untuk penjadwalan instans layanan. Kebijakan berikut didukung:

  • host: Menyebar instans ke node yang berbeda sebanyak mungkin.

  • zone: Menyebar instans ke zona yang berbeda tempat node berada sebanyak mungkin.

  • default: Menjadwalkan instans berdasarkan kebijakan default tanpa logika penyebaran aktif.

Contoh konfigurasi:

{
  "metadata": {
    "scheduling": {
      "spread": {
        "policy": "host"
      }
    }
}

resource_rebalancing

Tidak

Nilai yang valid:

  • false (default): Fitur ini dinonaktifkan.

  • true: EAS secara berkala membuat instans probe pada sumber daya prioritas tinggi. Jika instans probe berhasil dijadwalkan, lebih banyak instans probe dibuat secara eksponensial hingga penjadwalan gagal. Setelah instans probe yang berhasil dijadwalkan diinisialisasi dan siap, instans tersebut menggantikan instans pada sumber daya prioritas rendah.

Fitur ini dapat menyelesaikan masalah berikut:

  • Selama pembaruan bergulir, instans yang dihentikan masih menempati sumber daya. Hal ini menyebabkan instans baru dimulai pada sumber daya publik. Karena keterbatasan sumber daya publik, instans baru kemudian dijadwalkan ulang kembali ke kelompok sumber daya khusus.

  • Saat menggunakan instans spot dan instans reguler, sistem secara berkala memeriksa ketersediaan instans spot. Jika tersedia, instans reguler dimigrasikan ke instans spot.

workload_type

Tidak

Jika Anda ingin menerapkan layanan EAS sebagai tugas, Anda dapat mengatur parameter ini ke elasticjob. Untuk informasi lebih lanjut tentang penggunaan layanan Elastic Job, lihat Layanan Elastic Job.

resource_burstable

Tidak

Mengaktifkan fitur kolam sumber daya elastis untuk layanan EAS yang diterapkan menggunakan kelompok sumber daya khusus:

  • true: Mengaktifkan fitur.

  • false: Menonaktifkan fitur.

shm_size

Tidak

Mengonfigurasi memori bersama untuk instans. Hal ini memungkinkan operasi baca dan tulis langsung pada memori tanpa penyalinan atau transmisi data. Satuan: GB.

Deskripsi parameter cloud

Parameter

Wajib

Deskripsi

computing

instances

Tidak

Saat menerapkan layanan menggunakan kelompok sumber daya publik, Anda harus mengatur parameter ini. Parameter ini menentukan daftar spesifikasi sumber daya yang akan digunakan. Jika penawaran untuk tipe instans gagal atau inventaris tidak mencukupi, sistem akan mencoba menggunakan tipe instans berikutnya dalam urutan yang dikonfigurasi untuk membuat layanan.

  • type: Spesifikasi sumber daya.

  • spot_price_limit adalah parameter opsional:

    • Jika parameter ini dikonfigurasi, ini menunjukkan bahwa tipe instans yang sesuai menggunakan instans spot dan menentukan batas harga. Satuan: USD. Bayar sesuai penggunaan didukung.

    • Jika parameter ini tidak dikonfigurasi, ini menunjukkan bahwa tipe instans yang sesuai adalah instans bayar sesuai penggunaan reguler.

  • capacity: Batas atas jumlah instans dari tipe ini yang akan digunakan. Dapat berupa angka, seperti "500", atau string, seperti "20%". Setelah dikonfigurasi, jika jumlah instans dari tipe ini mencapai batas, tipe ini tidak akan digunakan lagi, meskipun ada sumber daya yang tersedia.

    Misalnya, jika jumlah total instans untuk layanan adalah 200 dan kapasitas untuk tipe instans A diatur ke 20%, layanan akan menggunakan maksimal 40 instans tipe A. Instans sisanya akan diluncurkan menggunakan spesifikasi lain.

disable_spot_protection_period

Tidak

Saat menggunakan instans spot, Anda harus mengatur parameter ini. Nilai yang valid:

  • false (default): Setelah instans spot dibuat, instans tersebut memiliki periode perlindungan default selama 1 jam. Selama periode perlindungan, instans tidak akan dilepas meskipun harga pasar melebihi penawaran.

  • true: Menonaktifkan periode perlindungan. Instans tanpa periode perlindungan selalu sekitar 10% lebih murah daripada instans dengan periode perlindungan.

networking

vpc_id

Tidak

Virtual private cloud (VPC), vSwitch, dan grup keamanan yang akan di-bind ke 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*****"
        }
    }
}

Deskripsi parameter containers

Saat menerapkan layanan menggunakan custom image, lihat Custom images.

Parameter

Wajib

Deskripsi

image

Ya

Wajib saat menerapkan dengan image. Alamat image yang digunakan untuk menerapkan layanan model.

env

name

Tidak

Nama variabel lingkungan untuk eksekusi image.

value

Tidak

Nilai variabel lingkungan untuk eksekusi image.

command

Salah satu dari dua wajib diisi

Perintah entri untuk image. Hanya mendukung satu perintah tunggal dan tidak mendukung skrip kompleks, seperti `cd xxx && python app.py`. Untuk skrip kompleks, gunakan parameter `script`. Bidang `command` cocok untuk skenario di mana image tidak berisi perintah `/bin/sh`.

script

Skrip entri yang akan dieksekusi untuk image. Anda dapat menentukan skrip kompleks. Gunakan `\n` atau titik koma untuk memisahkan beberapa baris.

port

Tidak

Port kontainer.

Penting
  • Karena mesin EAS mendengarkan pada port tetap 8080 dan 9090, port kontainer tidak boleh 8080 atau 9090.

  • Port ini harus sama dengan port yang dikonfigurasi dalam file xxx.py yang ditentukan dalam command.

prepare

pythonRequirements

Tidak

Daftar persyaratan Python yang akan diinstal sebelum instans dimulai. Image harus memiliki perintah `python` dan `pip` di path sistem. Formatnya adalah daftar. Contoh:

"prepare": {
  "pythonRequirements": [
    "numpy==1.16.4",
    "absl-py==0.11.0"
  ]
}

pythonRequirementsPath

Tidak

Path ke file `requirements.txt` yang akan diinstal sebelum instans dimulai. Image harus memiliki perintah `python` dan `pip` di path sistem. File `requirements.txt` dapat disertakan langsung dalam image atau dimount ke instans layanan dari penyimpanan eksternal. Contoh:

"prepare": {
  "pythonRequirementsPath": "/data_oss/requirements.txt"
}

Deskripsi parameter networking

Parameter

Wajib

Deskripsi

gateway

Tidak

Gateway khusus yang dikonfigurasi untuk layanan EAS.

gateway_policy

Tidak

  • rate_limit: Pembatasan laju global untuk layanan, yaitu jumlah maksimum permintaan yang dapat diterima layanan per detik.

    • enable: Menentukan apakah akan mengaktifkan pembatasan laju. `true` mengaktifkan, `false` menonaktifkan.

    • limit: Nilai pembatasan laju.

      Catatan

      Untuk layanan yang menggunakan gateway bersama, batas QPS default adalah 1.000 untuk satu layanan dan 10.000 untuk grup server. Tidak ada nilai default yang ditetapkan untuk gateway khusus.

  • concurrency_limit: Kontrol konkurensi global untuk layanan, yaitu jumlah maksimum permintaan yang sedang diproses pada suatu saat. Gateway khusus berorientasi aplikasi (ALB) tidak mendukung pengaturan ini.

    • enable: Menentukan apakah akan mengaktifkan pembatasan laju. `true` mengaktifkan, `false` menonaktifkan.

    • limit: Nilai pembatasan laju.

Contoh konfigurasi pembatasan laju:

{
    "networking": {
        "gateway_policy": {
            "rate_limit": {
                "enable": true,
                "limit": 100
            },
            "concurrency_limit": {
                "enable": true,
                "limit": 50
            }
        }
    }
}

Deskripsi parameter sinker

Parameter

Wajib

Deskripsi

type

Tidak

Dua kelas penyimpanan berikut didukung:

  • maxcompute: MaxCompute.

  • sls: Simple Log Service (SLS).

config

maxcompute.project

Tidak

Nama proyek MaxCompute.

maxcompute.table

Tidak

Tabel data MaxCompute.

sls.project

Tidak

Nama proyek SLS.

sls.logstore

Tidak

Penyimpanan log SLS.

Contoh konfigurasi:

Simpan di MaxCompute

"sinker": {
        "type": "maxcompute",
        "config": {
            "maxcompute": {
                "project": "cl****",
                "table": "te****"
            }
        }
    }

Simpan di Simple Log Service (SLS)

"sinker": {
        "type": "sls",
        "config": {
            "sls": {
                "project": "k8s-log-****",
                "logstore": "d****"
            }
        }
    }

Lampiran: Contoh konfigurasi JSON

Contoh berikut menunjukkan cara mengonfigurasi parameter di atas dalam file JSON:

{
  "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*******"
}