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:
Penanganan
preprocessmengonversi input mentah ke format yang diharapkan oleh model—misalnya, mendekode gambar Base64 menjadi tensor.Data yang telah diproses diteruskan ke predictor untuk inferensi.
Tanggapan dari predictor melewati penanganan
postprocesssebelum 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.
kubectlyang 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.
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:
| Metode | Kapan digunakan |
|---|---|
| Build from source | Anda perlu menyesuaikan logika transformer |
| Pre-built image | Anda 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:latestGanti <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.10Terapkan 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.
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 - mnistField Deskripsi 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 mnistmemberi tahu transformer model mana yang ditujuTerapkan InferenceService:
kubectl apply -f transformer-new.yamlTunggu hingga InferenceService siap:
kubectl get inferenceservice torch-transformerKolom
READYharus menampilkanTruesebelum 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:

{
"instances": [
{
"image": {
"b64": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAAAw0lEQVR4nGNgGFggVVj4/y8Q2GOR83n+58/fP0DwcSqmpNN7oOTJw6f+/H2pjUU2JCSEk0EWqN0cl828e/FIxvz9/9cCh1zS5z9/G9mwyzl/+PNnKQ45nyNAr9ThMHQ/UG4tDofuB4bQIhz6fIBenMWJQ+7Vn7+zeLCbKXv6z59NOPQVgsIcW4QA9YFi6wNQLrKwsBebW/68DJ388Nun5XFocrqvIFH59+XhBAxThTfeB0r+vP/QHbuDCgr2JmOXoSsAAKK7bU3vASS4AAAAAElFTkSuQmCC"
}
}
]
}Kirim permintaan prediksi
Dapatkan hostname layanan:
SERVICE_NAME=torchserve-transformer SERVICE_HOSTNAME=$(kubectl get inferenceservice $SERVICE_NAME -o jsonpath='{.status.url}' | cut -d "/" -f 3) echo $SERVICE_HOSTNAMEOutput yang diharapkan:
torchserve-transformer.default.example.comKirim 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
Referensi transformer KServe (v0.10) — kode sumber dan contoh transformer kustom.
Integrasikan KServe dengan ASM — pola penerapan layanan inferensi tambahan.