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

Platform For AI:ビルトイン プロセッサ

最終更新日:Apr 24, 2025

プロセッサとは、オンライン予測ロジックのパッケージです。Elastic Algorithm Service (EAS) of Platform for AI (PAI) は、モデルのデプロイによく使用されるビルトイン プロセッサを提供しています。ビルトイン プロセッサを使用すると、モデルのオンライン予測ロジックを開発するコストを削減できます。

EAS が提供するプロセッサの名前とコードを次の表に示します。EASCMD クライアントを使用してモデルをデプロイする場合、プロセッサ コードが必要です。

プロセッサ名

プロセッサ コード(EASCMD を使用する場合は必須)

リファレンス

CPU エディション

GPU エディション

EasyRec

easyrec-2.4

easyrec-2.4

EasyRec プロセッサ

TorchEasyRec

easyrec-torch-1.0

easyrec-torch-1.0

TorchEasyRec プロセッサ

PMML

pmml

なし

PMML プロセッサ

TensorFlow 1.12

tensorflow_cpu_1.12

tensorflow_gpu_1.12

TensorFlow 1.12 プロセッサ

TensorFlow 1.14

tensorflow_cpu_1.14

tensorflow_gpu_1.14

TensorFlow 1.14 プロセッサ

TensorFlow 1.15

tensorflow_cpu_1.15

tensorflow_gpu_1.15

アジリティ エディションの PAI-Blade に基づく最適化エンジンを内蔵した TensorFlow 1.15 プロセッサ

TensorFlow 2.3

tensorflow_cpu_2.3

なし

TensorFlow 2.3 プロセッサ

PyTorch 1.6

pytorch_cpu_1.6

pytorch_gpu_1.6

アジリティ エディションの PAI-Blade に基づく最適化エンジンを内蔵した PyTorch 1.6 プロセッサ

Caffe

caffe_cpu

caffe_gpu

Caffe プロセッサ

パラメータ サーバー アルゴリズム

parameter_sever

なし

PS プロセッサ

Alink

alink_pai_processor

なし

なし

xNN

xnn_cpu

なし

なし

EasyVision

easy_vision_cpu_tf1.12_torch151

easy_vision_gpu_tf1.12_torch151

EasyVision プロセッサ

EasyTransfer

easytransfer_cpu

easytransfer_gpu

EasyTransfer プロセッサ

EasyNLP

easynlp

easynlp

EasyNLP プロセッサ

EasyCV

easycv

easycv

EasyCV プロセッサ

Blade

blade_cpu

blade_cuda10.0_beta

なし

MediaFlow

なし

mediaflow

MediaFlow プロセッサ

Triton

なし

triton

Triton プロセッサ

PMML プロセッサ

EAS のビルトイン Predictive Model Markup Language (PMML) プロセッサは、次の操作を実行します。

  • PMML ファイルからモデル サービスを読み込みます。

  • モデル サービスを呼び出すために送信されたリクエストを処理します。

  • モデルを使用してリクエスト結果を計算し、クライアントに結果を返します。

PMML プロセッサは、欠損値を入力するためのデフォルト ポリシーを提供します。PMML ファイルの機能列に isMissing ポリシーが指定されていない場合、次の表の値が自動的に使用されます。

データ型

デフォルト入力値

BOOLEAN

false

DOUBLE

0.0

FLOAT

0.0

INT

0

STRING

""

次のいずれかの方法を使用して、PMML ファイルからモデルをデプロイできます。

  • コンソールでモデル ファイルをアップロードする

    [プロセッサの種類] パラメータを [PMML] に設定します。詳細については、「PAI コンソールでモデル サービスをデプロイする」をご参照ください。

  • EASCMD クライアントを使用してモデルをデプロイする

    service.json サービス構成ファイルで、processor パラメータを pmml に設定します。サンプル コード:

    {
      "processor": "pmml",
      "generate_token": "true",
      "model_path": "http://xxxxx/lr.pmml",
      "name": "eas_lr_example",
      "metadata": {
        "instance": 1,
        "cpu": 1 # 各 CPU に 4 GB のメモリを割り当てます。1 つの CPU と 4 GB のメモリは 1 つのクォータと見なされます。
      }
    }
  • Data Science Workshop (DSW) を使用してモデルをデプロイする

    service.json サービス構成ファイルを修正します。この方法は、EASCMD クライアントを使用してモデルをデプロイする方法に似ています。詳細については、「EASCMD を使用してモデル サービスをデプロイする」をご参照ください。

TensorFlow 1.12 プロセッサ

EAS の TensorFlow 1.12 プロセッサは、SavedModel または SessionBundle 形式の TensorFlow モデルを読み込むことができます。SavedModel 形式を使用することをお勧めします。モデルをデプロイする前に、Keras モデルまたは Checkpoint モデルを SavedModel モデルに変換する必要があります。詳細については、「TensorFlow に関する FAQ」をご参照ください。

説明

汎用プロセッサは、カスタム TensorFlow 操作をサポートしていません。

次のいずれかの方法を使用して、TensorFlow モデルをデプロイできます。

  • コンソールでモデル ファイルをアップロードする

    [プロセッサの種類] パラメータを [tensorflow 1.12] に設定します。詳細については、「PAI コンソールでモデル サービスをデプロイする」をご参照ください。

  • EASCMD クライアントを使用してモデルをデプロイする

    service.json サービス構成ファイルで、モデル リソースに基づいて processor パラメータを tensorflow_cpu_1.12 または tensorflow_gpu_1.12 に設定します。processor パラメータの値がリソースの種類と一致しない場合、デプロイ エラーが発生します。サンプル コード:

    {
      "name": "tf_serving_test",
      "generate_token": "true",
      "model_path": "http://xxxxx/savedmodel_example.zip",
      "processor": "tensorflow_cpu_1.12",
      "metadata": {
        "instance": 1,
        "cpu": 1,
        "gpu": 0,
        "memory": 2000
      }
    }
  • DSW を使用してモデルをデプロイする

    service.json サービス構成ファイルを修正します。この方法は、EASCMD クライアントを使用してモデルをデプロイする方法に似ています。詳細については、「EASCMD を使用してモデル サービスをデプロイする」をご参照ください。

TensorFlow 1.14 プロセッサ

EAS の TensorFlow 1.14 プロセッサは、SavedModel または SessionBundle 形式の TensorFlow モデルを読み込むことができます。SavedModel 形式を使用することをお勧めします。モデルをデプロイする前に、Keras モデルまたは Checkpoint モデルを SavedModel モデルに変換する必要があります。詳細については、「TensorFlow に関する FAQ」をご参照ください。

説明

汎用プロセッサは、カスタム TensorFlow 操作をサポートしていません。

次のいずれかの方法を使用して、TensorFlow モデルをデプロイできます。

  • コンソールでモデル ファイルをアップロードする

    [プロセッサの種類] パラメータを [tensorflow 1.14] に設定します。詳細については、「PAI コンソールでモデル サービスをデプロイする」をご参照ください。

  • EASCMD クライアントを使用してモデルをデプロイする

    service.json サービス構成ファイルで、モデル リソースに基づいて processor パラメータを tensorflow_cpu_1.14 または tensorflow_gpu_1.14 に設定します。processor パラメータの値がリソースの種類と一致しない場合、デプロイ エラーが発生します。サンプル コード:

    {
      "name": "tf_serving_test",
      "generate_token": "true",
      "model_path": "http://xxxxx/savedmodel_example.zip",
      "processor": "tensorflow_cpu_1.14",
      "metadata": {
        "instance": 1,
        "cpu": 1,
        "gpu": 0,
        "memory": 2000
      }
    }
  • DSW を使用してモデルをデプロイする

    service.json サービス構成ファイルを修正します。この方法は、EASCMD クライアントを使用してモデルをデプロイする方法に似ています。詳細については、「EASCMD を使用してモデル サービスをデプロイする」をご参照ください。

アジリティ エディションの PAI-Blade に基づく最適化エンジンを内蔵した TensorFlow 1.15 プロセッサ

EAS の TensorFlow 1.15 プロセッサは、SavedModel または SessionBundle 形式の TensorFlow モデルを読み込むことができます。SavedModel 形式を使用することをお勧めします。モデルをデプロイする前に、Keras モデルまたは Checkpoint モデルを SavedModel モデルに変換する必要があります。詳細については、「TensorFlow に関する FAQ」をご参照ください。

説明
  • 汎用プロセッサは、カスタム TensorFlow 操作をサポートしていません。

  • TensorFlow 1.15 プロセッサは、アジリティ エディションの PAI-Blade に基づく最適化エンジンを内蔵しています。このプロセッサを使用すると、アジリティ エディションの PAI-Blade によって最適化された TensorFlow モデルをデプロイできます。

次のいずれかの方法を使用して、TensorFlow モデルをデプロイできます。

  • モデル ファイルをコンソールにアップロードする

    [プロセッサの種類] パラメータを [tensorflow 1.15] に設定します。詳細については、「PAI コンソールでモデル サービスをデプロイする」をご参照ください。

  • EASCMD クライアントを使用してモデルをデプロイする

    service.json サービス構成ファイルで、モデル リソースに基づいて processor パラメータを tensorflow_cpu_1.15 または tensorflow_gpu_1.15 に設定します。processor パラメータの値がリソースの種類と一致しない場合、デプロイ エラーが発生します。サンプル コード:

    {
      "name": "tf_serving_test",
      "generate_token": "true",
      "model_path": "http://xxxxx/savedmodel_example.zip",
      "processor": "tensorflow_cpu_1.15",
      "metadata": {
        "instance": 1,
        "cpu": 1,
        "gpu": 0,
        "memory": 2000
      }
    }
  • DSW を使用してモデルをデプロイする

    service.json サービス構成ファイルを修正します。この方法は、EASCMD クライアントを使用してモデルをデプロイする方法に似ています。詳細については、「EASCMD を使用してモデル サービスをデプロイする」をご参照ください。サービス構成ファイルのパラメータの詳細については、「サービスを作成する」をご参照ください。

TensorFlow 2.3 プロセッサ

TensorFlow 2.3 プロセッサ EAS は、SavedModel または SessionBundle 形式の TensorFlow モデルを読み込むことができます。SavedModel 形式を使用することをお勧めします。モデルをデプロイする前に、Keras モデルまたは Checkpoint モデルを SavedModel モデルに変換する必要があります。詳細については、「TensorFlow に関する FAQ」をご参照ください。

説明

汎用プロセッサは、カスタム TensorFlow 操作をサポートしていません。

次のいずれかの方法を使用して、TensorFlow モデルをデプロイできます。

  • コンソールでモデル ファイルをアップロードする

    [プロセッサの種類] パラメータを [tensorflow 2.3] に設定します。詳細については、「PAI コンソールでモデル サービスをデプロイする」をご参照ください。

  • EASCMD クライアントを使用してモデルをデプロイする

    service.json サービス構成ファイルで、processor パラメータを tensorflow_cpu_2.3 に設定します。サンプル コード:

    {
      "name": "tf_serving_test",
      "generate_token": "true",
      "model_path": "http://xxxxx/savedmodel_example.zip",
      "processor": "tensorflow_cpu_2.3",
      "metadata": {
        "instance": 1,
        "cpu": 1,
        "gpu": 0,
        "memory": 2000
      }
    }
  • DSW を使用してモデルをデプロイする

    service.json サービス構成ファイルを修正します。この方法は、EASCMD クライアントを使用してモデルをデプロイする方法に似ています。詳細については、「EASCMD を使用してモデル サービスをデプロイする」をご参照ください。

アジリティ エディションの PAI-Blade に基づく最適化エンジンを内蔵した PyTorch 1.6 プロセッサ

EAS の PyTorch 1.6 プロセッサは、TorchScript 形式のモデルを読み込むことができます。詳細については、「TorchScript」をご参照ください。

説明
  • 汎用プロセッサは PyTorch 拡張機能をサポートしていません。このプロセッサを使用して、TensorFlow モデル以外のモデルをインポートまたはエクスポートすることはできません。

  • PyTorch 1.6 プロセッサは、アジリティ エディションの PAI-Blade に基づく最適化エンジンを内蔵しています。このプロセッサを使用すると、アジリティ エディションの PAI-Blade によって最適化された PyTorch モデルをデプロイできます。

次のいずれかの方法を使用して、TorchScript モデルをデプロイできます。

  • コンソールでモデル ファイルをアップロードする

    [プロセッサの種類] パラメータを [pytorch 1.6] に設定します。詳細については、「PAI コンソールでモデル サービスをデプロイする」をご参照ください。

  • EASCMD クライアントを使用してモデルをデプロイする

    service.json サービス構成ファイルで、モデル リソースに基づいて processor パラメータを pytorch_cpu_1.6 または pytorch_gpu_1.6 に設定します。processor パラメータの値がリソースの種類と一致しない場合、デプロイ エラーが発生します。サンプル コード:

    {
      "name": "pytorch_serving_test",
      "generate_token": "true",
      "model_path": "http://xxxxx/torchscript_model.pt",
      "processor": "pytorch_gpu_1.6",
      "metadata": {
        "instance": 1,
        "cpu": 1,
        "gpu": 1,
        "cuda": "10.0",
        "memory": 2000
      }
    }
  • DSW を使用してモデルをデプロイする

    service.json サービス構成ファイルを修正します。この方法は、EASCMD クライアントを使用してモデルをデプロイする方法に似ています。詳細については、「EASCMD を使用してモデル サービスをデプロイする」をご参照ください。サービス構成ファイルのパラメータの詳細については、「サービスを作成する」をご参照ください。

Caffe プロセッサ

EAS の Caffe プロセッサは、Caffe フレームワークに基づいてトレーニングされたディープ ラーニング モデルを読み込むことができます。 Caffe フレームワークは柔軟な機能を備えています。Caffe モデルをデプロイする場合は、モデル パッケージでモデル ファイルと重みファイルの名前を指定する必要があります。

説明

汎用プロセッサは、カスタム データ層をサポートしていません。

次のいずれかの方法を使用して、Caffe モデルをデプロイできます。

  • コンソールでモデル ファイルをアップロードする

    [プロセッサの種類] パラメータを [caffe] に設定します。詳細については、「PAI コンソールでモデル サービスをデプロイする」をご参照ください。

  • EASCMD クライアントを使用してモデルをデプロイする

    service.json サービス構成ファイルで、モデル リソースに基づいて processor パラメータを caffe_cpu または caffe_gpu に設定します。processor パラメータの値がリソースの種類と一致しない場合、デプロイ エラーが発生します。サンプル コード:

    {
      "name": "caffe_serving_test",
      "generate_token": "true",
      "model_path": "http://xxxxx/caffe_model.zip",
      "processor": "caffe_cpu",
      "model_config": {
        "model": "deploy.prototxt",
        "weight": "bvlc_reference_caffenet.caffemodel"
      },
      "metadata": {
        "instance": 1,
        "cpu": 1,
        "gpu": 0,
        "memory": 2000
      }
    }
  • DSW を使用してモデルをデプロイする

    service.json サービス構成ファイルを修正します。この方法は、EASCMD クライアントを使用してモデルをデプロイする方法に似ています。詳細については、「EASCMD を使用してモデル サービスをデプロイする」をご参照ください。

PS プロセッサ

EAS の PS プロセッサは、PS アルゴリズムに基づいて開発されています。プロセッサは PS 形式のモデルを読み込むことができます。

次のセクションでは、PS モデルをサービスとしてデプロイし、PS モデル サービスを使用してリクエストを送信する方法について説明します。

  • 次のいずれかの方法を使用して、PS モデルをデプロイできます。

    • コンソールでモデル ファイルをアップロードする

      [プロセッサの種類] パラメータを [PS アルゴリズム] に設定します。詳細については、「コンソールでモデルをアップロードおよびデプロイする」をご参照ください。

    • EASCMD クライアントを使用してモデルをデプロイする

      service.json サービス構成ファイルで、processor パラメータを parameter_sever に設定します。サンプル コード:

      {
        "name":"ps_smart",
        "model_path": "oss://examplebucket/xlab_m_pai_ps_smart_b_1058272_v0.tar.gz",
        "processor": "parameter_sever",
        "metadata": {
          "region": "beijing",
          "cpu": 1,
          "instance": 1,
          "memory": 2048
        }
      }
    • DSW を使用してモデルをデプロイする

      service.json サービス構成ファイルを修正します。この方法は、EASCMD クライアントを使用してモデルをデプロイする方法に似ています。詳細については、「EASCMD を使用してモデル サービスをデプロイする」をご参照ください。

  • リクエストの説明

    PS モデル サービスを使用して、単一のリクエストを送信するか、複数のリクエストを同時に送信できます。2 つの方法のリクエスト構文は同じです。JSON 配列に含まれる機能オブジェクトは同じです。

    • 単一のリクエストを送信するためのサンプル構文

      curl "http://eas.location/api/predict/ps_smart" -d "[
                  {
                      "f0": 1,
                      "f1": 0.2,
                      "f3": 0.5
                  }
      ]"
    • 複数のリクエストを同時に送信するためのサンプル構文

      curl "http://eas.location/api/predict/ps_smart" -d "[
              {
                  "f0": 1,
                  "f1": 0.2,
                  "f3": 0.5
              },
              {
                  "f0": 1,
                  "f1": 0.2,
                  "f3": 0.5
              }
      ]"
    • レスポンス

      2 つの方法のレスポンス構文も同じです。JSON 配列に含まれる返されるオブジェクトは同じであり、リクエスト構文と同じ順序に従います。

      [
        {
          "label":"xxxx",
          "score" : 0.2,
          "details" : [{"k1":0.3}, {"k2":0.5}]
        },
        {
          "label":"xxxx",
          "score" : 0.2,
          "details" : [{"k1":0.3}, {"k2":0.5}]
        }
      ]

EasyTransfer プロセッサ

EAS の EasyTransfer プロセッサは、EasyTransfer フレームワークに基づいてトレーニングされた TensorFlow ベースのディープ ラーニング自然言語処理 (NLP) モデルを読み込むことができます。

次のいずれかの方法を使用して、EasyTransfer モデルをデプロイできます。

  • コンソールでモデル ファイルをアップロードする

    [プロセッサの種類] パラメータを [easytransfer] に設定します。詳細については、「PAI コンソールでモデル サービスをデプロイする」をご参照ください。

  • EASCMD クライアントを使用してモデルをデプロイする

    service.json サービス構成ファイルで、モデル リソースに基づいて processor パラメータを easytransfer_cpu または easytransfer_gpu に設定します。processor パラメータの値がリソースの種類と一致しない場合、デプロイ エラーが発生します。type フィールド model_config パラメータを、使用するモデルの種類に設定します。次の例では、テキスト分類モデルが使用されています。その他のパラメータの詳細については、「サービスを作成する」をご参照ください。

    • GPU ノードにモデルをデプロイする(この例ではパブリック リソース グループが使用されています)

      {
        "name": "et_app_demo",
        "metadata": {
          "instance": 1
        },
        "cloud": {
          "computing": {
            "instance_type": "ecs.gn6i-c4g1.xlarge"
          }
        },
        "model_path": "http://xxxxx/your_model.zip",
        "processor": "easytransfer_gpu",
        "model_config": {
          "type": "text_classify_bert"
        }
      }
    • CPU ノードにモデルをデプロイする

      {
        "name": "et_app_demo",
        "model_path": "http://xxxxx/your_model.zip",
        "processor": "easytransfer_cpu",
        "model_config": {
          "type":"text_classify_bert"
        },
        "metadata": {
          "instance": 1,
          "cpu": 1,
          "memory": 4000
        }
      }

    サポートされているモデルの種類を次の表に示します。

    ジョブの種類

    モデルの種類

    テキスト マッチング

    text_match_bert

    テキスト分類

    text_classify_bert

    シーケンス ラベリング

    sequence_labeling_bert

    テキストのベクトル化

    vectorization_bert

EasyNLP プロセッサ

EAS の EasyNLP プロセッサは、EasyNLP フレームワークに基づいてトレーニングされた PyTorch ベースのディープ ラーニング NLP モデルを読み込むことができます。

次のいずれかの方法を使用して、EasyNLP モデルをデプロイできます。

  • コンソールでモデル ファイルをアップロードする

    [プロセッサの種類] パラメータを [easynlp] に設定します。詳細については、「PAI コンソールでモデル サービスをデプロイする」をご参照ください。

  • EASCMD クライアントを使用してモデルをデプロイする

    service.json サービス構成ファイルで、processor パラメータを easynlp に設定します。type フィールド model_config パラメータを、使用するモデルの種類に設定します。次の例では、単一ラベル テキスト分類モデルが使用されています。その他のパラメータの詳細については、「サービスを作成する」をご参照ください。

    {
      "name": "easynlp_app_demo",
      "metadata": {
        "instance": 1
      },
      "cloud": {
        "computing": {
          "instance_type": "ecs.gn6i-c4g1.xlarge"
        }
      },
      "model_config": {
        "app_name": "text_classify",
        "type": "text_classify"
      },
      "model_path": "http://xxxxx/your_model.tar.gz",
      "processor": "easynlp"
    }

    サポートされているモデルの種類を次の表に示します。

    ジョブの種類

    モデルの種類

    単一ラベル テキスト分類

    text_classify

    複数ラベル テキスト分類

    text_classify_multi

    テキスト マッチング

    text_match

    シーケンス ラベリング

    sequence_labeling

    テキストのベクトル化

    vectorization

    中国語テキストの要約生成 (GPU)

    sequence_generation_zh

    英語テキストの要約生成 (GPU)

    sequence_generation_en

    中国語テキストの機械読解

    machine_reading_comprehension_zh

    英語テキストの機械読解

    machine_reading_comprehension_en

    WUKONG_CLIP (GPU)

    wukong_clip

    CLIP (GPU)

    clip

モデル サービスが EAS にデプロイされたら、[elastic Algorithm Service (EAS)] ページに移動し、サービスを見つけて、[サービスの種類] 列の [呼び出し方法] をクリックして、サービス エンドポイントとトークンを取得します。次のサンプル コードは、サービスの呼び出しに使用される Python リクエストのサンプルです。

import requests
# 値をサービスのエンドポイントに置き換えます。
url = '<eas-service-url>'
# 値を取得したトークンに置き換えます。
token = '<eas-service-token>'
# 予測データを生成します。次の例では、テキスト分類が使用されています。
request_body = {
    "first_sequence": "hello"
}

headers = {"Authorization": token}
resp = requests.post(url=url, headers=headers, json=request_body)
print(resp.content.decode())

EasyCV プロセッサ

EAS の EasyCV プロセッサは、EasyCV フレームワークに基づいてトレーニングされたディープ ラーニング モデルを読み込むことができます。

次のいずれかの方法を使用して、EasyCV モデルをデプロイできます。

  • コンソールでモデル ファイルをアップロードする

    [プロセッサの種類] パラメータを [easycv] に設定します。詳細については、「PAI コンソールでモデル サービスをデプロイする」をご参照ください。

  • EASCMD クライアントを使用してモデルをデプロイする

    service.json サービス構成ファイルで、processor パラメータを easycv に設定します。type フィールド model_config パラメータを、使用するモデルの種類に設定します。次の例では、画像分類モデルが使用されています。その他のパラメータの詳細については、「サービスを作成する」をご参照ください。

    {
      "name": "easycv_classification_example",
      "processor": "easycv",
      "model_path": "oss://examplebucket/epoch_10_export.pt",
      "model_config": {"type":"TorchClassifier"},
      "metadata": {
        "instance": 1
      },
      "cloud": {
        "computing": {
          "instance_type": "ecs.gn5i-c4g1.xlarge"
        }
      }
    }

    サポートされているモデルの種類を次の表に示します。

    ジョブの種類

    model_config

    画像分類

    {"type":"TorchClassifier"}

    オブジェクト検出

    {"type":"DetectionPredictor"}

    セマンティック セグメンテーション

    {"type":"SegmentationPredictor"}

    YOLOX

    {"type":"YoloXPredictor"}

    ビデオ分類

    {"type":"VideoClassificationPredictor"}

モデル サービスが EAS にデプロイされたら、[elastic Algorithm Service (EAS)] ページに移動し、サービスを見つけて、[サービスの種類] 列の [呼び出し方法] をクリックして、サービス エンドポイントとトークンを取得します。次のサンプル コードは、サービスの呼び出しに使用される Python リクエストのサンプルです。

import requests
import base64
import json
resp = requests.get('http://exmaplebucket.oss-cn-zhangjiakou.aliyuncs.com/images/000000123213.jpg')
ENCODING = 'utf-8'
datas = json.dumps( {
            "image": base64.b64encode(resp.content).decode(ENCODING)
            })
# 値を取得したトークンに置き換えます。
head = {
   "Authorization": "NTFmNDJlM2E4OTRjMzc3OWY0NzI3MTg5MzZmNGQ5Yj***"
}
for x in range(0,10):
    # 値をサービスのエンドポイントに置き換えます。
    resp = requests.post("http://150231884461***.cn-hangzhou.pai-eas.aliyuncs.com/api/predict/test_easycv_classification_example", data=datas, headers=head)
    print(resp.text)
                            

画像ファイルとビデオ ファイルは、送信のために Base64 形式に変換する必要があります。image を使用して画像データを指定し、video を使用してビデオ データを指定します。

EasyVision プロセッサ

EAS の EasyVision プロセッサは、EasyVision フレームワークに基づいてトレーニングされたディープ ラーニング モデルを読み込むことができます。

次のいずれかの方法を使用して、EasyVision モデルをデプロイできます。

  • コンソールでモデル ファイルをアップロードする

    [プロセッサの種類] パラメータを [easyvision] に設定します。詳細については、「PAI コンソールでモデル サービスをデプロイする」をご参照ください。

  • EASCMD クライアントを使用してモデルをデプロイする

    service.json サービス構成ファイルで、モデル リソースに基づいて processor パラメータを easy_vision_cpu_tf1.12_torch151 または easy_vision_gpu_tf1.12_torch151 に設定します。processor パラメータの値がリソースの種類と一致しない場合、デプロイ エラーが発生します。type パラメータ model_config セクションで、トレーニングされたモデルの種類に設定します。次のコード ブロックは例を示しています。その他のパラメータの詳細については、「サービスを作成する」をご参照ください。

    • GPU ノードにモデルをデプロイする

      {
        "name": "ev_app_demo",
        "processor": "easy_vision_gpu_tf1.12_torch151",
        "model_path": "oss://path/to/your/model",
        "model_config": "{\"type\":\"classifier\"}",
        "metadata": {
          "resource": "your_resource_name",
          "cuda": "9.0",
          "instance": 1,
          "memory": 4000,
          "gpu": 1,
          "cpu": 4,
          "rpc.worker_threads" : 5
        }
      }
    • CPU ノードにモデルをデプロイする

      {
        "name": "ev_app_cpu_demo",
        "processor": "easy_vision_cpu_tf1.12_torch151",
        "model_path": "oss://path/to/your/model",
        "model_config": "{\"type\":\"classifier\"}",
        "metadata": {
          "resource": "your_resource_name",
          "instance": 1,
          "memory": 4000,
          "gpu": 0,
          "cpu": 4,
          "rpc.worker_threads" : 5
        }
      }

MediaFlow プロセッサ

EAS の MediaFlow プロセッサは、ビデオ、オーディオ、および画像を分析および処理できる汎用オーケストレーション エンジンです。

次のいずれかの方法を使用して、MediaFlow モデルをデプロイできます。

  • コンソールでモデル ファイルをアップロードする

    [プロセッサの種類] パラメータを [mediaflow] に設定します。詳細については、「PAI コンソールでモデル サービスをデプロイする」をご参照ください。

  • EASCMD クライアントを使用してモデルをデプロイする

    service.json サービス構成ファイルで、processor パラメータを mediaflow に設定します。MediaFlow プロセッサを使用してモデルをデプロイする場合は、次のパラメータを構成する必要があります。その他のパラメータの詳細については、「サービスを作成する」をご参照ください。

    • graph_pool_size: グラフ プールの数。

    • worker_threads: ワーカースレッドの数。

    サンプル コード:

    • ビデオ分類用のモデルをデプロイする

      {
        "model_entry": "video_classification/video_classification_ext.js", 
        "name": "video_classification", 
        "model_path": "oss://path/to/your/model", 
        "generate_token": "true", 
        "processor": "mediaflow", 
        "model_config" : {
            "graph_pool_size":8,
            "worker_threads":16
        },
        "metadata": {
          "eas.handlers.disable_failure_handler" :true,
          "resource": "your_resource_name", 
            "rpc.worker_threads": 30,
            "rpc.enable_jemalloc": true,
          "rpc.keepalive": 500000, 
          "cpu": 4, 
          "instance": 1, 
          "cuda": "9.0", 
          "rpc.max_batch_size": 64, 
          "memory": 10000, 
          "gpu": 1 
        }
      }
    • 自動音声認識 (ASR) 用のモデルをデプロイする

      {
        "model_entry": "asr/video_asr_ext.js", 
        "name": "video_asr", 
        "model_path": "oss://path/to/your/model", 
        "generate_token": "true", 
        "processor": "mediaflow", 
        "model_config" : {
            "graph_pool_size":8,
            "worker_threads":16
        },
        "metadata": {
          "eas.handlers.disable_failure_handler" :true,
          "resource": "your_resource_name", 
            "rpc.worker_threads": 30,
            "rpc.enable_jemalloc": true,
          "rpc.keepalive": 500000, 
          "cpu": 4, 
          "instance": 1, 
          "cuda": "9.0", 
          "rpc.max_batch_size": 64, 
          "memory": 10000, 
          "gpu": 1 
        }
      }

    service.json サービス構成ファイルでは、ビデオ分類と ASR の model_entryname、および model_path パラメータの値はさまざまです。モデルの目的に基づいてパラメータを構成する必要があります。

Triton プロセッサ

Triton Inference Server は、NVIDIA がリリースした新世代のオンライン サービス フレームワークです。Triton Inference Server は、GPU アクセラレーション モデルのデプロイと管理を簡素化し、KFServing の API 標準に準拠しています。Triton Inference Server は次の機能を提供します。

  • TensorFlow、PyTorch、ONNX Runtime、TensorRT、およびカスタム フレームワーク バックエンドなどの複数のオープン ソース フレームワークをサポートします。

  • 1 つの GPU で複数のモデルを同時に実行して、GPU 使用率を最大化します。

  • HTTP プロトコルと gRPC プロトコルをサポートし、バイナリ形式でリクエストを送信してリクエスト サイズを削減できます。

  • 動的バッチ機能をサポートして、サービス スループットを向上させます。

EAS はビルトイン Triton プロセッサを提供します。

説明
  • Triton プロセッサは、中国 (上海) リージョンでのみパブリック プレビューで利用できます。

  • Triton プロセッサを使用してデプロイされたモデルは、Object Storage Service (OSS) に保存する必要があります。そのため、Triton プロセッサを使用してモデルをデプロイする前に、OSS をアクティブ化してモデル ファイルを OSS にアップロードする必要があります。オブジェクトを OSS にアップロードする方法については、「シンプル アップロード」をご参照ください。

次のセクションでは、Triton プロセッサを使用してモデルをサービスとしてデプロイし、サービスを呼び出す方法について説明します。

  • Triton プロセッサを使用してモデルをデプロイする

    EASCMD クライアントでのみ Triton プロセッサを使用してモデルをデプロイできます。EASCMD クライアントを使用してモデルをデプロイする方法については、「サービスを作成する」をご参照ください。service.json サービス構成ファイルで、processor パラメータを triton に設定します。Triton プロセッサが OSS からモデル ファイルを取得できるようにするには、OSS 関連のパラメータを設定する必要があります。次のサンプル コードは、service.json サービス構成ファイルを変更する方法の例を示しています。

    {
      "name": "triton_test",                          
      "processor": "triton",
      "processor_params": [
        "--model-repository=oss://triton-model-repo/models", 
        "--allow-http=true", 
      ],
      "metadata": {
        "instance": 1,
        "cpu": 4,
        "gpu": 1,
        "memory": 10000,
        "resource":"<your resource id>"
      }
    }

    次の表では、Triton プロセッサを使用してモデルをデプロイする場合に必要なパラメータについて説明します。その他のパラメータの詳細については、「コマンドを実行して EASCMD クライアントを使用する」をご参照ください。

    パラメータ

    説明

    processor_params

    デプロイの開始時に Triton Inference Server に渡すパラメータ。サポートされていないパラメータは、Triton Inference Server によって自動的に除外されます。Triton Inference Server に渡すことができるパラメータ 表に、Triton Inference Server に渡すことができるパラメータを示します。model-repository パラメータは必須です。オプションのパラメータの詳細については、「main.cc」をご参照ください。

    oss_endpoint

    OSS のエンドポイント。エンドポイントを指定しない場合、システムは、EAS サービスがデプロイされているリージョン内の OSS サービスを自動的に使用します。別のリージョンでアクティブ化されている OSS サービスを使用する場合は、このパラメータを構成する必要があります。このパラメータの有効な値については、「リージョンとエンドポイント」をご参照ください。

    metadata

    resource

    EAS でモデルをデプロイするために使用される専用リソース グループの ID。Triton プロセッサを使用してモデルをデプロイする場合、使用されるリソースは EAS の専用リソース グループに属している必要があります。EAS で専用リソース グループを作成する方法については、「専用リソース グループを使用する」をご参照ください。

    表 1. Triton Inference Server に渡すことができるパラメータ

    パラメータ

    必須

    説明

    model-repository

    はい

    モデルの OSS パス。model-repository パラメータは、OSS バケットのルート ディレクトリではなく、OSS バケットのサブディレクトリに設定する必要があります。

    たとえば、パラメータを oss://triton-model-repo/models に設定できます。triton-model-repo は OSS バケットの名前で、models は OSS バケットのサブディレクトリです。

    log-verbose

    いいえ

    詳細については、「main.cc」をご参照ください。

    log-info

    いいえ

    log-warning

    いいえ

    log-error

    いいえ

    exit-on-error

    いいえ

    strict-model-config

    いいえ

    strict-readiness

    いいえ

    allow-http

    いいえ

    http-thread-count

    いいえ

    pinned-memory-pool-byte-size

    いいえ

    cuda-memory-pool-byte-size

    いいえ

    min-supported-compute-capability

    いいえ

    buffer-manager-thread-count

    いいえ

    backend-config

    いいえ

  • 公式の Triton クライアントを使用して、Triton プロセッサによってデプロイされたサービスを呼び出す

    Triton クライアント for Python を使用してデプロイされたサービスを呼び出す前に、次のコマンドを実行して公式の Triton クライアントをインストールします。

    pip3 install nvidia-pyindex
    pip3 install tritonclient[all]

    次のコマンドを実行して、テスト画像を現在のディレクトリにダウンロードします。

    wget http://pai-blade.oss-cn-zhangjiakou.aliyuncs.com/doc-assets/cat.png

    次のサンプル コードは、Triton クライアント for Python が Triton プロセッサを使用してデプロイされたサービスにバイナリ形式でリクエストを送信する方法を示しています。

    import numpy as np
    import time
    from PIL import Image
    
    import tritonclient.http as httpclient
    from tritonclient.utils import InferenceServerException
    
    URL = "<service url>" # <service url> をデプロイされたサービスのエンドポイントに置き換えます。
    HEADERS = {"Authorization": "<service token>"} # <service token> をサービスへのアクセスに使用されるトークンに置き換えます。
    input_img = httpclient.InferInput("input", [1, 299, 299, 3], "FP32")
    img = Image.open('./cat.png').resize((299, 299))
    img = np.asarray(img).astype('float32') / 255.0
    input_img.set_data_from_numpy(img.reshape([1, 299, 299, 3]), binary_data=True)
    
    output = httpclient.InferRequestedOutput(
        "InceptionV3/Predictions/Softmax", binary_data=True
    )
    triton_client = httpclient.InferenceServerClient(url=URL, verbose=False)
    
    start = time.time()
    for i in range(10):
        results = triton_client.infer(
            "inception_graphdef", inputs=[input_img], outputs=[output], headers=HEADERS
        )
        res_body = results.get_response()
        elapsed_ms = (time.time() - start) * 1000
        if i == 0:
            print("model name: ", res_body["model_name"])
            print("model version: ", res_body["model_version"])
            print("output name: ", res_body["outputs"][0]["name"])
            print("output shape: ", res_body["outputs"][0]["shape"])
        print("[{}] Avg rt(ms): {:.2f}".format(i, elapsed_ms))
        start = time.time()