KServe, sebelumnya dikenal sebagai KFServing, adalah layanan model AI dan mesin inferensi untuk lingkungan cloud-native. Fitur ini mendukung penskalaan otomatis, skala ke nol, dan penyebaran canary. Service Mesh (ASM) mengintegrasikan kemampuan komponen Knative Serving yang diterapkan di kluster Container Service for Kubernetes (ACK) atau kluster serverless Kubernetes (ASK). Selain itu, ASM menyediakan fitur KServe pada ASM agar Anda dapat mengintegrasikan KServe dengan ASM untuk AI Serving hanya dengan beberapa klik. Fluid adalah orkestrator dataset terdistribusi Kubernetes-native open source dan akselerator untuk aplikasi intensif data dalam skenario cloud-native, seperti aplikasi big data dan aplikasi AI. Anda dapat langsung mengintegrasikan Fluid dengan fitur KServe pada ASM untuk mempercepat pemuatan model. Topik ini menjelaskan cara mengintegrasikan fitur KServe pada ASM dengan Fluid untuk mengimplementasikan AI Serving yang mempercepat akses data.
Prasyarat
Instance ASM versi 1.17 atau lebih baru telah dibuat, dan kluster Kubernetes telah ditambahkan ke instance ASM. Untuk informasi lebih lanjut, lihat Buat Instance ASM dan Tambahkan Kluster ke Instance ASM.
CatatanUntuk informasi lebih lanjut tentang cara memperbarui instance ASM, lihat Perbarui Instance ASM.
Untuk kluster Kubernetes:
Jika kluster ACK digunakan, versi kluster harus 1.22 atau lebih baru. Untuk informasi lebih lanjut, lihat Buat Kluster ACK Managed atau Perbarui Kluster ACK. Jika Anda menggunakan unit pemrosesan grafis (GPU) untuk AI Serving, pastikan bahwa kluster ACK berisi node yang dipercepat GPU, seperti ecs.gn6i-c16g1.4xlarge.
Jika kluster ASK digunakan, versi kluster harus 1.18 atau lebih baru, dan komponen CoreDNS harus diinstal di kluster. Untuk informasi lebih lanjut, lihat Buat Kluster ACK Serverless dan Kelola Komponen Sistem.
Fitur menggunakan API Kubernetes kluster pada bidang data untuk mengakses sumber daya Istio diaktifkan untuk instance ASM. Untuk informasi lebih lanjut, lihat Gunakan API Kubernetes Kluster pada Bidang Data untuk Mengakses Sumber Daya Istio.
Gateway ingress dibuat untuk kluster. Dalam contoh ini, gateway ingress ASM dibuat untuk kluster. Gateway ingress ASM menggunakan nama default ingressgateway, dan port 80 dan 443 diekspos. Untuk informasi lebih lanjut, lihat Buat Gateway Ingress.
Komponen Knative Serving diterapkan di kluster ACK atau ASK dan fitur Knative pada ASM diaktifkan. Untuk informasi lebih lanjut, lihat Gunakan Knative pada ASM untuk Menerapkan Aplikasi Serverless.
Object Storage Service (OSS) diaktifkan, dan bucket dibuat. Untuk informasi lebih lanjut, lihat Aktifkan OSS dan Buat Bucket.
Langkah 1: Aktifkan fitur KServe pada ASM
Masuk ke Konsol ASM. Di panel navigasi di sebelah kiri, pilih .
Pada halaman Mesh Management, klik nama instance ASM. Di panel navigasi di sebelah kiri, pilih .
Pada halaman KServe pada ASM, aktifkan atau nonaktifkan saklar Automatically install the CertManager component in the cluster dan klik Aktifkan KServe pada ASM.
Cert-manager adalah sistem manajemen siklus hidup sertifikat yang dapat digunakan untuk menerbitkan dan menerapkan sertifikat. Penyebaran dan penggunaan fitur KServe pada ASM bergantung pada komponen CertManager. Saat Anda menginstal KServe, komponen CertManager secara otomatis diinstal.
Jika Anda belum menginstal CertManager di kluster, aktifkan Automatically install the CertManager component in the cluster.
Jika Anda telah menginstal CertManager di kluster pada bidang data, nonaktifkan Automatically install the CertManager component in the cluster.
Langkah 2: Instal komponen ack-fluid dan aktifkan caching dan akselerasi model AI
Terapkan komponen ack-fluid versi 0.9.10 atau lebih baru di kluster.
Jika kluster pada bidang data adalah kluster ACK, instal suite AI cloud-native dan terapkan komponen ack-fluid di kluster.
CatatanJika Anda telah menginstal Fluid open source, Anda harus mencopot pemasangannya sebelum dapat menginstal komponen ack-fluid.
Jika Anda belum menginstal suite AI cloud-native, aktifkan Fluid acceleration saat Anda menginstal suite. Untuk informasi lebih lanjut, lihat Terapkan Suite AI Cloud-Native.
Jika Anda telah menginstal suite AI cloud-native, masuk ke Konsol ACK, klik kluster yang diinginkan, dan pilih untuk menerapkan komponen ack-fluid.
Jika kluster pada bidang data adalah kluster ASK, terapkan komponen ack-fluid di kluster. Untuk informasi lebih lanjut, lihat bagian Terapkan Komponen Bidang Kontrol Fluid dari topik Percepat Jobs.
Siapkan model AI dan unggah ke bucket OSS.
Siapkan AI SavedModel.
Topik ini menggunakan model BLOOM, yang merupakan model transformer bahasa besar (LLM) open source berbasis PyTorch. Untuk informasi lebih lanjut tentang data model, lihat Hugging Face.
Unggah file data model yang diunduh ke bucket OSS dan catat lokasi penyimpanan file data model.
Format lokasi penyimpanan adalah
oss://{bucket}/{path}. Sebagai contoh, jika Anda membuat bucket bernama fluid-demo dan mengunggah semua file data model ke direktorimodels/bloomdi bucket, lokasi penyimpanan file data model adalahoss://fluid-demo/models/bloom.CatatanAnda dapat menggunakan alat ossutil yang disediakan oleh OSS untuk mengunggah data. Untuk informasi lebih lanjut, lihat Instal ossutil.
Buat namespace untuk menerapkan cache Fluid dan AI Serving, dan konfigurasikan izin akses OSS.
Gunakan kubectl untuk terhubung ke kluster pada bidang data. Untuk informasi lebih lanjut, lihat Hubungkan ke Kluster ACK Menggunakan kubectl.
Jalankan perintah berikut untuk membuat namespace bernama
kserve-fluid-demountuk menerapkan cache Fluid dan AI Serving berbasis KServe:kubectl create ns kserve-fluid-demoBuat file bernama oss-secret.yaml dan salin konten berikut ke file tersebut.
fs.oss.accessKeyIdadalah ID AccessKey akun yang dapat mengakses OSS, danfs.oss.accessKeySecretadalah rahasia AccessKey akun tersebut.apiVersion: v1 kind: Secret metadata: name: access-key stringData: fs.oss.accessKeyId: xxx # Ganti nilainya dengan ID AccessKey akun Alibaba Cloud yang dapat mengakses OSS. fs.oss.accessKeySecret: xxx # Ganti nilainya dengan rahasia AccessKey akun Alibaba Cloud.Jalankan perintah berikut untuk menerapkan pasangan OSS AccessKey:
kubectl apply -f oss-secret.yaml -n kserve-fluid-demo
Deklarasikan data model AI yang ingin Anda akses di Fluid.
Anda harus mengirimkan Dataset custom resource (CR) dan JindoRuntime CR. Dataset CR menggambarkan URL data di sistem penyimpanan eksternal. JindoRuntime CR menggambarkan sistem cache dan konfigurasi spesifiknya.
Buat file bernama oss-jindo.yaml dan salin konten berikut ke file tersebut.
Di Dataset CR, ganti
oss://{bucket}/{path}dengan lokasi penyimpanan file data model yang dicatat di langkah 2.b dan ganti{endpoint}dengan endpoint yang dapat digunakan untuk mengakses OSS. Untuk informasi lebih lanjut tentang endpoint yang dapat digunakan untuk mengakses OSS di berbagai wilayah, lihat Wilayah dan Endpoint.Jalankan perintah berikut untuk menerapkan Dataset CR dan JindoRuntime CR:
kubectl create -f oss-jindo.yaml -n kserve-fluid-demoJalankan perintah berikut untuk memeriksa penerapan Dataset CR dan JindoRuntime CR:
kubectl get jindoruntime,dataset -n kserve-fluid-demoOutput yang Diharapkan:
NAME MASTER PHASE WORKER PHASE FUSE PHASE AGE jindoruntime.data.fluid.io/oss-data Ready Ready Ready 3m NAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGE dataset.data.fluid.io/oss-data 3.14GiB 0.00B 100.00GiB 0.0% Bound 3mOutput menunjukkan bahwa
PHASEdari Dataset CR adalahBounddanFUSE PHASEdari JindoRuntime CR adalahReady. Ini menunjukkan bahwa Dataset CR dan JindoRuntime CR telah diterapkan.
Prefetch data di Fluid untuk meningkatkan kinerja akses data.
Buat file bernama oss-dataload.yaml dan salin konten berikut ke file tersebut:
apiVersion: data.fluid.io/v1alpha1 kind: DataLoad metadata: name: oss-dataload spec: dataset: name: oss-data namespace: kserve-fluid-demo target: - path: /bloom-560m replicas: 2Jalankan perintah berikut untuk menerapkan Dataload untuk prefetch data:
kubectl create -f oss-dataload.yaml -n kserve-fluid-demoJalankan perintah berikut untuk memeriksa kemajuan prefetch data:
kubectl get dataload -n kserve-fluid-demoOutput yang Diharapkan:
NAME DATASET PHASE AGE DURATION oss-dataload oss-data Complete 1m 45sOutput menunjukkan bahwa prefetch data membutuhkan waktu sekitar
45s. Anda perlu menunggu hingga data diprefetch.
Langkah 3: Terapkan layanan inferensi berdasarkan model AI
Buat file bernama oss-fluid-isvc.yaml dan salin konten berikut ke file berdasarkan kluster Anda.
Kluster ACK
apiVersion: "serving.kserve.io/v1beta1" kind: "InferenceService" metadata: name: "fluid-bloom" spec: predictor: timeout: 600 minReplicas: 0 containers: - name: kserve-container image: registry.cn-hangzhou.aliyuncs.com/acs/kserve-fluid:bloom-gpu resources: limits: cpu: "12" memory: 48Gi nvidia.com/gpu: 1 # Jika GPU digunakan, atur nilai menjadi jumlah GPU yang diperlukan. Jika tidak, Anda tidak perlu mengatur nilai ini. requests: cpu: "12" memory: 48Gi env: - name: STORAGE_URI value: "pvc://oss-data/bloom-560m" - name: MODEL_NAME value: "bloom" # Atur parameter ini ke True jika GPU digunakan. Jika tidak, atur parameter ini ke False. - name: GPU_ENABLED value: "True"Kluster ASK
apiVersion: "serving.kserve.io/v1beta1" kind: "InferenceService" metadata: name: "fluid-bloom" labels: alibabacloud.com/fluid-sidecar-target: "eci" annotations: k8s.aliyun.com/eci-use-specs : "ecs.gn6i-c16g1.4xlarge" # Ganti nilainya dengan spesifikasi Instance Elastic Compute Service (ECS) yang digunakan. knative.aliyun.com/reserve-instance-eci-use-specs: "ecs.gn6i-c16g1.4xlarge" # Ganti nilainya dengan spesifikasi Instance ECS yang digunakan. spec: predictor: timeout: 600 minReplicas: 0 containers: - name: kserve-container image: registry.cn-hangzhou.aliyuncs.com/acs/kserve-fluid:bloom-gpu resources: limits: cpu: "12" memory: 48Gi requests: cpu: "12" memory: 48Gi env: - name: STORAGE_URI value: "pvc://oss-data/bloom-560m" - name: MODEL_NAME value: "bloom" # Atur parameter ini ke True jika GPU digunakan. Jika tidak, atur parameter ini ke False. - name: GPU_ENABLED value: "True"CatatanDalam topik ini, LLM digunakan. Oleh karena itu, sumber daya 12 core dan 48 Gi diterapkan. Modifikasi bidang
resourcesdariInferenceServiceberdasarkan beban kluster Anda.Dalam contoh ini, bidang
imagediatur keregistry.cn-hangzhou.aliyuncs.com/acs/kserve-fluid:bloom-gpugambar contoh. Gambar ini menyediakan antarmuka untuk memuat model dan layanan inferensi. Anda dapat melihat kode gambar contoh ini di komunitas open source KServe dan menyesuaikan gambar. Untuk informasi lebih lanjut, lihat Docker.
Jalankan perintah berikut untuk menerapkan layanan inferensi berdasarkan model AI:
kubectl create -f oss-fluid-isvc.yaml -n kserve-fluid-demoJalankan perintah berikut untuk memeriksa penerapan layanan inferensi berdasarkan model AI:
kubectl get inferenceservice -n kserve-fluid-demoOutput yang Diharapkan:
NAME URL READY PREV LATEST PREVROLLEDOUTREVISION LATESTREADYREVISION AGE fluid-bloom http://fluid-bloom.kserve-fluid-demo.example.com True 100 fluid-bloom-predictor-00001 2dDalam output, bidang
READYadalahTrue, yang menunjukkan bahwa layanan inferensi berdasarkan model AI telah diterapkan.
Langkah 4: Akses layanan inferensi berdasarkan model AI
Peroleh alamat gateway ingress ASM.
Masuk ke Konsol ASM. Di panel navigasi di sebelah kiri, pilih .
Pada halaman Mesh Management, klik nama instance ASM. Di panel navigasi di sebelah kiri, pilih .
Di bagian Alamat Layanan dari ingressgateway, lihat dan peroleh alamat layanan gateway ASM.
Jalankan perintah berikut untuk mengakses layanan inferensi fluid-bloom berdasarkan model AI contoh dan ganti alamat layanan gateway ASM dengan alamat yang Anda peroleh di sublangkah 1:
curl -v -H "Content-Type: application/json" -H "Host: fluid-bloom.kserve-fluid-demo.example.com" "http://{alamat layanan gateway ASM}:80/v1/models/bloom:predict" -d '{"prompt": "It was a dark and stormy night", "result_length": 50}'Output yang Diharapkan:
* Mencoba xxx.xx.xx.xx :80... * Terhubung ke xxx.xx.xx.xx (xxx.xx.xx.xx ) port 80 (#0) > POST /v1/models/bloom:predict HTTP/1.1 > Host: fluid-bloom-predictor.kserve-fluid-demo.example.com > User-Agent: curl/7.84.0 > Accept: */* > Content-Type: application/json > Content-Length: 65 > * Tandai bundel sebagai tidak mendukung multiuse < HTTP/1.1 200 OK < content-length: 227 < content-type: application/json < date: Thu, 20 Apr 2023 09:49:00 GMT < server: istio-envoy < x-envoy-upstream-service-time: 1142 < { "result": "It was a dark and stormy night, and the wind was blowing in the\ndirection of the west. The wind was blowing in the direction of the\nwest, and the wind was blowing in the direction of the west. The\nwind was" } * Koneksi # 0 ke host xxx.xx.xx.xx dibiarkan utuhOutput menunjukkan bahwa layanan inferensi berdasarkan model AI memperbarui input contoh dan hasil inferensi dikembalikan.