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

Platform For AI:TensorFlow プロセッサ

最終更新日:Sep 12, 2026

TensorFlow SavedModel 形式のモデルを、Elastic Algorithm Service (EAS) 上に REST API 推論サービスとしてデプロイできます。 CPU と GPU の両方をサポートしています。

前提条件

開始する前に、以下が準備できていることを確認してください。

  • SavedModel 形式の TensorFlow モデル。 Keras およびチェックポイント形式のモデルは、デプロイ前に変換する必要があります。変換手順については、「TensorFlow モデルを SavedModel 形式でエクスポートする」をご参照ください。

  • (オプション) PAI-Blade で最適化されたモデル。 PAI-Blade で最適化されたモデルは、変換なしで直接実行できます。

モデルのデプロイ

ステップ 1:サービス設定ファイルの作成

processor フィールドを、お使いの TensorFlow バージョンとハードウェアに対応するプロセッサ名に設定します。次の例は、CPU ベースの TensorFlow 1.15 サービスをデプロイする場合の設定です。

{
  "name": "tf_serving_test",
  "model_path": "oss://examplebucket.oss-cn-shanghai.aliyuncs.com/models/model.tar.gz",
  "processor": "tensorflow_cpu_1.15",
  "metadata": {
    "instance": 1,
    "cpu": 1,
    "memory": 4000
  }
}

プロセッサ名の一覧とサポートされているバージョンについては、「プロセッサのバージョン」をご参照ください。

EASCMD クライアントを使用してデプロイする方法については、「サービスのデプロイ:EASCMD & DSW」をご参照ください。コンソールからデプロイする方法については、「サービスのデプロイ:コンソール」をご参照ください。

ステップ 2:エンドポイントと認証トークンの取得

デプロイ後、サービス詳細の概要 ページに移動し、基本情報 セクションでエンドポイント情報の表示 をクリックして、サービスアクセス用のエンドポイントとサービス認証用のトークンを表示します。

サービスの呼び出し

TensorFlow サービスは、入力と出力の両方に protobuf 形式を使用します。オンラインデバッグは protobuf 形式をサポートしていません。

EAS は、リクエストのシリアル化を処理し、直接接続とフォールトトレランス機構を含むソフトウェア開発キット (SDK) を提供しています。生の protobuf リクエストを構築する必要がない限り、SDK を使用してください。

モデルの入出力の確認

SavedModel 形式のモデルは、空のリクエストを送信すると、入出力の構造を JSON 形式で返します。これを使用して、推論コードを記述する前にテンソル名、形状、データ型を確認できます。

# 空のリクエスト — モデル構造を返す
curl <endpoint>/api/predict/<service-name> \
  -H 'Authorization: <authentication-token>'

レスポンスの例:

{
    "inputs": [
        {
            "name": "images",
            "shape": [-1, 784],
            "type": "DT_FLOAT"
        }
    ],
    "outputs": [
        {
            "name": "scores",
            "shape": [-1, 10],
            "type": "DT_FLOAT"
        }
    ],
    "signature_name": "predict_images"
}
Frozen pb 形式のモデルは構造情報を返しません。

推論リクエストの送信

次の例は、Python SDK を使用してループ内で推論リクエストを送信する方法を示しています。

#!/usr/bin/env python

from eas_prediction import PredictClient
from eas_prediction import TFRequest

if __name__ == '__main__':
    # エンドポイントとサービス名でクライアントを初期化します
    client = PredictClient('http://1828488879222***.cn-shanghai.pai-eas.aliyuncs.com', 'mnist_saved_model_example')
    client.set_token('YTg2ZjE0ZjM4ZmE3OTc0NzYxZDMyNmYzMTJjZTQ1****')
    client.init()

    # シグネチャ名を使用してリクエストを構築します
    req = TFRequest('predict_images')
    req.add_feed('images', [1, 784], TFRequest.DT_FLOAT, [1] * 784)

    # リクエストを送信します
    for x in range(0, 1000000):
        resp = client.predict(req)
        print(resp)

パラメータの詳細については、「Python SDK の使用」をご参照ください。

生の protobuf を使用してサービスリクエストを手動で構築する方法については、「リクエスト形式」をご参照ください。

モデルのウォームアップの設定

TensorFlow モデルは遅延初期化を使用します。モデルが最初にリクエストを受信すると、ファイルとパラメータをメモリにロードします。この初期化により、最初のリクエストで 408 (タイムアウト) や 450 (キューがいっぱい) などのエラーが発生する可能性があり、ローリングアップデート中にレイテンシーのスパイクが発生します。

ローリングアップデート中のサービスのジッターを防ぐため、ウォームアップを設定してください。

ステップ 1:ウォームアップリクエストファイルの作成

手順については、「高度な設定:モデルサービスのウォームアップ」をご参照ください。

ステップ 2:サービスファイルへのウォームアップ設定の追加

OSS 内のウォームアップリクエストファイルを指す warm_up_data_path フィールドを追加します。

{
  "name": "tf_serving_test",
  "model_path": "oss://examplebucket.oss-cn-shanghai.aliyuncs.com/models/model.tar.gz",
  "processor": "tensorflow_cpu_1.15",
  "warm_up_data_path": "oss://path/to/warm_up_test.bin",
  "metadata": {
    "instance": 1,
    "cpu": 1,
    "memory": 4000
  }
}

リクエスト形式

SDK はリクエストのシリアル化を自動的に処理します。リクエストを手動で構築する場合は、以下の protobuf 定義からコードを生成してください。完全な手順については、「TensorFlow サービスリクエストの構築」をご参照ください。

syntax = "proto3";
option cc_enable_arenas = true;
option java_package = "com.aliyun.openservices.eas.predict.proto";
option java_outer_classname = "PredictProtos";

enum ArrayDataType {
  DT_INVALID = 0;
  DT_FLOAT = 1;
  DT_DOUBLE = 2;
  DT_INT32 = 3;
  DT_UINT8 = 4;
  DT_INT16 = 5;
  DT_INT8 = 6;
  DT_STRING = 7;
  DT_COMPLEX64 = 8;   // 単精度複素数
  DT_INT64 = 9;
  DT_BOOL = 10;
  DT_QINT8 = 11;      // 量子化 int8
  DT_QUINT8 = 12;     // 量子化 uint8
  DT_QINT32 = 13;     // 量子化 int32
  DT_BFLOAT16 = 14;   // Float32 を 16 ビットに切り捨て (キャスト操作のみ)
  DT_QINT16 = 15;     // 量子化 int16
  DT_QUINT16 = 16;    // 量子化 uint16
  DT_UINT16 = 17;
  DT_COMPLEX128 = 18; // 倍精度複素数
  DT_HALF = 19;
  DT_RESOURCE = 20;
  DT_VARIANT = 21;    // 任意の C++ データ型
}

// 配列の次元
message ArrayShape {
  repeated int64 dim = 1 [packed = true];
}

// 配列を表すプロトコルバッファ
message ArrayProto {
  ArrayDataType dtype = 1;
  ArrayShape array_shape = 2;
  repeated float float_val = 3 [packed = true];    // DT_FLOAT
  repeated double double_val = 4 [packed = true];  // DT_DOUBLE
  repeated int32 int_val = 5 [packed = true];      // DT_INT32、DT_INT16、DT_INT8、DT_UINT8
  repeated bytes string_val = 6;                   // DT_STRING
  repeated int64 int64_val = 7 [packed = true];    // DT_INT64
  repeated bool bool_val = 8 [packed = true];      // DT_BOOL
}

// モデルのシグネチャと入力テンソルを指定し、返す前に出力をフィルタリング
message PredictRequest {
  string signature_name = 1;
  map<string, ArrayProto> inputs = 2;
  repeated string output_filter = 3;
}

// 予測が成功した場合の出力テンソルを含む
message PredictResponse {
  map<string, ArrayProto> outputs = 1;
}

プロセッサのバージョン

特定のバージョン要件がない限り、最新のプロセッサバージョンを使用してください。新しいバージョンは、より優れたパフォーマンスと前方互換性を提供します。

プロセッサ名

TensorFlow バージョン

GPU サポート

tensorflow_cpu_1.12

TensorFlow 1.12

なし

tensorflow_cpu_1.14

TensorFlow 1.14

なし

tensorflow_cpu_1.15

TensorFlow 1.15

なし

tensorflow_cpu_2.3

TensorFlow 2.3

なし

tensorflow_cpu_2.4

TensorFlow 2.4

なし

tensorflow_cpu_2.7

TensorFlow 2.7

なし

tensorflow_gpu_1.12

TensorFlow 1.12

あり

tensorflow_gpu_1.14

TensorFlow 1.14

あり

tensorflow_gpu_1.15

TensorFlow 1.15

あり

tensorflow_gpu_2.4

TensorFlow 2.4

あり

tensorflow_gpu_2.7

TensorFlow 2.7

あり

次のステップ