All Products
Search
Document Center

Alibaba Cloud Service Mesh:Terapkan transformer dengan InferenceService

Last Updated:Mar 12, 2026

Ketika server model Anda memerlukan input yang telah diproses sebelumnya—misalnya tensor alih-alih gambar Base64 mentah—transformer berfungsi sebagai jembatan. Transformer menjalankan tiga penanganan secara berurutan dalam satu InferenceService:

  1. Penanganan preprocess mengonversi input mentah ke format yang diharapkan oleh model—misalnya, mendekode gambar Base64 menjadi tensor.

  2. Data yang telah diproses diteruskan ke predictor untuk inferensi.

  3. Tanggapan dari predictor melewati penanganan postprocess sebelum dikembalikan ke klien.

Transformer berkomunikasi dengan predictor melalui REST secara default.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Lingkungan KServe yang berfungsi pada Service Mesh (ASM). Untuk instruksi penyiapan, lihat Integrasikan KServe dengan ASM.

  • kubectl yang telah dikonfigurasi untuk mengakses kluster Anda.

  • (Opsional) Docker terinstal, jika Anda berencana membuat custom image transformer.

  • (Opsional) Akses ke container registry, jika Anda berencana mendorong custom image.

Catatan

Tutorial ini menggunakan KServe 0.10. Versi berbeda mungkin memerlukan format data masukan yang berbeda. Untuk referensi resmi, lihat Deploy Transformer with InferenceService.

Buat Docker image transformer

Pilih salah satu metode berikut:

MetodeKapan digunakan
Build from sourceAnda perlu menyesuaikan logika transformer
Pre-built imageAnda ingin menggunakan image transformer default tanpa modifikasi

Build from source

Buat image dari direktori kserve/python di repositori GitHub KServe:

cd python
docker build -t <your-registry-url>/image-transformer:latest -f custom_transformer.Dockerfile .
docker push <your-registry-url>/image-transformer:latest

Ganti <your-registry-url> dengan URL container registry Anda, misalnya registry.example.com/ml-models.

Gunakan pre-built image

Gunakan image berikut langsung dalam file YAML InferenceService Anda:

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

Terapkan InferenceService dengan transformer

Secara default, InferenceService menggunakan TorchServe untuk menyajikan model PyTorch. Contoh ini menerapkan klasifikasi digit tulisan tangan MNIST yang telah dipre-train dengan custom image transformer.

  1. Buat file bernama transformer-new.yaml:

    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
    FieldDeskripsi
    spec.predictor.model.storageUriPath Google Cloud Storage ke model PyTorch MNIST, yang disajikan oleh TorchServe
    spec.transformer.containers[].imageImage transformer yang memproses data gambar masuk
    spec.transformer.containers[].args--model_name mnist memberi tahu transformer model mana yang dituju
  2. Terapkan InferenceService:

    kubectl apply -f transformer-new.yaml
  3. Tunggu hingga InferenceService siap:

    kubectl get inferenceservice torch-transformer

    Kolom READY harus menampilkan True sebelum Anda melanjutkan.

Jalankan prediksi

Siapkan data masukan

Encode contoh gambar sebagai Base64 dan simpan dalam file bernama input.json. Contoh berikut menggunakan gambar digit tulisan tangan:

Sample handwritten digit
{
    "instances": [
        {
            "image": {
                "b64": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAAAw0lEQVR4nGNgGFggVVj4/y8Q2GOR83n+58/fP0DwcSqmpNN7oOTJw6f+/H2pjUU2JCSEk0EWqN0cl828e/FIxvz9/9cCh1zS5z9/G9mwyzl/+PNnKQ45nyNAr9ThMHQ/UG4tDofuB4bQIhz6fIBenMWJQ+7Vn7+zeLCbKXv6z59NOPQVgsIcW4QA9YFi6wNQLrKwsBebW/68DJ388Nun5XFocrqvIFH59+XhBAxThTfeB0r+vP/QHbuDCgr2JmOXoSsAAKK7bU3vASS4AAAAAElFTkSuQmCC"
            }
        }
    ]
}

Kirim permintaan prediksi

  1. Dapatkan hostname layanan:

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

    Output yang diharapkan:

    torchserve-transformer.default.example.com
  2. Kirim permintaan melalui gerbang masuk ASM:

    Untuk menemukan alamat IP gerbang masuk, lihat Dapatkan alamat IP gerbang masuk.

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

Verifikasi hasil

Tanggapan sukses mengembalikan HTTP 200 dengan prediksi JSON:

< HTTP/1.1 200 OK
< content-length: 19
< content-type: application/json
< server: istio-envoy
<
{"predictions":[2]}

Prediksi [2] berarti model mengklasifikasikan gambar masukan sebagai digit 2. Hal ini mengonfirmasi bahwa transformer telah mendekode gambar Base64, mengonversinya menjadi tensor, dan meneruskannya ke predictor MNIST.

Langkah selanjutnya