KServe, sebelumnya dikenal sebagai KFServing, adalah layanan model dan mesin inferensi untuk lingkungan cloud-native yang mendukung automatic scaling, scale-to-zero, serta canary deployment. Topik ini menjelaskan cara menggunakan Service Mesh (ASM) dan Arena untuk men-deploy model KServe sebagai layanan inferensi dalam mode serverless.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Kluster Container Service for Kubernetes (ACK) dengan node berakselerasi GPU
Instans ASM versi 1.17.2.7 atau lebih baru. Untuk informasi selengkapnya, lihat Buat instans ASM atau Tingkatkan instans ASM.
Komponen KServe terinstal. Untuk informasi selengkapnya, lihat Integrasikan KServe dengan ASM untuk mengimplementasikan layanan inferensi berdasarkan model AI cloud-native.
Klien Arena versi 0.9.11 atau lebih baru. Untuk informasi selengkapnya, lihat Konfigurasikan klien Arena.
Langkah 1: Siapkan data model
Gunakan NAS atau Object Storage Service (OSS) untuk menyimpan data model. Untuk informasi selengkapnya, lihat Pasang volume NAS yang disediakan secara statis dan Gunakan volume yang disediakan secara statis dengan ossfs 1.0. Topik ini menggunakan NAS sebagai contoh.
1.1 Dapatkan titik pemasangan NAS
Masuk ke Konsol File Storage NAS. Di panel navigasi kiri, pilih File System > File System List. Di bagian atas halaman, pilih wilayah tempat sistem file NAS berada.
Pada halaman File System List, klik ID sistem file yang ingin Anda kelola. Di halaman detail, klik Mount Targets. Arahkan penunjuk ke
di kolom Mount Target untuk melihat titik pemasangan tersebut. Catat titik pemasangan dan perintah mount untuk digunakan nanti.
1.2 Konfigurasikan PV dan PVC
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan lalu klik namanya. Di panel navigasi kiri, pilih Volumes > Persistent Volumes.
Di pojok kanan atas halaman Persistent Volumes, klik Create.
Pada dialog Create PV, konfigurasikan parameter berikut lalu klik Create untuk membuat persistent volume (PV) bernama training-data. Untuk parameter lainnya, lihat Pasang volume NAS yang disediakan secara statis.
Parameter Nilai PV Type NAS Volume Name training-data Mount Target Domain Name Pilih titik pemasangan dari langkah 1.1 Di panel navigasi kiri, pilih Volumes > Persistent Volume Claims. Pada halaman Persistent Volume Claims, klik Create di pojok kanan atas.
Pada dialog Create PVC, konfigurasikan parameter berikut lalu klik Create untuk membuat persistent volume claim (PVC) bernama training-data. Untuk parameter lainnya, lihat Pasang volume NAS yang disediakan secara statis.
Parameter Nilai PVC Type NAS Name training-data Allocation Mode Existing Volumes Existing Volumes Klik Select PV untuk memilih PV yang telah Anda buat
1.3 Unduh data model ke sistem file NAS
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster yang diinginkan. Di panel navigasi kiri, pilih Nodes > Nodes.
Pada halaman Nodes, klik ID instans node yang ingin Anda kelola. Di halaman Instance Details, klik More > Workbench Remote Access, lalu klik Log in.
Jalankan perintah mount dari langkah 1.1 untuk memasang sistem file NAS.
Unduh model
bloom-560mdari Hugging Face dan simpan di PVC pada pathpvc://training-data/bloom-560m.
Langkah 2: Deploy layanan inferensi
Periksa sumber daya GPU yang tersedia di kluster:
arena top nodeOutput yang diharapkan:
NAME IPADDRESS ROLE STATUS GPU(Total) GPU(Allocated) cn-beijing.192.1xx.x.xx 192.1xx.x.xx <none> Ready 0 0 cn-beijing.192.1xx.x.xx 192.1xx.x.xx <none> Ready 0 0 cn-beijing.192.1xx.x.xx 192.1xx.x.xx <none> Ready 0 0 cn-beijing.192.1xx.x.xx 192.1xx.x.xx <none> Ready 1 0 cn-beijing.192.1xx.x.xx 192.1xx.x.xx <none> Ready 1 0 --------------------------------------------------------------------------------------------------- Allocated/Total GPUs In Cluster: 0/2 (0.0%)Output menunjukkan dua node berakselerasi GPU tersedia.
Jalankan layanan inferensi bernama bloom-560m. PVC
training-datadipasang ke/mnt/modelsdi dalam kontainer, yaitu lokasi tempat model diunduh pada langkah 1.3.arena serve kserve \ --name=bloom-560m \ --image=ghcr.io/huggingface/text-generation-inference:1.0.2 \ --gpus=1 \ --cpu=6 \ --memory=20Gi \ --port=8080 \ --env=STORAGE_URI=pvc://training-data \ "text-generation-launcher --disable-custom-kernels --model-id /mnt/models/bloom-560m --num-shard 1 -p 8080"Output yang diharapkan:
inferenceservice.serving.kserve.io/bloom-560m created INFO[0013] The Job bloom-560m has been submitted successfully INFO[0013] You can run `arena serve get bloom-560m --type kserve -n default` to check the job statusTabel berikut menjelaskan parameter-parameter tersebut.
Parameter Wajib Deskripsi --nameYa Nama pekerjaan yang dikirimkan. Harus unik secara global. --imageYa Alamat gambar kontainer untuk layanan inferensi. --gpusTidak Jumlah GPU yang dibutuhkan. Nilai default: 0. --cpuTidak Jumlah CPU yang dibutuhkan. --memoryTidak Jumlah memori yang dibutuhkan. --portTidak Port yang diekspos untuk akses eksternal. --envTidak Variabel lingkungan dalam bentuk pasangan kunci-nilai. Pada contoh ini, STORAGE_URIdiatur agar mengarah ke PVC tempat model disimpan.
Langkah 3: Verifikasi layanan inferensi
Periksa status penerapan layanan inferensi KServe:
arena serve get bloom-560mOutput yang diharapkan:
Name: bloom-560m Namespace: default Type: KServe Version: 00001 Desired: 1 Available: 1 Age: 9m Address: http://bloom-560m.default.example.com Port: :80 GPU: 1 LatestRevision: bloom-560m-predictor-00001 LatestPrecent: 100 Instances: NAME STATUS AGE READY RESTARTS GPU NODE ---- ------ --- ----- -------- --- ---- bloom-560m-predictor-00001-deployment-ff4c49bf6-twrlp Running 9m 2/2 0 1 cn-hongkong.192.1xx.x.xxxOutput tersebut mengonfirmasi bahwa layanan inferensi telah diterapkan. Alamat akses model adalah
http://bloom-560m.default.example.com.Dapatkan alamat IP gerbang masuk ASM. Untuk informasi selengkapnya, lihat Langkah 2: Dapatkan alamat IP gerbang masuk ASM.
Kirim permintaan uji ke layanan inferensi menggunakan alamat IP gerbang masuk ASM:
# Ganti ${ASM_GATEWAY} dengan alamat IP gerbang masuk ASM. curl -H "Host: bloom-560m.default.example.com" http://${ASM_GATEWAY}:80/generate \ -X POST \ -d '{"inputs":"What is Deep Learning?","parameters":{"max_new_tokens":17}}' \ -H 'Content-Type: application/json'Output yang diharapkan:
{"generated_text":" Deep Learning is a new type of machine learning that is used to solve complex problems."}
Langkah 4: Perbarui layanan inferensi
Gunakan canary deployment untuk mengalihkan trafik secara bertahap ke versi model baru sebelum beralih sepenuhnya.
Buat versi baru model dan salin file model di PVC ke path baru
bloom-560m-v2.Deploy versi baru dengan 10% trafik dialihkan ke versi tersebut:
arena serve update kserve \ --name bloom-560m \ --canary-traffic-percent=10 \ "text-generation-launcher --disable-custom-kernels --model-id /mnt/models/bloom-560m-v2 --num-shard 1 -p 8080"Periksa status layanan inferensi:
arena serve get bloom-560mOutput yang diharapkan:
Name: bloom-560m Namespace: default Type: KServe Version: 00002 Desired: 2 Available: 2 Age: 36m Address: http://bloom-560m.default.example.com Port: :80 GPU: 2 LatestRevision: bloom-560m-predictor-00002 LatestPrecent: 10 PrevRevision: bloom-560m-predictor-00001 PrevPrecent: 90 Instances: NAME STATUS AGE READY RESTARTS GPU NODE ---- ------ --- ----- -------- --- ---- bloom-560m-predictor-00001-deployment-ff4c49bf6-twrlp Running 36m 2/2 0 1 cn-hongkong.192.1xx.x.xxx bloom-560m-predictor-00002-deployment-5b7bb66cfb-nqprp Running 6m 2/2 0 1 cn-hongkong.192.1xx.x.xxxOutput tersebut menunjukkan 10% trafik dialihkan ke
bloom-560m-predictor-00002(versi baru) dan 90% kebloom-560m-predictor-00001(versi sebelumnya).Setelah versi baru lolos pengujian, alihkan seluruh trafik ke versi tersebut:
arena serve update kserve \ --name bloom-560m \ --canary-traffic-percent=100
(Opsional) Langkah 5: Hapus layanan inferensi
Hapus layanan inferensi untuk melepaskan semua sumber daya GPU dan komputasi:
arena serve delete bloom-560m