KServe (sebelumnya KFServing) adalah server model dan mesin inferensi dalam lingkungan cloud-native. Ini mendukung fitur seperti penskalaan otomatis, scale-to-zero, dan penyebaran canary. Dengan mengintegrasikan KServe dengan Service Mesh (ASM), pengembang dapat dengan cepat menerapkan dan mengelola layanan inferensi berbasis model pembelajaran mesin dalam aplikasi cloud-native, mengurangi beban konfigurasi manual dan pemeliharaan serta meningkatkan efisiensi pengembangan.
Prasyarat
Sebuah kluster Container Service for Kubernetes (ACK) telah ditambahkan ke instance ASM versi 1.17.2.7 atau lebih baru. Untuk informasi lebih lanjut, lihat Tambahkan Kluster ke Instance ASM.
Fitur yang memungkinkan sumber daya Istio diakses menggunakan API Kubernetes dari kluster diaktifkan. Untuk informasi lebih lanjut, lihat Aktifkan Fitur yang Memungkinkan Sumber Daya Istio Diakses Menggunakan API Kubernetes dari Kluster.
Komponen Knative diterapkan di kluster ACK dan fitur Knative pada ASM diaktifkan. Untuk informasi lebih lanjut, lihat Langkah 1 di Gunakan Knative pada ASM untuk Menerapkan Aplikasi Tanpa Server.
Pengenalan KServe
Sebagai server model, KServe mendukung penerapan model pembelajaran mesin dan pembelajaran mendalam secara besar-besaran. KServe dapat diterapkan dalam mode Deployment Kubernetes tradisional atau dalam mode tanpa server dengan dukungan untuk scale-to-zero. Ini menyediakan penskalaan otomatis berdasarkan trafik dan penyebaran blue-green atau canary untuk model. Untuk informasi lebih lanjut, lihat KServe.

Langkah 1: Instal komponen cert-manager KServe
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih .
Di halaman KServe on ASM, klik Enable KServe on ASM.
KServe bergantung pada komponen cert-manager. Saat Anda menginstal KServe, komponen cert-manager secara otomatis terinstal. Jika Anda ingin menggunakan komponen cert-manager Anda sendiri, matikan Automatically install the CertManager component in the cluster.
Langkah 2: Dapatkan alamat IP gateway ingress ASM
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih .
Di halaman Ingress Gateway, lihat dan catat Service address dari gateway ingress ASM.
Langkah 3: Buat layanan inferensi
Dalam contoh ini, model pelatihan scikit-learn digunakan untuk pengujian.
Gunakan kubectl untuk terhubung ke kluster ACK di bidang data. Kemudian, jalankan perintah berikut untuk membuat namespace guna menerapkan sumber daya KServe:
kubectl create namespace kserve-testBuat layanan inferensi.
Gunakan konten berikut untuk membuat file isvc.yaml:
apiVersion: "serving.kserve.io/v1beta1" kind: "InferenceService" metadata: name: "sklearn-iris" spec: predictor: model: modelFormat: name: sklearn storageUri: "gs://kfserving-examples/models/sklearn/1.0/model"Jalankan perintah berikut untuk membuat layanan sklearn-iris di namespace kserve-test:
kubectl apply -f isvc.yaml -n kserve-test
Jalankan perintah berikut untuk memeriksa apakah layanan sklearn-iris berhasil dibuat:
kubectl get inferenceservices sklearn-iris -n kserve-testOutput yang diharapkan:
NAME URL READY PREV LATEST PREVROLLEDOUTREVISION LATESTREADYREVISION AGE sklearn-iris http://sklearn-iris.kserve-test.example.com True 100 sklearn-iris-predictor-00001 3h26mNilai dari
READYadalahTrue, menunjukkan bahwa layanan sklearn-iris berhasil dibuat.(Opsional)Lihat layanan virtual dan gateway Istio.
Setelah layanan sklearn-iris dibuat, layanan virtual dan gateway Istio secara otomatis dibuat untuk model scikit-learn. Untuk melihat layanan virtual dan gateway Istio, lakukan langkah-langkah berikut:
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih .
Di halaman VirtualService, klik ikon
di sebelah Namespace dan pilih kserve-test dari daftar drop-down Namespace untuk melihat layanan virtual yang dibuat.Di panel navigasi kiri, pilih .
Di bagian atas halaman Gateway, pilih knative-serving dari daftar drop-down Namespace untuk melihat gateway Istio yang dibuat.
Langkah 4: Akses layanan yang disediakan oleh model scikit-learn
Berikut ini adalah langkah-langkah untuk mengakses layanan yang disediakan oleh model scikit-learn di sistem operasi Linux dan Mac.
Jalankan perintah berikut untuk membuat file input untuk model scikit-learn:
cat <<EOF > "./iris-input.json" { "instances": [ [6.8, 2.8, 4.8, 1.4], [6.0, 3.4, 4.5, 1.6] ] } EOFUji akses ke layanan yang disediakan oleh model scikit-learn melalui gateway ingress.
Jalankan perintah berikut untuk mendapatkan nilai SERVICE_HOSTNAME:
SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -n kserve-test -o jsonpath='{.status.url}' | cut -d "/" -f 3) echo $SERVICE_HOSTNAMEOutput yang diharapkan:
sklearn-iris.kserve-test.example.comJalankan perintah berikut untuk mengakses layanan. Pada langkah ini, atur ASM_GATEWAY ke alamat IP gateway ingress yang diperoleh di Langkah 2.
ASM_GATEWAY="XXXX" # Ganti XXXX dengan alamat IP gateway ingress ASM. curl -H "Host: ${SERVICE_HOSTNAME}" http://${ASM_GATEWAY}:80/v1/models/sklearn-iris:predict -d @./iris-input.jsonOutput yang diharapkan:
{"predictions": [1, 1]}
Uji performa layanan yang disediakan oleh model scikit-learn.
Jalankan perintah berikut untuk menerapkan aplikasi untuk uji stres:
kubectl create -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/kserve/v0.7/loadtest.yamlJalankan perintah berikut untuk memeriksa nama pod:
kubectl get podOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE load-testxhwtq-pj9fq 0/1 Completed 0 3m24s sklearn-iris-predictor-00001-deployment-857f9bb56c-vg8tf 2/2 Running 0 51mJalankan perintah berikut untuk melihat log hasil tes:
kubectl logs load-testxhwtq-pj9fq # Ganti nama pod dengan nama pod tempat aplikasi yang Anda terapkan untuk uji stres berjalan.Output yang diharapkan:
Requests [total, rate, throughput] 30000, 500.02, 500.01 Duration [total, attack, wait] 59.999s, 59.998s, 1.352ms Latencies [min, mean, 50, 90, 95, 99, max] 1.196ms, 1.463ms, 1.378ms, 1.588ms, 1.746ms, 2.99ms, 18.873ms Bytes In [total, mean] 690000, 23.00 Bytes Out [total, mean] 2460000, 82.00 Success [ratio] 100.00% Status Codes [code:count] 200:30000 Error Set:
Referensi
Jika Anda perlu mempercepat pemuatan model aplikasi intensif data, seperti aplikasi big data dan aplikasi AI, dalam skenario cloud-native, lihat Integrasi Fitur KServe pada ASM dengan Fluid untuk Mengimplementasikan AI Serving yang Mempercepat Akses Data.
Jika Anda perlu mentransformasi data input mentah menjadi format yang diperlukan oleh server model, lihat Gunakan InferenceService untuk Menerapkan Transformer.
Jika Anda menerapkan layanan model untuk kasus penggunaan kapasitas besar, kepadatan tinggi, dan sering berubah, Anda dapat menggunakan Model Service Mesh untuk mengelola, menerapkan, dan menjadwalkan beberapa layanan model. Untuk informasi lebih lanjut, lihat Model Service Mesh.