全部产品
Search
文档中心

Container Service for Kubernetes:Terapkan model TensorFlow sebagai layanan inferensi

更新时间:Jul 06, 2025

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

Prasyarat

Prosedur

Catatan

Dalam topik ini, model BERT yang dilatih dengan TensorFlow 1.15 digunakan untuk menerapkan layanan inferensi. Model diekspor sebagai model tersimpan.

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

    arena top node

    Keluaran 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
    ---------------------------------------------------------------------------------------------------
    Alokasi/Total GPU dari node yang memiliki sumber daya nvidia.com/gpu Di Kluster:
    0/3 (0,0%)

    Keluaran di atas menunjukkan bahwa kluster memiliki tiga node yang dipercepat GPU tempat Anda dapat menerapkan model.

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

    Penting

    Contoh ini menunjukkan cara mengunggah model ke OSS dari sistem Linux. Jika Anda menggunakan sistem operasi lain, lihat ossutil.

    1. Instal ossutil.

    2. Buat bucket bernama examplebucket.

      • Jalankan perintah berikut untuk membuat bucket bernama examplebucket:

        ossutil64 mb oss://examplebucket
      • Jika keluaran berikut ditampilkan, bucket bernama examplebucket telah dibuat:

        0,668238(s) elapsed
    3. Unggah model ke bucket examplebucket.

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

    1. Buat file bernama Tensorflow.yaml berdasarkan template 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   // Nilai ini harus sama dengan nama PV.
          volumeAttributes:
            bucket: "Nama Bucket Anda"
            url: "URL OSS Anda"
            akId: "ID AccessKey Anda"
            akSecret: "Rahasia AccessKey Anda"
            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, yang unik secara global di OSS. Untuk informasi lebih lanjut, lihat Konvensi penamaan bucket.

      url

      URL yang digunakan untuk mengakses objek di bucket. Untuk informasi lebih lanjut, lihat Dapatkan URL satu objek atau beberapa objek.

      akId

      ID AccessKey dan Rahasia AccessKey yang digunakan untuk mengakses bucket OSS. Kami sarankan Anda mengakses bucket OSS sebagai Pengguna Resource Access Management (RAM). Untuk informasi lebih lanjut, lihat Buat pasangan AccessKey.

      akSecret

      otherOpts

      Parameter kustom untuk memasang bucket OSS.

      • Tetapkan -o max_stat_cache_size=0 untuk menonaktifkan caching metadata. Jika fitur ini dinonaktifkan, sistem mengambil metadata terbaru dari OSS setiap kali mencoba mengakses objek di OSS.

      • Tetapkan -o allow_other untuk mengizinkan pengguna lain mengakses bucket OSS yang Anda pasang.

      Untuk informasi lebih lanjut tentang parameter lainnya, lihat Parameter kustom yang didukung oleh ossfs.

    2. Jalankan perintah berikut untuk membuat PV dan PVC:

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

    Keluaran 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] Pekerjaan bert-tfserving telah berhasil dikirimkan
    INFO[0003] Anda dapat menjalankan `arena get bert-tfserving --type tf-serving` untuk memeriksa status pekerjaan
  5. Jalankan perintah berikut untuk memeriksa semua layanan yang sedang berjalan:

    arena serve list

    Keluaran menunjukkan bahwa hanya layanan bert-tfserving yang sedang berjalan.

    NAMA            TIPE        VERSI       DIINGINKAN  TERSEDIA  ALAMAT        PORT
    bert-tfserving  Tensorflow  202106251556  1        1          172.16.95.171  GRPC:8500,RESTFUL:8501
  6. Jalankan perintah berikut untuk memeriksa detail layanan bert-tfserving:

    arena serve get bert-tfserving

    Keluaran yang diharapkan:

    Nama:       bert-tfserving
    Namespace:  inference
    Tipe:       Tensorflow
    Versi:    202106251556
    Diinginkan:    1
    Tersedia:  1
    Usia:        4m
    Alamat:    172.16.95.171
    Port:       GRPC:8500,RESTFUL:8501
    
    
    Instance:
      NAMA                                                             STATUS   USIA  SIAP  RESTARTS  NODE
      ----                                                             ------   ---  -----  --------  ----
      bert-tfserving-202106251556-tensorflow-serving-8554d58d67-jd2z9  Running  4m   1/1    0         cn-beijing.192.168.0.88

    Keluaran di atas menunjukkan bahwa model berhasil diterapkan menggunakan TensorFlow Serving. Port 8500 terbuka untuk gRPC dan port 8501 terbuka untuk HTTP.

  7. Secara default, layanan inferensi yang diterapkan menggunakan arena serve tensorflow menyediakan IP kluster. Anda perlu membuat Ingress yang menghadap Internet untuk mengakses layanan inferensi melalui IP kluster.

    1. Di halaman Clusters, klik nama kluster yang ingin Anda kelola dan pilih Network > Ingresses di panel navigasi di sebelah kiri.

    2. Di bagian atas halaman, pilih namespace inference yang ditampilkan di Langkah 6 dari daftar drop-down Namespace.

    3. Klik Create Ingress di bagian kanan atas halaman. Untuk informasi lebih lanjut tentang parameter Ingress, lihat Buat NGINX Ingress.

      • Name: Tensorflow dimasukkan dalam contoh ini.

      • Rules:

        • Domain Name: Masukkan nama domain kustom, seperti test.example.com.

        • Mappings:

          • Path: Path root / digunakan dalam contoh ini.

          • Rule: Aturan default (ImplementationSpecific) digunakan dalam contoh ini.

          • Service Name: Masukkan nama layanan yang dikembalikan oleh perintah kubectl get service.

          • Port: Port 8501 digunakan dalam contoh ini.

  8. Setelah Anda membuat Ingress, buka halaman Ingresses dan temukan Ingress tersebut. Nilai di kolom Rules menampilkan alamat Ingress.12

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

    curl "http://<Alamat Ingress>"

    Keluaran yang diharapkan:

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