全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Gunakan InferenceService untuk menyebarkan transformer

更新时间:Jul 02, 2025

Transformer adalah komponen dalam InferenceService yang digunakan untuk pra-pemrosesan, post-processing, dan inferensi model. InferenceService berkomunikasi dengan transformer melalui protokol REST. Transformer dapat mengonversi data input mentah menjadi format yang sesuai untuk model server, sehingga memungkinkan implementasi pemrosesan data ujung-ke-ujung dan inferensi model.

Prasyarat

Pastikan Anda dapat menjalankan layanan inferensi dasar di lingkungan Anda. Untuk informasi lebih lanjut, lihat Integrasikan KServe dengan ASM untuk mengimplementasikan layanan inferensi berbasis model AI cloud-native.

Catatan

Versi KServe yang berbeda mungkin memerlukan format data input yang berbeda. Contoh ini menggunakan KServe 0.10. Untuk informasi lebih lanjut, lihat Menyebarkan Transformer dengan InferenceService.

Langkah 1: Buat gambar Docker transformer

  • Metode 1: Di direktori kserve/python KServe di GitHub, buat gambar Docker transformer menggunakan Dockerfile.

    cd python
    docker build -t <your-registry-url>/image-transformer:latest -f custom_transformer.Dockerfile .
    
    docker push <your-registry-url>/image-transformer:latest
  • Metode 2: Gunakan gambar yang sudah ada.

     asm-registry.cn-hangzhou.cr.aliyuncs.com/asm/kserve-image-custom-transformer:0.10

Langkah 2: Gunakan REST predictor untuk menyebarkan InferenceService

Secara default, InferenceService menggunakan TorchServe untuk menyajikan model PyTorch, dengan model dimuat dari repositori model. Dalam contoh ini, repositori model berisi model MNIST.

  1. Buat file transformer-new.yaml dengan konten berikut:

    apiVersion: serving.kserve.io/v1beta1
    kind: InferenceService
    metadata:
      name: torch-transformer
    spec:
      predictor:
        model:
          modelFormat:
            name: pytorch
          storageUri: gs://kfserving-examples/models/torchserve/image_classifier/v1
      transformer:
        containers:
          - image: asm-registry.cn-hangzhou.cr.aliyuncs.com/asm/kserve-image-custom-transformer:0.10
            name: kserve-container
            command:
              - "python"
              - "-m"
              - "model"
            args:
              - --model_name
              - mnist
  2. Jalankan perintah berikut untuk menyebarkan InferenceService:

    kubectl apply -f transformer-new.yaml

Langkah 3: Jalankan prediksi

  1. Verifikasi payload input permintaan.

    Enkode konten gambar berikut ke Base64 dan simpan sebagai file input.json.

    image.png

    {
        "instances":[
           {
              "image":{
                "b64": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAAAw0lEQVR4nGNgGFggVVj4/y8Q2GOR83n+58/fP0DwcSqmpNN7oOTJw6f+/H2pjUU2JCSEk0EWqN0cl828e/FIxvz9/9cCh1zS5z9/G9mwyzl/+PNnKQ45nyNAr9ThMHQ/UG4tDofuB4bQIhz6fIBenMWJQ+7Vn7+zeLCbKXv6z59NOPQVgsIcW4QA9YFi6wNQLrKwsBebW/68DJ388Nun5XFocrqvIFH59+XhBAxThTfeB0r+vP/QHbuDCgr2JmOXoSsAAKK7bU3vISS4AAAAAElFTkSuQmCC"
              }
           }
        ]
    }
  2. Akses layanan model melalui gateway ingress.

    1. Jalankan perintah berikut untuk mendapatkan nilai SERVICE_HOSTNAME:

      SERVICE_NAME=torchserve-transformer
      SERVICE_HOSTNAME=$(kubectl get inferenceservice $SERVICE_NAME -o jsonpath='{.status.url}' | cut -d "/" -f 3)
      echo $SERVICE_HOSTNAME

      Keluaran yang diharapkan:

      torchserve-transformer.default.example.com
    2. Jalankan perintah berikut untuk mengakses layanan model.

      Untuk informasi lebih lanjut tentang cara mendapatkan alamat IP gateway ingress, lihat Sublangkah 1 Dapatkan alamat IP gateway ingress dari Langkah 3 dalam topik "Gunakan sumber daya Istio untuk merutekan lalu lintas ke versi layanan yang berbeda".

      MODEL_NAME=mnist
      INPUT_PATH=@./input.json
      ASM_GATEWAY="XXXX" # Ganti XXXX dengan alamat IP gateway ingress.
      curl -v -H "Host: ${SERVICE_HOSTNAME}" -d $INPUT_PATH http://${ASM_GATEWAY}/v1/models/$MODEL_NAME:predict
      

      Keluaran yang diharapkan:

      > POST /v1/models/mnist:predict HTTP/1.1
      > Host: torchserve-transformer.default.example.com
      > User-Agent: curl/7.79.1
      > Accept: */*
      > Content-Length: 427
      > Content-Type: application/x-www-form-urlencoded
      > 
      * Mark bundle as not supporting multiuse
      < HTTP/1.1 200 OK
      < content-length: 19
      < content-type: application/json
      < date: Mon, 13 Nov 2023 05:53:15 GMT
      < server: istio-envoy
      < x-envoy-upstream-service-time: 119
      < 
      * Connection #0 to host xxxx left intact
      {"predictions":[2]}%                           

      Keluaran menunjukkan bahwa akses ke layanan model berhasil.