全部产品
Search
文档中心

Container Service for Kubernetes:Terapkan Layanan Inferensi dengan KServe

更新时间:Nov 08, 2025

Anda dapat menggunakan KServe pada ACK Knative untuk menerapkan model AI sebagai layanan inferensi tanpa server. Fitur utama yang disediakan meliputi penskalaan otomatis, manajemen multi-versi, dan rilis canary.

Langkah 1: Instal dan konfigurasikan KServe

Untuk memastikan integrasi yang lancar antara KServe dan Ingress ALB atau gerbang Kourier dari Knative, instal komponen KServe, lalu ubah pengaturan defaultnya untuk menonaktifkan pembuatan Istio VirtualService bawaannya.

  1. Instal komponen KServe.

    1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

    2. Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, pilih Applications > Knative.

    3. Di tab Components, temukan dan terapkan komponen KServe di bagian Add-on.

  2. Nonaktifkan pembuatan Istio VirtualService.

    Edit ConfigMap inferenceservice-config untuk mengatur disableIstioVirtualHost menjadi true.

    kubectl get configmap inferenceservice-config -n kserve -o yaml \
    | sed 's/"disableIstioVirtualHost": false/"disableIstioVirtualHost": true/g' \
    | kubectl apply -f -

    Output yang diharapkan:

    configmap/inferenceservice-config configured
  3. Verifikasi perubahan konfigurasi.

    kubectl get configmap inferenceservice-config -n kserve -o yaml \
    | grep '"disableIstioVirtualHost":' \
    | tail -n1 \
    | awk -F':' '{gsub(/[ ,]/,"",$2); print $2}'

    Output harus berupa true.

  4. Mulai ulang kontroler KServe untuk menerapkan perubahan.

    kubectl rollout restart deployment kserve-controller-manager -n kserve

Langkah 2: Terapkan InferenceService

Contoh ini menerapkan model klasifikasi scikit-learn yang dilatih pada dataset Iris. Layanan ini menerima array empat pengukuran untuk sebuah bunga dan memprediksi spesies mana dari tiga spesies tersebut yang dimiliki.

Input (array dari empat fitur numerik):

  1. Panjang sepal

  2. Lebar sepal

  3. Panjang petal

  4. Lebar petal

Output (indeks kelas yang diprediksi):

  • 0: Iris setosa

  • 1: Iris versicolour

  • 2: Iris virginica

  1. Buat file bernama inferenceservice.yaml untuk menerapkan InferenceService.

    apiVersion: "serving.kserve.io/v1beta1"
    kind: "InferenceService"
    metadata:
      name: "sklearn-iris"
    spec:
      predictor:
        model:
          # Format model, dalam kasus ini scikit-learn
          modelFormat:
            name: sklearn
          image: "kube-ai-registry.cn-shanghai.cr.aliyuncs.com/ai-sample/kserve-sklearn-server:v0.12.0"
          command:
          - sh
          - -c
          - "python -m sklearnserver --model_name=sklearn-iris --model_dir=/models --http_port=8080"
  2. Terapkan InferenceService.

    kubectl apply -f inferenceservice.yaml
  3. Periksa status layanan.

    kubectl get inferenceservices sklearn-iris

    Dalam output, ketika kolom READY menunjukkan True, layanan sudah aktif dan berjalan.

    NAME           URL                                                         READY   PREV   LATEST   PREVROLLEDOUTREVISION   LATESTREADYREVISION                    AGE
    sklearn-iris   http://sklearn-iris-predictor-default.default.example.com   True           100                              sklearn-iris-predictor-default-00001   51s

Langkah 3: Akses layanan

Kirim permintaan inferensi ke layanan melalui gerbang masuk kluster.

  1. Di tab Services pada halaman Knative, dapatkan alamat gerbang dan nama domain default untuk mengakses layanan.

    Gambar berikut menunjukkan contoh menggunakan Ingress ALB. Antarmuka untuk gerbang Kourier serupa. image
  2. Siapkan data permintaan.

    Di terminal lokal Anda, buat file bernama ./iris-input.json yang berisi muatan permintaan. Contoh ini mencakup dua sampel yang akan diprediksi.

    cat <<EOF > "./iris-input.json"
    {
      "instances": [
        [6.8,  2.8,  4.8,  1.4],
        [6.0,  3.4,  4.5,  1.6]
      ]
    }
    EOF
  3. Kirim permintaan inferensi dari terminal lokal Anda untuk mengakses layanan. Ganti ${INGRESS_DOMAIN} dengan alamat gerbang dari Langkah 1.

    curl -H "Content-Type: application/json" -H "Host: sklearn-iris-predictor.default.example.com" "http://${INGRESS_DOMAIN}/v1/models/sklearn-iris:predict" -d @./iris-input.json

    Output menunjukkan bahwa model memprediksi kedua sampel input termasuk dalam kelas 1 (Iris Versicolour).

    {"predictions":[1,1]}

Tagihan

Komponen KServe dan Knative itu sendiri tidak membebani biaya tambahan. Namun, Anda akan dikenakan biaya untuk sumber daya dasar yang Anda gunakan, termasuk sumber daya komputasi seperti instans Elastic Compute Service (ECS) dan Elastic Container Instance, serta sumber daya jaringan seperti instans Application Load Balancer (ALB) dan Classic Load Balancer (CLB). Untuk detailnya, lihat Biaya Sumber Daya Cloud.

FAQ

Mengapa InferenceService saya macet dalam keadaan Tidak Siap?

Untuk men-debug InferenceService yang gagal menjadi siap, pertama-tama periksa event-nya, lalu periksa status pod terkait, dan tinjau log kontainer.

Ikuti langkah-langkah berikut:

  1. Jalankan kubectl describe inferenceservice <your-service-name> dan periksa event untuk pesan kesalahan apa pun. Ganti <your-service-name> dengan nama layanan aktual Anda.

  2. Jalankan kubectl get pods untuk melihat apakah ada pod terkait layanan yang berada dalam keadaan Error atau CrashLoopBackOff. Pod untuk InferenceService biasanya memiliki awalan nama layanan.

  3. Jika pod dalam keadaan error, periksa lognya dengan kubectl logs <pod-name> -c kserve-container untuk mendiagnosis kegagalan. Ini dapat mengungkapkan masalah seperti model gagal mengunduh karena masalah jaringan atau format file model yang salah.

Bagaimana cara menerapkan model pelatihan kustom saya sendiri?

  1. Unggah file model Anda ke Bucket Object Storage Service (OSS) yang dapat diakses.

  2. Konfigurasikan manifes InferenceService Anda untuk menunjuk ke model:

    • Atur bidang spec.predictor.model.storageUri ke URI file model Anda di bucket OSS.

    • Atur bidang modelFormat berdasarkan framework model Anda, seperti tensorflow, pytorch, atau onnx.

Bagaimana cara mengonfigurasi sumber daya GPU untuk model saya?

Jika model Anda memerlukan GPU untuk inferensi, Anda dapat meminta sumber daya GPU dengan menambahkan bidang resources ke bagian predictor dari manifes YAML InferenceService Anda.

Untuk informasi lebih lanjut tentang penggunaan GPU dengan Knative, lihat Gunakan Sumber Daya GPU.
spec:
  predictor:
    resources:
      requests:
        nvidia.com/gpu: "1"
      limits:
        nvidia.com/gpu: "1"

Referensi