All Products
Search
Document Center

Alibaba Cloud Service Mesh:Mempercepat penyajian model AI dengan KServe di ASM dan Fluid

Last Updated:Mar 11, 2026

KServe, sebelumnya dikenal sebagai KFServing, adalah layanan model AI dan mesin inferensi untuk lingkungan cloud-native yang mendukung autoscaling, scale-to-zero, serta canary deployment. Service Mesh (ASM) mengintegrasikan kemampuan Knative Serving yang diterapkan di kluster ACK atau ACK Serverless dan menyediakan fitur KServe on ASM untuk integrasi KServe satu klik. Fluid adalah orchestrator dataset terdistribusi open source berbasis Kubernetes dan akselerator untuk aplikasi intensif data dalam skenario cloud-native, seperti big data dan AI. Anda dapat langsung mengintegrasikan Fluid dengan fitur KServe on ASM untuk mempercepat pemuatan model.

Topik ini menjelaskan langkah-langkah mengintegrasikan KServe on ASM dengan Fluid guna menerapkan layanan inferensi AI yang didukung oleh Object Storage Service (OSS).

Cara kerja

Integrasi ini menghubungkan tiga komponen:

  1. Fluid menyimpan cache file model dari bucket OSS ke penyimpanan SSD lokal di seluruh node kluster. Resource kustom (CR) JindoRuntime mengelola cache terdistribusi tersebut, sedangkan CR DataLoad melakukan prefetch data sebelum pod inferensi dimulai.

  2. KServe on ASM menerapkan CR InferenceService yang mereferensikan data yang telah di-cache melalui persistent volume claim (PVC). Kontainer inferensi memuat model dari titik mount yang dikelola Fluid, bukan mengunduhnya dari OSS.

  3. Service Mesh (ASM) mengarahkan lalu lintas melalui gerbang masuk (ingress gateway) ke layanan inferensi KServe. Knative Serving menangani autoscaling dan scale-to-zero.

Ketika permintaan tiba dan Knative menskalakan pod dari nol, model sudah tersedia di cache lokal. Pod tersebut langsung dimulai dan melayani prediksi tanpa perlu mengunduh dari jarak jauh.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Terapkan komponen Knative Serving

Catatan

Jika Anda memilih Kourier sebagai gerbang saat instalasi Knative, uninstal setelah instalasi selesai. Di Konsol ACK, buka Clusters, klik kluster Anda, lalu pilih Applications > Knative. Pada tab Components, uninstal Kourier di bagian Add-on Component.

Mengaktifkan Knative pada ASM

  1. Login ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

  2. Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih Ecosystem > Knative on ASM.

  3. Di halaman Knative on ASM, klik Enable Knative on ASM.

Catatan

Untuk memperbarui instans ASM yang sudah ada, lihat Perbarui instans ASM.

Langkah 1: Aktifkan KServe on ASM

  1. Login ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

  2. Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih Ecosystem > KServe on ASM.

  3. Pada halaman KServe on ASM, konfigurasikan opsi CertManager lalu klik Enable KServe on ASM. KServe bergantung pada cert-manager untuk manajemen siklus hidup sertifikat. Komponen CertManager akan diinstal secara otomatis bersama KServe.

    • Jika CertManager belum diinstal di kluster, aktifkan Automatically install the CertManager component in the cluster.

    • Jika CertManager sudah diinstal di kluster, nonaktifkan Automatically install the CertManager component in the cluster.

Langkah 2: Instal Fluid dan siapkan caching model

Instal komponen ack-fluid

Terapkan komponen ack-fluid (versi 0.9.10 atau lebih baru) di kluster bidang data.

Untuk kluster ACK, instal suite AI cloud-native dan terapkan komponen ack-fluid:

  • Jika suite AI cloud-native belum diinstal, aktifkan Fluid acceleration selama instalasi. Untuk informasi lebih lanjut, lihat Terapkan suite AI cloud-native.

  • Jika suite AI cloud-native sudah diinstal, login ke Konsol Container Service for Kubernetes, klik kluster tersebut, lalu pilih Applications > Cloud-native AI Suite untuk menerapkan komponen ack-fluid.

Catatan

Uninstal Fluid open source sebelum menginstal komponen ack-fluid. Keduanya tidak dapat berjalan bersamaan.

Untuk kluster ACK Serverless, lihat bagian Terapkan komponen lapisan kontrol Fluid pada topik Accelerate Jobs.

Unggah model AI ke OSS

Tutorial ini menggunakan model BLOOM-560m, sebuah LLM Transformer open source berbasis PyTorch.

  1. Unduh file model dari Hugging Face.

  2. Unggah file tersebut ke bucket OSS Anda dan catat jalur penyimpanannya.

    Format jalurnya adalah oss://<bucket>/<path>. Misalnya, jika bucket-nya adalah fluid-demo dan file-nya berada di direktori models/bloom, maka jalur penyimpanannya adalah oss://fluid-demo/models/bloom.

Catatan

Gunakan ossutil untuk mengunggah file. Untuk informasi lebih lanjut, lihat Instal ossutil.

Buat namespace dan konfigurasikan akses OSS

  1. Hubungkan ke kluster bidang data dengan kubectl. Untuk informasi lebih lanjut, lihat Hubungkan ke kluster ACK menggunakan kubectl.

  2. Buat namespace untuk cache Fluid dan beban kerja inferensi:

       kubectl create ns kserve-fluid-demo
  3. Buat file bernama oss-secret.yaml dengan konten berikut:

    Ganti placeholder berikut dengan nilai aktual:

    PlaceholderDescriptionExample
    <your-access-key-id>ID AccessKey dari Akun Alibaba Cloud dengan akses OSSLTAI5tXxx
    <your-access-key-secret>Rahasia AccessKey dari akun tersebutxXxXxXx
       apiVersion: v1
       kind: Secret
       metadata:
         name: access-key
       stringData:
         fs.oss.accessKeyId: <your-access-key-id>       # ID AccessKey dari akun dengan akses OSS
         fs.oss.accessKeySecret: <your-access-key-secret> # Rahasia AccessKey dari akun tersebut
  4. Terapkan Secret:

       kubectl apply -f oss-secret.yaml -n kserve-fluid-demo

Deklarasikan data model di Fluid

Kirimkan CR Dataset dan CR JindoRuntime untuk mendeklarasikan data model. Dataset menggambarkan lokasi penyimpanan jarak jauh. JindoRuntime mengonfigurasi sistem cache dan konfigurasi spesifiknya.

  1. Buat file bernama oss-jindo.yaml dengan konten berikut.

    Ganti placeholder berikut dengan nilai aktual. Untuk daftar endpoint yang tersedia, lihat Wilayah dan endpoint.

    PlaceholderDescriptionExample
    <bucket>/<path>Jalur penyimpanan OSS untuk file modelfluid-demo/models/bloom
    <endpoint>Endpoint OSS untuk wilayah tempat bucket beradaoss-cn-hangzhou-internal.aliyuncs.com

    Tabel berikut menjelaskan parameter konfigurasi JindoRuntime:

    ParameterValueDescription
    replicas2Jumlah replika worker cache
    mediumtypeSSDMedia penyimpanan untuk cache lokal
    quota50GiKapasitas cache maksimum per node worker
    high / low0.95 / 0.7Watermark eviksi cache (high memicu eviksi, low adalah target)
    cleanPolicyOnDemandKebijakan pembersihan sidecar Fuse

    Klik untuk melihat isi oss-jindo.yaml

       apiVersion: data.fluid.io/v1alpha1
       kind: Dataset
       metadata:
         name: oss-data
       spec:
         mounts:
         - mountPoint: "oss://<bucket>/<path>"  # Jalur penyimpanan file model
           name: bloom-560m
           path: /bloom-560m
           options:
             fs.oss.endpoint: "<endpoint>"      # Endpoint OSS untuk wilayah Anda
           encryptOptions:
             - name: fs.oss.accessKeyId
               valueFrom:
                 secretKeyRef:
                   name: access-key
                   key: fs.oss.accessKeyId
             - name: fs.oss.accessKeySecret
               valueFrom:
                 secretKeyRef:
                   name: access-key
                   key: fs.oss.accessKeySecret
         accessModes:
           - ReadOnlyMany
       ---
       apiVersion: data.fluid.io/v1alpha1
       kind: JindoRuntime
       metadata:
         name: oss-data
       spec:
         replicas: 2
         tieredstore:
           levels:
             - mediumtype: SSD
               volumeType: emptyDir
               path: /mnt/ssd0/cache
               quota: 50Gi
               high: "0.95"
               low: "0.7"
         fuse:
           properties:
             fs.jindofsx.data.cache.enable: "true"
           args:
             - -okernel_cache
             - -oro
             - -oattr_timeout=7200
             - -oentry_timeout=7200
             - -ometrics_port=9089
           cleanPolicy: OnDemand
  2. Terapkan Dataset dan JindoRuntime:

       kubectl create -f oss-jindo.yaml -n kserve-fluid-demo
  3. Verifikasi penerapan:

       kubectl get jindoruntime,dataset -n kserve-fluid-demo

    Output 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   3m

    PHASE Dataset menunjukkan Bound dan FUSE PHASE JindoRuntime menunjukkan Ready, yang mengonfirmasi penerapan berhasil.

Pra-ambil data model

Prefetching memuat file model ke cache lokal sebelum pod inferensi dimulai, sehingga menghilangkan latensi unduhan jarak jauh saat startup pod.

  1. Buat file bernama oss-dataload.yaml dengan konten berikut:

       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: 2
  2. Terapkan DataLoad:

       kubectl create -f oss-dataload.yaml -n kserve-fluid-demo
  3. Periksa progres prefetch:

       kubectl get dataload -n kserve-fluid-demo

    Output yang diharapkan:

       NAME           DATASET    PHASE      AGE     DURATION
       oss-dataload   oss-data   Complete   1m      45s

    Tunggu hingga PHASE menunjukkan Complete sebelum melanjutkan ke langkah berikutnya.

Langkah 3: Terapkan layanan inferensi

  1. Buat file bernama oss-fluid-isvc.yaml dengan konfigurasi InferenceService yang sesuai dengan jenis 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  # Jumlah GPU yang diperlukan. Hapus baris ini jika tidak menggunakan GPU.
                 requests:
                   cpu: "12"
                   memory: 48Gi
               env:
                 - name: STORAGE_URI
                   value: "pvc://oss-data/bloom-560m"
                 - name: MODEL_NAME
                   value: "bloom"
                 - name: GPU_ENABLED
                   value: "True"  # Atur ke "False" jika tidak menggunakan GPU.

    Kluster ACK Serverless

       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"  # Tipe instans ECS
           knative.aliyun.com/reserve-instance-eci-use-specs: "ecs.gn6i-c16g1.4xlarge"  # Tipe instans ECS
       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"
                 - name: GPU_ENABLED
                   value: "True"  # Atur ke "False" jika tidak menggunakan GPU.

    Tabel berikut menjelaskan parameter InferenceService:

    ParameterValueDescription
    imageregistry.cn-hangzhou.aliyuncs.com/acs/kserve-fluid:bloom-gpuImage contoh dengan antarmuka pemuatan dan inferensi model. Untuk menyesuaikan, lihat Contoh Docker KServe Fluid
    STORAGE_URIpvc://oss-data/bloom-560mURI penyimpanan berbasis PVC yang mengarah ke cache yang dikelola Fluid
    MODEL_NAMEbloomNama model yang digunakan di endpoint API prediksi
    GPU_ENABLEDTrueAtur ke False jika tidak menggunakan GPU
    resources12 CPU, 48 GiB memoriAlokasi resource untuk model BLOOM-560m. Sesuaikan berdasarkan ukuran model dan kapasitas kluster Anda
  2. Terapkan layanan inferensi:

       kubectl create -f oss-fluid-isvc.yaml -n kserve-fluid-demo
  3. Verifikasi penerapan:

       kubectl get inferenceservice -n kserve-fluid-demo

    Output 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   2d

    READY menunjukkan True, yang mengonfirmasi layanan inferensi sedang berjalan.

Langkah 4: Kirim permintaan prediksi

  1. Dapatkan alamat gerbang masuk (ingress gateway) ASM.

    1. Login ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

    2. Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih ASM Gateways > Ingress Gateway.

    3. Di bagian Service address pada ingressgateway, salin alamat layanan tersebut.

  2. Kirim permintaan uji. Ganti <gateway-address> dengan alamat dari langkah sebelumnya.

       curl -v \
         -H "Content-Type: application/json" \
         -H "Host: fluid-bloom.kserve-fluid-demo.example.com" \
         "http://<gateway-address>:80/v1/models/bloom:predict" \
         -d '{"prompt": "It was a dark and stormy night", "result_length": 50}'

    Output yang diharapkan:

       *   Trying xxx.xx.xx.xx:80...
       * Connected to 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
       > Content-Type: application/json
       >
       < HTTP/1.1 200 OK
       < content-type: application/json
       < server: istio-envoy
       <
       {
         "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"
       }

    Tanggapan 200 OK dengan teks yang dihasilkan mengonfirmasi bahwa layanan inferensi berfungsi.

Pembersihan

Untuk menghapus semua resource yang dibuat dalam tutorial ini, jalankan perintah berikut secara berurutan:

kubectl delete inferenceservice fluid-bloom -n kserve-fluid-demo
kubectl delete dataload oss-dataload -n kserve-fluid-demo
kubectl delete dataset oss-data -n kserve-fluid-demo
kubectl delete jindoruntime oss-data -n kserve-fluid-demo
kubectl delete secret access-key -n kserve-fluid-demo
kubectl delete ns kserve-fluid-demo

Langkah berikutnya