すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:TensorFlow モデル推論サービスのデプロイ

最終更新日:Jun 21, 2026

このトピックでは、Arena を使用して TensorFlow モデルを推論サービスとしてデプロイする方法について説明します。

前提条件

操作手順

説明

このトピックでは、TensorFlow 1.15 でトレーニングされた BERT モデルを使用して、推論サービスをデプロイします。モデルは保存済みモデルとしてエクスポートされます。

  1. 次のコマンドを実行して、クラスターで使用可能な GPU リソースを確認します。

    arena top node

    想定される出力:

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

    出力は、モデルのデプロイに 3 つの GPU ノードが使用可能であることを示しています。

  2. Object Storage Service (OSS) のバケットにモデルをアップロードします。

    重要

    OSS にモデルをアップロードする次の手順は、Linux システム向けです。他のオペレーティングシステムでのアップロード手順については、「ossutil コマンドラインツールのクイックスタート」をご参照ください。

    1. ossutil のインストール

    2. examplebucket という名前のバケットを作成します。

      • 次のコマンドを実行して examplebucket を作成します。

        ossutil64 mb oss://examplebucket
      • 次の出力は、examplebucket が作成されたことを示します:

        0.668238(s) elapsed
    3. モデルを examplebucket バケットにアップロードします。

      ossutil64 cp model.savedmodel oss://examplebucket
  3. PersistentVolume (PV) と PersistentVolumeClaim (PVC) を作成します。

    1. 次のテンプレートに基づいて Tensorflow.yaml ファイルを作成します。

      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   # PV 名と同じにする必要があります。
          volumeAttributes:
            bucket: "お使いのバケット"
            url: "お使いの OSS URL"
            akId: "お使いの AccessKey ID"
            akSecret: "お使いの 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

      パラメーター

      説明

      bucket

      OSS バケットの名前。この名前は OSS 内でグローバルに一意である必要があります。詳細については、「バケットの命名規則」をご参照ください。

      url

      OSS ファイルへのアクセスに使用される URL。詳細については、「単一または複数のファイルの URL の取得」をご参照ください。

      akId

      OSS へのアクセスに使用される AccessKey ID と AccessKey Secret。RAM ユーザーを使用してアクセスすることを推奨します。詳細については、「AccessKey ペアの作成」をご参照ください。

      akSecret

      otherOpts

      OSS をマウントするためのカスタムパラメーター。

      • -o max_stat_cache_size=0 オプションは属性キャッシュを無効にします。ファイルにアクセスするたびに、最新の属性情報が OSS から取得されます。

      • -o allow_other オプションを使用すると、他のユーザーがマウントされたファイルシステムにアクセスできます。

      パラメーター設定の詳細については、「ossfs でサポートされる設定オプション」をご参照ください。

    2. 次のコマンドを実行して PV と PVC を作成します。

      kubectl apply -f Tensorflow.yaml
  4. 次のコマンドを実行して、bert-tfserving という名前の tensorflow serving インスタンスを起動します。

    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

    想定される出力:

    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. 次のコマンドを実行して、現在実行中のサービスを一覧表示します。

    arena serve list

    bert-tfserving サービスのみが実行中です。

    NAME            TYPE        VERSION       DESIRED  AVAILABLE  ADDRESS        PORTS
    bert-tfserving  Tensorflow  202106251556  1        1          172.16.95.171  GRPC:8500,RESTFUL:8501
  6. 次のコマンドを実行して、bert-tfserving 推論サービスの詳細を表示します。

    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

    出力は、モデルが tensorflow serving を使用して正常にデプロイされ、8500 (gRPC) と 8501 (HTTP) の 2 つの API ポートが公開されていることを示しています。

  7. デフォルトでは、arena serve tensorflow は ClusterIP を介して推論サービスを公開します。直接アクセスするには、パブリックネットワーク Ingress を設定する必要があります。

    1. クラスターリスト ページで、対象クラスターの名前をクリックします。左側メニューで、 ネットワーク > Ingress を選択します。

    2. ページ上部の 名前空間 ドロップダウンリストから、手順 4 で作成された推論サービスを含む inference 名前空間を選択します。

    3. ページの右上隅にある ingress の作成 をクリックします。パラメーターの詳細については、「NGINX Ingress を作成して使用し、サービスを公開する」をご参照ください。

      • 名前:この例では、名前を Tensorflow に設定します。

      • ルール

        • ドメイン名:カスタムドメイン名 (例:test.example.com)。

        • マッピング

          • パス:このフィールドは空のままにして、ルートパス / を使用します。

          • 一致ルール:デフォルト値 (ImplementationSpecific)。

          • サービス名:ドロップダウンリストから、bert-tfserving で始まるサービス名を選択します。

          • ポート:この例では、ポートを 8501 に設定します。

  8. Ingress が作成されたら、 ルール ページの Ingress 列から Ingress アドレスを取得します。

  9. 次のコマンドを実行して、推論サービス API を呼び出します。tensorflow serving の詳細については、「Tensorflow Serving API」の API ドキュメントをご参照ください。

    curl "http://<Ingress address>"

    想定される出力:

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