全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Integrasi KServe dengan ASM untuk mengimplementasikan layanan inferensi berbasis model AI cloud-native

更新时间:Jul 02, 2025

KServe (sebelumnya KFServing) adalah server model dan mesin inferensi dalam lingkungan cloud-native. Ini mendukung fitur seperti penskalaan otomatis, scale-to-zero, dan penyebaran canary. Dengan mengintegrasikan KServe dengan Service Mesh (ASM), pengembang dapat dengan cepat menerapkan dan mengelola layanan inferensi berbasis model pembelajaran mesin dalam aplikasi cloud-native, mengurangi beban konfigurasi manual dan pemeliharaan serta meningkatkan efisiensi pengembangan.

Prasyarat

Pengenalan KServe

Sebagai server model, KServe mendukung penerapan model pembelajaran mesin dan pembelajaran mendalam secara besar-besaran. KServe dapat diterapkan dalam mode Deployment Kubernetes tradisional atau dalam mode tanpa server dengan dukungan untuk scale-to-zero. Ini menyediakan penskalaan otomatis berdasarkan trafik dan penyebaran blue-green atau canary untuk model. Untuk informasi lebih lanjut, lihat KServe.

KServe

Langkah 1: Instal komponen cert-manager KServe

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

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

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

    KServe bergantung pada komponen cert-manager. Saat Anda menginstal KServe, komponen cert-manager secara otomatis terinstal. Jika Anda ingin menggunakan komponen cert-manager Anda sendiri, matikan Automatically install the CertManager component in the cluster.

Langkah 2: Dapatkan alamat IP gateway ingress ASM

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

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

  3. Di halaman Ingress Gateway, lihat dan catat Service address dari gateway ingress ASM.

Langkah 3: Buat layanan inferensi

Dalam contoh ini, model pelatihan scikit-learn digunakan untuk pengujian.

  1. Gunakan kubectl untuk terhubung ke kluster ACK di bidang data. Kemudian, jalankan perintah berikut untuk membuat namespace guna menerapkan sumber daya KServe:

    kubectl create namespace kserve-test
  2. Buat layanan inferensi.

    1. Gunakan konten berikut untuk membuat file isvc.yaml:

      apiVersion: "serving.kserve.io/v1beta1"
      kind: "InferenceService"
      metadata:
        name: "sklearn-iris"
      spec:
        predictor:
          model:
            modelFormat:
              name: sklearn
            storageUri: "gs://kfserving-examples/models/sklearn/1.0/model"
    2. Jalankan perintah berikut untuk membuat layanan sklearn-iris di namespace kserve-test:

      kubectl apply -f isvc.yaml -n kserve-test
  3. Jalankan perintah berikut untuk memeriksa apakah layanan sklearn-iris berhasil dibuat:

    kubectl get inferenceservices sklearn-iris -n kserve-test

    Output yang diharapkan:

    NAME           URL                                           READY   PREV   LATEST   PREVROLLEDOUTREVISION   LATESTREADYREVISION            AGE
    sklearn-iris   http://sklearn-iris.kserve-test.example.com   True           100                              sklearn-iris-predictor-00001   3h26m

    Nilai dari READY adalah True, menunjukkan bahwa layanan sklearn-iris berhasil dibuat.

  4. (Opsional)Lihat layanan virtual dan gateway Istio.

    Setelah layanan sklearn-iris dibuat, layanan virtual dan gateway Istio secara otomatis dibuat untuk model scikit-learn. Untuk melihat layanan virtual dan gateway Istio, lakukan langkah-langkah berikut:

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

    2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih Traffic Management Center > VirtualService.

    3. Di halaman VirtualService, klik ikon 刷新 di sebelah Namespace dan pilih kserve-test dari daftar drop-down Namespace untuk melihat layanan virtual yang dibuat.

    4. Di panel navigasi kiri, pilih ASM Gateways > Gateway.

    5. Di bagian atas halaman Gateway, pilih knative-serving dari daftar drop-down Namespace untuk melihat gateway Istio yang dibuat.

Langkah 4: Akses layanan yang disediakan oleh model scikit-learn

Berikut ini adalah langkah-langkah untuk mengakses layanan yang disediakan oleh model scikit-learn di sistem operasi Linux dan Mac.

  1. Jalankan perintah berikut untuk membuat file input untuk model scikit-learn:

    cat <<EOF > "./iris-input.json"
    {
      "instances": [
        [6.8,  2.8,  4.8,  1.4],
        [6.0,  3.4,  4.5,  1.6]
      ]
    }
    EOF
  2. Uji akses ke layanan yang disediakan oleh model scikit-learn melalui gateway ingress.

    1. Jalankan perintah berikut untuk mendapatkan nilai SERVICE_HOSTNAME:

      SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -n kserve-test -o jsonpath='{.status.url}' | cut -d "/" -f 3)
      echo $SERVICE_HOSTNAME

      Output yang diharapkan:

      sklearn-iris.kserve-test.example.com
    2. Jalankan perintah berikut untuk mengakses layanan. Pada langkah ini, atur ASM_GATEWAY ke alamat IP gateway ingress yang diperoleh di Langkah 2.

      ASM_GATEWAY="XXXX" # Ganti XXXX dengan alamat IP gateway ingress ASM. 
      curl  -H "Host: ${SERVICE_HOSTNAME}" http://${ASM_GATEWAY}:80/v1/models/sklearn-iris:predict -d @./iris-input.json

      Output yang diharapkan:

      {"predictions": [1, 1]}
  3. Uji performa layanan yang disediakan oleh model scikit-learn.

    1. Jalankan perintah berikut untuk menerapkan aplikasi untuk uji stres:

      kubectl create -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/kserve/v0.7/loadtest.yaml
    2. Jalankan perintah berikut untuk memeriksa nama pod:

      kubectl get pod

      Output yang diharapkan:

      NAME                                                       READY   STATUS      RESTARTS   AGE
      load-testxhwtq-pj9fq                                       0/1     Completed   0          3m24s
      sklearn-iris-predictor-00001-deployment-857f9bb56c-vg8tf   2/2     Running     0          51m
    3. Jalankan perintah berikut untuk melihat log hasil tes:

      kubectl logs load-testxhwtq-pj9fq # Ganti nama pod dengan nama pod tempat aplikasi yang Anda terapkan untuk uji stres berjalan.

      Output yang diharapkan:

      Requests      [total, rate, throughput]         30000, 500.02, 500.01
      Duration      [total, attack, wait]             59.999s, 59.998s, 1.352ms
      Latencies     [min, mean, 50, 90, 95, 99, max]  1.196ms, 1.463ms, 1.378ms, 1.588ms, 1.746ms, 2.99ms, 18.873ms
      Bytes In      [total, mean]                     690000, 23.00
      Bytes Out     [total, mean]                     2460000, 82.00
      Success       [ratio]                           100.00%
      Status Codes  [code:count]                      200:30000
      Error Set:

Referensi