All Products
Search
Document Center

Container Service for Kubernetes:Penerapan layanan inferensi model TensorFlow

Last Updated:Jun 21, 2026

Topik ini menjelaskan cara menerapkan model TensorFlow sebagai layanan inferensi menggunakan Arena.

Prasyarat

Prosedur

Catatan

Topik ini menggunakan model BERT yang dilatih dengan TensorFlow 1.15 untuk menerapkan layanan inferensi. Model tersebut diekspor sebagai saved model.

  1. Jalankan perintah berikut untuk memeriksa sumber daya GPU yang tersedia di kluster.

    arena top node

    Output yang diharapkan:

    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%)

    Output tersebut menunjukkan bahwa tiga node GPU tersedia untuk penerapan model.

  2. Unggah model ke bucket di Object Storage Service (OSS).

    Penting

    Langkah-langkah berikut untuk mengunggah model ke OSS ditujukan untuk sistem Linux. Untuk instruksi unggah pada sistem operasi lainnya, lihat Panduan cepat alat baris perintah ossutil.

    1. Instal ossutil.

    2. Buat bucket bernama examplebucket.

      • Jalankan perintah berikut untuk membuat examplebucket.

        ossutil64 mb oss://examplebucket
      • Output berikut menunjukkan bahwa examplebucket berhasil dibuat.

        0.668238(s) elapsed
    3. Unggah model ke bucket examplebucket.

      ossutil64 cp model.savedmodel oss://examplebucket
  3. Buat persistent volume (PV) dan persistent volume claim (PVC).

    1. Buat file Tensorflow.yaml berdasarkan templat 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 sama dengan nama PV.
          volumeAttributes:
            bucket: "Your Bucket"
            url: "Your oss url"
            akId: "Your AccessKey ID"
            akSecret: "Your AccessKey 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

      Parameter

      Deskripsi

      bucket

      Nama bucket OSS. Nama tersebut harus unik secara global dalam OSS. Untuk informasi selengkapnya, lihat Konvensi penamaan bucket.

      url

      URL yang digunakan untuk mengakses file OSS. Untuk informasi selengkapnya, lihat Mendapatkan URL satu file atau beberapa file.

      akId

      ID AccessKey dan AccessKey Secret yang digunakan untuk mengakses OSS. Kami menyarankan Anda menggunakan RAM user untuk akses. Untuk informasi selengkapnya, lihat Buat pasangan Kunci Akses.

      akSecret

      otherOpts

      Parameter kustom untuk memasang OSS.

      • Opsi -o max_stat_cache_size=0 menonaktifkan cache atribut. Setiap kali Anda mengakses file, informasi atribut terbaru diambil dari OSS.

      • Opsi -o allow_other memungkinkan pengguna lain mengakses sistem file yang dipasang.

      Untuk informasi selengkapnya tentang pengaturan parameter, lihat Opsi pengaturan yang didukung ossfs.

    2. Jalankan perintah berikut untuk membuat PV dan PVC.

      kubectl apply -f Tensorflow.yaml
  4. Jalankan perintah berikut untuk memulai 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

    Output yang diharapkan:

    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
  5. Jalankan perintah berikut untuk menampilkan daftar layanan yang sedang berjalan.

    arena serve list

    Hanya layanan bert-tfserving yang sedang berjalan:

    NAME            TYPE        VERSION       DESIRED  AVAILABLE  ADDRESS        PORTS
    bert-tfserving  Tensorflow  202106251556  1        1          172.16.95.171  GRPC:8500,RESTFUL:8501
  6. Jalankan perintah berikut untuk melihat detail layanan inferensi bert-tfserving.

    arena serve get bert-tfserving

    Output yang diharapkan:

    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

    Output tersebut menunjukkan bahwa model berhasil diterapkan menggunakan tensorflow serving dan mengekspos dua port API: 8500 (gRPC) dan 8501 (HTTP).

  7. Secara default, arena serve tensorflow mengekspos layanan inferensi melalui ClusterIP. Anda harus mengonfigurasi Ingress jaringan publik untuk akses langsung.

    1. Di halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Network > Ingresses.

    2. Dari daftar drop-down Namespace di bagian atas halaman, pilih namespace inference, yang berisi layanan inferensi yang dibuat pada Langkah 6.

    3. Di pojok kanan atas halaman, klik Create Ingress. Untuk informasi selengkapnya tentang parameter, lihat Buat dan gunakan Ingress NGINX untuk mengekspos layanan.

      • Name: Pada contoh ini, atur nama menjadi Tensorflow.

      • Rule:

        • Host: Nama domain kustom, misalnya, test.example.com.

        • Mappings:

          • Path: Biarkan bidang ini kosong untuk menggunakan path root /.

          • Match Rule: Nilai default (ImplementationSpecific).

          • Service: Dapatkan nama dengan menjalankan perintah kubectl get service.

          • Port: Pada contoh ini, atur port menjadi 8501.

  8. Setelah Ingress dibuat, dapatkan alamat Ingress dari kolom Ingresses pada halaman Rules.

  9. Jalankan perintah berikut untuk memanggil API layanan inferensi. Untuk informasi selengkapnya tentang tensorflow serving, lihat dokumentasi API di Tensorflow Serving API.

    curl "http://<Ingress address>"

    Output yang diharapkan:

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