全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Integrasi fitur KServe pada ASM dengan Fluid untuk mengimplementasikan AI Serving yang mempercepat akses data

更新时间:Jul 06, 2025

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.

    Catatan
    • Untuk 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.

    Tunjukkan Cara Menerapkan Komponen Knative Serving

    • Untuk informasi lebih lanjut tentang cara menginstal komponen Knative di kluster ACK, lihat Terapkan Knative.

    • Untuk informasi lebih lanjut tentang cara menginstal komponen Knative di kluster ASK, lihat Aktifkan Knative.

    Catatan

    Jika Anda memilih Kourier sebagai gateway untuk menginstal komponen Knative, kami sarankan Anda mencopot pemasangan Kourier setelah komponen Knative diinstal. Anda dapat melakukan langkah-langkah berikut untuk menginstal komponen Knative dan mencopot pemasangan Kourier: Pada halaman Clusters di konsol ACK, klik kluster Anda. Di panel navigasi di sebelah kiri, pilih Applications > Knative. Pada halaman yang muncul, instal komponen Knative dan pilih Kourier sebagai gateway. Setelah komponen Knative diinstal, klik tab Components dan copot pemasangan Kourier di bagian Add-on Component.

    Tunjukkan Cara Mengaktifkan Knative pada ASM

    1. Masuk ke Konsol ASM. Di panel navigasi di sebelah kiri, pilih Service Mesh > Mesh Management.

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

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

  • 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

  1. Masuk ke Konsol ASM. Di panel navigasi di sebelah kiri, pilih Service Mesh > Mesh Management.

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

  3. 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

  1. 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.

      Catatan

      Jika 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 Applications > Cloud-native AI Suite 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.

  2. Siapkan model AI dan unggah ke bucket OSS.

    1. 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.

    2. 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 direktori models/bloom di bucket, lokasi penyimpanan file data model adalah oss://fluid-demo/models/bloom.

      Catatan

      Anda dapat menggunakan alat ossutil yang disediakan oleh OSS untuk mengunggah data. Untuk informasi lebih lanjut, lihat Instal ossutil.

  3. Buat namespace untuk menerapkan cache Fluid dan AI Serving, dan konfigurasikan izin akses OSS.

    1. Gunakan kubectl untuk terhubung ke kluster pada bidang data. Untuk informasi lebih lanjut, lihat Hubungkan ke Kluster ACK Menggunakan kubectl.

    2. Jalankan perintah berikut untuk membuat namespace bernama kserve-fluid-demo untuk menerapkan cache Fluid dan AI Serving berbasis KServe:

      kubectl create ns kserve-fluid-demo
    3. Buat file bernama oss-secret.yaml dan salin konten berikut ke file tersebut.

      fs.oss.accessKeyId adalah ID AccessKey akun yang dapat mengakses OSS, dan fs.oss.accessKeySecret adalah 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.
    4. Jalankan perintah berikut untuk menerapkan pasangan OSS AccessKey:

      kubectl apply -f oss-secret.yaml -n kserve-fluid-demo
  4. 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.

    1. 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.

      Tampilkan Isi oss-jindo.yaml

      apiVersion: data.fluid.io/v1alpha1
      kind: Dataset
      metadata:
        name: oss-data
      spec:
        mounts:
        - mountPoint: "oss://{bucket}/{path}" # Ganti nilainya dengan lokasi penyimpanan file data model.
          name: bloom-560m
          path: /bloom-560m
          options:
            fs.oss.endpoint: "{endpoint}" # Ganti nilainya dengan endpoint aktual yang dapat digunakan untuk mengakses OSS.
          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. Jalankan perintah berikut untuk menerapkan Dataset CR dan JindoRuntime CR:

      kubectl create -f oss-jindo.yaml -n kserve-fluid-demo
    3. Jalankan perintah berikut untuk memeriksa penerapan Dataset CR dan JindoRuntime CR:

      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

      Output menunjukkan bahwa PHASE dari Dataset CR adalah Bound dan FUSE PHASE dari JindoRuntime CR adalah Ready. Ini menunjukkan bahwa Dataset CR dan JindoRuntime CR telah diterapkan.

  5. Prefetch data di Fluid untuk meningkatkan kinerja akses data.

    1. 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: 2
    2. Jalankan perintah berikut untuk menerapkan Dataload untuk prefetch data:

      kubectl create -f oss-dataload.yaml -n kserve-fluid-demo
    3. Jalankan perintah berikut untuk memeriksa kemajuan prefetch data:

      kubectl get dataload -n kserve-fluid-demo

      Output yang Diharapkan:

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

      Output menunjukkan bahwa prefetch data membutuhkan waktu sekitar 45s. Anda perlu menunggu hingga data diprefetch.

Langkah 3: Terapkan layanan inferensi berdasarkan model AI

  1. 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"
    Catatan
    • Dalam topik ini, LLM digunakan. Oleh karena itu, sumber daya 12 core dan 48 Gi diterapkan. Modifikasi bidang resources dari InferenceService berdasarkan beban kluster Anda.

    • Dalam contoh ini, bidang image diatur ke registry.cn-hangzhou.aliyuncs.com/acs/kserve-fluid:bloom-gpu gambar 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.

  2. Jalankan perintah berikut untuk menerapkan layanan inferensi berdasarkan model AI:

    kubectl create -f oss-fluid-isvc.yaml -n kserve-fluid-demo
  3. Jalankan perintah berikut untuk memeriksa penerapan layanan inferensi berdasarkan model AI:

    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

    Dalam output, bidang READY adalah True, yang menunjukkan bahwa layanan inferensi berdasarkan model AI telah diterapkan.

Langkah 4: Akses layanan inferensi berdasarkan model AI

  1. Peroleh alamat gateway ingress ASM.

    1. Masuk ke Konsol ASM. Di panel navigasi di sebelah kiri, pilih Service Mesh > Mesh Management.

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

    3. Di bagian Alamat Layanan dari ingressgateway, lihat dan peroleh alamat layanan gateway ASM.

  2. 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 utuh

    Output menunjukkan bahwa layanan inferensi berdasarkan model AI memperbarui input contoh dan hasil inferensi dikembalikan.

Referensi