KServe menyediakan serangkaian metrik Prometheus bawaan untuk membantu Anda memantau kinerja dan kondisi layanan model. Topik ini menggunakan model Qwen-7B-Chat-Int8 pada GPU NVIDIA V100 sebagai contoh untuk menunjukkan cara mengonfigurasi pemantauan Prometheus untuk kerangka kerja KServe.
Prasyarat
Klien Arena versi 0.9.15 atau yang lebih baru telah diinstal. Untuk informasi selengkapnya, lihat Konfigurasikan klien Arena.
Komponen ack-kserve telah diinstal. Untuk informasi selengkapnya, lihat Instal komponen ack-kserve.
Komponen Pemantauan Prometheus Alibaba Cloud telah diaktifkan. Untuk informasi selengkapnya, lihat Aktifkan Pemantauan Prometheus Alibaba Cloud.
Langkah 1: Terapkan aplikasi KServe
Jalankan perintah berikut untuk menerapkan aplikasi KServe untuk Scikit-learn.
arena serve kserve \ --name=sklearn-iris \ --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/ai-sample/kserve-sklearn-server:v0.12.0 \ --cpu=1 \ --memory=200Mi \ --enable-prometheus=true \ --metrics-port=8080 \ "python -m sklearnserver --model_name=sklearn-iris --model_dir=/models --http_port=8080"Keluaran yang diharapkan:
service/sklearn-iris-metric-svc created # Layanan bernama sklearn-iris-metric-svc dibuat. inferenceservice.serving.kserve.io/sklearn-iris created # Sumber daya KServe InferenceService sklearn-iris dibuat. servicemonitor.monitoring.coreos.com/sklearn-iris-svcmonitor created # Sumber daya ServiceMonitor dibuat untuk mengintegrasikan dengan sistem pemantauan Prometheus dan mengumpulkan data pemantauan yang dipublikasikan oleh layanan sklearn-iris-metric-svc. INFO[0004] The Job sklearn-iris has been submitted successfully # Tugas telah dikirim ke kluster. INFO[0004] You can run `arena serve get sklearn-iris --type kserve -n default` to check the job statusKeluaran tersebut menunjukkan bahwa Arena berhasil memulai penerapan layanan KServe yang menggunakan model scikit-learn dan telah mengintegrasikan pemantauan Prometheus.
Jalankan perintah berikut untuk membuat file
./iris-input.jsondengan konten JSON berikut. File ini digunakan untuk permintaan masukan inferensi.cat <<EOF > "./iris-input.json" { "instances": [ [6.8, 2.8, 4.8, 1.4], [6.0, 3.4, 4.5, 1.6] ] } EOFJalankan perintah berikut untuk mengambil alamat IP gerbang NGINX Ingress dan hostname untuk URL InferenceService dari kluster.
NGINX_INGRESS_IP=`kubectl -n kube-system get svc nginx-ingress-lb -ojsonpath='{.status.loadBalancer.ingress[0].ip}'` SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -o jsonpath='{.status.url}' | cut -d "/" -f 3)Jalankan perintah berikut untuk menggunakan alat uji stres Hey guna mengakses layanan beberapa kali dan menghasilkan data pemantauan.
CatatanUntuk informasi selengkapnya tentang alat uji stres Hey, lihat Hey.
hey -z 2m -c 20 -m POST -host $SERVICE_HOSTNAME -H "Content-Type: application/json" -D ./iris-input.json http://${NGINX_INGRESS_IP}:80/v1/models/sklearn-iris:predictKeluaran yang diharapkan:
Keluaran tersebut merangkum kinerja sistem selama pengujian, mencakup metrik utama seperti kecepatan pemrosesan, throughput data, dan latensi tanggapan, sehingga membantu Anda mengevaluasi efisiensi dan stabilitas sistem.
(Opsional) Ambil metrik aplikasi secara manual untuk memastikan bahwa metrik tersebut dipublikasikan dengan benar.
Langkah-langkah berikut menjelaskan cara mengumpulkan metrik pemantauan dari Pod tertentu yang terkait dengan
sklearn-irisdi kluster ACK dan melihat datanya di host lokal Anda tanpa perlu masuk ke Pod atau mengekspos port Pod ke jaringan eksternal.Jalankan perintah berikut untuk meneruskan port 8080 Pod yang namanya mengandung `sklearn-iris` ke port 8080 host lokal Anda. Nama Pod ditentukan oleh variabel
$POD_NAME. Permintaan yang dikirim ke port 8080 host lokal akan diteruskan secara transparan ke port 8080 Pod tersebut.# Dapatkan nama Pod. POD_NAME=`kubectl get po|grep sklearn-iris |awk -F ' ' '{print $1}'` # Teruskan port 8080 Pod ke host lokal menggunakan port-forward. kubectl port-forward pod/$POD_NAME 8080:8080Keluaran yang diharapkan:
Forwarding from 127.0.0.1:8080 -> 8080 Forwarding from [::1]:8080 -> 8080Keluaran tersebut menunjukkan bahwa koneksi ke host lokal melalui IPv4 dan IPv6 diteruskan dengan benar ke port 8080 Pod.
Buka browser, lalu masukkan URL berikut untuk mengakses port 8080 Pod dan melihat metriknya.
http://localhost:8080/metricsKeluaran yang diharapkan:
Keluaran tersebut menampilkan berbagai metrik kinerja dan status dari aplikasi dalam Pod, yang mengonfirmasi bahwa permintaan berhasil diteruskan ke layanan aplikasi dalam Pod.
Langkah 2: Kueri metrik aplikasi KServe
Masuk ke Konsol ARMS.
Pada panel navigasi sebelah kiri, klik Provisioning, lalu klik Query Dashboards.
Pada halaman Dashboard List, klik dasbor Kubernetes Pod untuk membuka halaman Grafana.
Pada panel navigasi sebelah kiri, klik Explore, lalu masukkan pernyataan pencarian
request_predict_seconds_bucketuntuk mengkueri nilai metrik aplikasi.CatatanPengumpulan data memiliki penundaan sekitar 5 menit.

FAQ dan solusi
FAQ
Bagaimana cara memastikan bahwa data untuk metrik request_predict_seconds_bucket berhasil dikumpulkan?
Solusi
Masuk ke Konsol ARMS.
Pada halaman Provisioned Environments, klik tab Container Environment. Klik nama lingkungan kontainer target, lalu klik tab Self-monitoring.
Pada panel navigasi sebelah kiri, klik Targets. Jika `default/sklearn-iris-svcmonitor/0 (1/1 up)` ditampilkan, berarti data metrik sedang dikumpulkan dengan sukses.
Referensi
Untuk informasi selengkapnya tentang metrik bawaan yang disediakan oleh kerangka kerja KServe, lihat dokumen komunitas KServe Metrik Prometheus KServe.