All Products
Search
Document Center

Container Service for Kubernetes:Terapkan model TensorFlow sebagai layanan inferensi

Last Updated:Mar 26, 2026

Setelah melatih model TensorFlow, Anda perlu menyediakannya sebagai API yang dapat diakses melalui jaringan agar aplikasi dapat memanggilnya. Panduan ini menjelaskan cara menggunakan Arena untuk menerapkan TensorFlow SavedModel sebagai layanan inferensi TensorFlow Serving pada kluster ACK, mencakup pengunggahan model ke OSS, konfigurasi penyimpanan persisten, peluncuran instans serving, dan akses eksternal melalui Ingress.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Panduan ini menggunakan model BERT yang dilatih dengan TensorFlow 1.15 dan diekspor sebagai SavedModel.

Persiapkan penyimpanan model

Langkah 1: Periksa sumber daya GPU yang tersedia

Jalankan perintah berikut untuk memverifikasi ketersediaan GPU di kluster:

arena top node

Output tersebut mencantumkan semua node GPU beserta status alokasinya:

NAME                      IPADDRESS      ROLE    STATUS  GPU(Total)  GPU(Allocated)
cn-beijing.192.168.0.100  192.168.0.100  <none>  Ready   1           0
cn-beijing.192.168.0.101  192.168.0.101  <none>  Ready   1           0
cn-beijing.192.168.0.99   192.168.0.99   <none>  Ready   1           0
---------------------------------------------------------------------------------------------------
Allocated/Total GPUs of nodes which own resource nvidia.com/gpu In Cluster:
0/3 (0.0%)

Kluster memiliki tiga node GPU, masing-masing dengan satu GPU yang belum dialokasikan.

Langkah 2: Unggah model ke OSS

Penting

Langkah-langkah berikut menggunakan ossutil pada Linux. Untuk sistem operasi lainnya, lihat ossutil.

  1. Instal ossutil.

  2. Buat bucket bernama examplebucket:

    ossutil64 mb oss://examplebucket

    Output berikut mengonfirmasi bahwa bucket telah dibuat:

    0.668238(s) elapsed
  3. Unggah SavedModel ke bucket:

    ossutil64 cp model.savedmodel oss://examplebucket

Langkah 3: Buat volume persisten dan klaim volume persisten

Untuk memasang bucket OSS sebagai volume di dalam kontainer serving, buat persistent volume (PV) dan persistent volume claim (PVC).

  1. Buat file bernama Tensorflow.yaml dengan konten berikut:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: model-csi-pv
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: model-csi-pv   # Harus sesuai dengan nama PV di atas
        volumeAttributes:
          bucket: "Your Bucket"
          url: "Your oss url"
          akId: "Your Access Key Id"
          akSecret: "Your Access Key Secret"
          otherOpts: "-o max_stat_cache_size=0 -o allow_other"
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: model-pvc
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 5Gi

    Ganti parameter berikut:

    ParameterDeskripsi
    bucketNama bucket OSS. Untuk aturan penamaan, lihat Konvensi penamaan bucket.
    urlURL titik akhir untuk bucket tersebut. Untuk petunjuk mendapatkan URL, lihat Dapatkan URL objek tunggal atau URL beberapa objek.
    akIdID AccessKey yang digunakan untuk mengakses bucket OSS. Gunakan AccessKey milik pengguna Resource Access Management (RAM). Untuk detailnya, lihat Buat pasangan AccessKey.
    akSecretRahasia AccessKey yang dipasangkan dengan ID AccessKey di atas.
    otherOptsOpsi pemasangan kustom untuk bucket OSS. -o max_stat_cache_size=0 menonaktifkan cache metadata sehingga sistem selalu membaca metadata objek terbaru dari OSS. -o allow_other memungkinkan pengguna lain di node mengakses bucket yang dipasang. Untuk opsi tambahan, lihat Parameter kustom yang didukung oleh ossfs.
  2. Terapkan manifes untuk membuat PV dan PVC:

    kubectl apply -f Tensorflow.yaml

Terapkan layanan inferensi

Langkah 4: Luncurkan TensorFlow Serving

Jalankan perintah berikut untuk menerapkan instans TensorFlow Serving bernama bert-tfserving:

arena serve tensorflow \
  --name=bert-tfserving \
  --model-name=chnsenticorp \
  --gpus=1 \
  --image=tensorflow/serving:1.15.0-gpu \
  --data=model-pvc:/models \
  --model-path=/models/tensorflow \
  --version-policy=specific:1623831335
ParameterDeskripsi
--nameNama pekerjaan serving.
--model-nameNama model yang digunakan TensorFlow Serving untuk mengidentifikasi model dalam permintaan API.
--gpusJumlah GPU yang dialokasikan ke instans serving.
--imageGambar kontainer TensorFlow Serving. Harus sesuai dengan versi TensorFlow yang digunakan saat pelatihan.
--dataMemasang PVC ke dalam kontainer. Format: <pvc-name>:<mount-path>.
--model-pathJalur di dalam kontainer tempat model disimpan.
--version-policyVersi model yang akan dimuat. specific:<version> mengunci serving ke satu versi tertentu.

Output berikut mengonfirmasi bahwa pekerjaan telah dikirim:

configmap/bert-tfserving-202106251556-tf-serving created
configmap/bert-tfserving-202106251556-tf-serving labeled
configmap/bert-tfserving-202106251556-tensorflow-serving-cm created
service/bert-tfserving-202106251556-tensorflow-serving created
deployment.apps/bert-tfserving-202106251556-tensorflow-serving created
INFO[0003] The Job bert-tfserving has been submitted successfully
INFO[0003] You can run `arena get bert-tfserving --type tf-serving` to check the job status

Langkah 5: Verifikasi layanan sedang berjalan

Tampilkan daftar semua layanan inferensi yang sedang berjalan:

arena serve list

Output menampilkan layanan bert-tfserving beserta alamat dan port-nya:

NAME            TYPE        VERSION       DESIRED  AVAILABLE  ADDRESS        PORTS
bert-tfserving  Tensorflow  202106251556  1        1          172.16.95.171  GRPC:8500,RESTFUL:8501

Dapatkan detail lengkap layanan tersebut:

arena serve get bert-tfserving
Name:       bert-tfserving
Namespace:  inference
Type:       Tensorflow
Version:    202106251556
Desired:    1
Available:  1
Age:        4m
Address:    172.16.95.171
Port:       GRPC:8500,RESTFUL:8501


Instances:
  NAME                                                             STATUS   AGE  READY  RESTARTS  NODE
  ----                                                             ------   ---  -----  --------  ----
  bert-tfserving-202106251556-tensorflow-serving-8554d58d67-jd2z9  Running  4m   1/1    0         cn-beijing.192.168.0.88

Layanan diterapkan di namespace inference. Port 8500 melayani permintaan gRPC dan port 8501 melayani permintaan HTTP/RESTful.

Akses layanan dari luar

arena serve tensorflow secara default menetapkan alamat IP kluster, yang hanya dapat dijangkau dari dalam kluster. Buat Ingress untuk mengekspos layanan agar dapat diakses dari luar.

Langkah 6: Buat Ingress

  1. Di Konsol ACK, buka halaman Clusters, klik kluster target, lalu navigasikan ke Network > Ingresses di panel navigasi sebelah kiri.

  2. Dari daftar drop-down Namespace di bagian atas halaman, pilih namespace inference (namespace yang sama seperti yang ditampilkan dalam detail layanan di atas).

  3. Klik Create Ingress di pojok kanan atas. Untuk deskripsi lengkap parameter Ingress, lihat Buat Ingress NGINX. Gunakan pengaturan berikut:

    • Name: Tensorflow

    • Rules:

      • Domain name: Masukkan domain kustom, misalnya test.example.com

      • Path: /

      • Rule: ImplementationSpecific (default)

      • Service name: Nama layanan yang dikembalikan oleh kubectl get service

      • Port: 8501

  4. Setelah Ingress dibuat, kembali ke halaman Ingresses. Kolom Rules menampilkan alamat Ingress.

    12

Langkah 7: Panggil API inferensi

Jalankan perintah berikut untuk memanggil API layanan inferensi. Untuk informasi lebih lanjut tentang TensorFlow Serving, lihat TensorFlow Serving API.

curl "http://<Ingress address>"

Tanggapan sukses terlihat seperti berikut:

{
 "model_version_status": [
  {
   "version": "1623831335",
   "state": "AVAILABLE",
   "status": {
    "error_code": "OK",
    "error_message": ""
   }
  }
 ]
}

Bidang state: AVAILABLE mengonfirmasi bahwa model telah dimuat dan siap melayani permintaan inferensi.