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

Platform For AI:内蔵プロセッサ

最終更新日:Jul 22, 2024

プロセッサは、オンライン予測ロジックのパッケージです。 Platform for AI (PAI) のElastic Algorithm Service (EAS) は、モデルの展開に一般的に使用される組み込みプロセッサを提供します。 組み込みのプロセッサは、モデルのオンライン予測ロジックを開発するコストを削減するのに役立ちます。

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

プロセッサ名

プロセッサコード (EASCMDが使用される場合に必要)

参照

CPUエディション

GPUエディション

PMML

pmml

なし

PMMLプロセッサ

TensorFlow1.12

tensorflow_cpu_1.12

tensorflow_gpu_1.12

TensorFlow1.12プロセッサ

TensorFlow1.14

tensorflow_cpu_1.14

tensorflow_gpu_1.14

TensorFlow1.14プロセッサ

TensorFlow1.15

tensorflow_cpu_1.15

tensorflow_gpu_1.15

TensorFlow1.15プロセッサと组み込み最适化エンジンに基づいてPAI-Bladeのアジリティエディション

TensorFlow2.3

tensorflow_cpu_2.3

なし

TensorFlow2.3プロセッサ

PyTorch1.6

pytorch_cpu_1.6

pytorch_gpu_1.6

PyTorch1.6プロセッサと组み込み最适化エンジンベースのPAI-Blade of the agility edition

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_cpu

blade_cuda10.0_beta

なし

MediaFlow

なし

mediaflow

MediaFlowプロセッサ

トリトン

なし

トリトン

Tritonプロセッサ

PMMLプロセッサ

EASの作り付けの予測モデルマークアップ言語 (PMML) プロセッサは次の操作を行います:

  • PMMLファイルからモデルサービスをロードします。

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

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

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

データ型

デフォルトの入力値

BOOLEAN

false

DOUBLE

0.0

FLOAT

0.0

INT

0

STRING

""

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

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

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

  • 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 # Allocate 4 GB of memory to each CPU. One CPU and 4 GB memory are considered one quota. 
      }
    }
  • Data Science Workshop (DSW) を使用してモデルをデプロイする

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

TensorFlow1.12プロセッサ

EASのTensorFlow1.12プロセッサは、SavedModelまたはSessionBundle形式でTensorFlowモデルをロードできます。 SavedModel形式の使用を推奨します。 モデルをデプロイする前に、KerasまたはCheckpointモデルをSavedModelモデルに変換する必要があります。 詳細については、「SavedModel形式でのTensorFlowモデルのエクスポート」をご参照ください。

説明

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

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

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

    プロセッサタイプパラメーターをTensorFlow1.12に設定します。 詳細については、「コンソールでのモデルのアップロードとデプロイ」をご参照ください。

  • 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クライアントを使用してモデルをデプロイする方法に似ています。 詳細については、「DSWの使用」をご参照ください。

TensorFlow1.14プロセッサ

EASのTensorFlow1.14プロセッサは、SavedModelまたはSessionBundle形式でTensorFlowモデルをロードできます。 SavedModel形式の使用を推奨します。 モデルをデプロイする前に、KerasまたはCheckpointモデルをSavedModelモデルに変換する必要があります。 詳細については、「SavedModel形式でのTensorFlowモデルのエクスポート」をご参照ください。

説明

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

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

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

    プロセッサタイプパラメーターをTensorFlow1.14に設定します。 詳細については、「コンソールでのモデルのアップロードとデプロイ」をご参照ください。

  • 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クライアントを使用してモデルをデプロイする方法に似ています。 詳細については、「DSWの使用」をご参照ください。

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

EASのTensorFlow1.15プロセッサは、SavedModelまたはSessionBundle形式でTensorFlowモデルをロードできます。 SavedModel形式の使用を推奨します。 モデルをデプロイする前に、KerasまたはCheckpointモデルをSavedModelモデルに変換する必要があります。 詳細については、「SavedModel形式でのTensorFlowモデルのエクスポート」をご参照ください。

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

  • TensorFlow1.15プロセッサは、アジリティエディションのPAI-Bladeに基づく組み込みの最適化エンジンを提供します。 このプロセッサを使用して、アジリティエディションのPAI-Bladeによって最適化されたTensorFlowモデルをデプロイできます。

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

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

    プロセッサタイプパラメーターをTensorFlow1.15に設定します。 詳細については、「コンソールでのモデルのアップロードとデプロイ」をご参照ください。

  • 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クライアントを使用してモデルをデプロイする方法に似ています。 詳細については、「DSWの使用」をご参照ください。 サービス構成ファイルのパラメーターの詳細については、「サービスの作成」をご参照ください。

TensorFlow2.3プロセッサ

TensorFlow2.3プロセッサEASは、SavedModelまたはSessionBundle形式でTensorFlowモデルをロードできます。 SavedModel形式の使用を推奨します。 モデルをデプロイする前に、KerasまたはCheckpointモデルをSavedModelモデルに変換する必要があります。 詳細については、「SavedModel形式でのTensorFlowモデルのエクスポート」をご参照ください。

説明

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

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

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

    [プロセッサタイプ] パラメーターを [TensorFlow2.3] に設定します。 詳細については、「コンソールでのモデルのアップロードとデプロイ」をご参照ください。

  • 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クライアントを使用してモデルをデプロイする方法に似ています。 詳細については、「DSWの使用」をご参照ください。

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

EASのPyTorch1.6プロセッサは、TorchScript形式でモデルをロードできます。 詳細は、「TorchScript」をご参照ください。

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

  • PyTorch1.6プロセッサは、アジリティエディションのPAI-Bladeに基づく組み込みの最適化エンジンを提供します。 このプロセッサを使用して、アジリティエディションのPAI-Bladeによって最適化されたPyTorchモデルをデプロイできます。

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

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

    [プロセッサタイプ] パラメーターを [PyTorch1.6] に設定します。 詳細については、「コンソールでのモデルのアップロードとデプロイ」をご参照ください。

  • 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クライアントを使用してモデルをデプロイする方法に似ています。 詳細については、「DSWの使用」をご参照ください。 サービス構成ファイルのパラメーターの詳細については、「サービスの作成」をご参照ください。

Caffeプロセッサ

EASのCaffeプロセッサは、Caffeフレームワークに基づいてトレーニングされた深層学習モデルをロードできます。 Caffeフレームワークには柔軟な機能があります。 Caffeモデルを展開するときは、モデルパッケージ内のモデルファイルと重みファイルの名前を指定する必要があります。

説明

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

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

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

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

  • 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クライアントを使用してモデルをデプロイする方法に似ています。 詳細については、「DSWの使用」をご参照ください。

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クライアントを使用してモデルをデプロイする方法に似ています。 詳細については、「DSWの使用」をご参照ください。

  • リクエストの説明

    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] に設定します。 詳細については、「コンソールでのモデルのアップロードとデプロイ」をご参照ください。

  • EASCMDクライアントを使用したモデルのデプロイ

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

    • モデルを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] に設定します。 詳細については、「コンソールでのモデルのアップロードとデプロイ」をご参照ください。

  • EASCMDクライアントを使用したモデルのデプロイ

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

    {
      "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

    テキストのベクトル化

    ベクトル化

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

    sequence_generation_zh

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

    sequence_generation_en

    中国語のテキストのための機械読書理解

    machine_reading_concelersion_zh

    英語のテキストのための機械読書理解

    machine_reading_conhemulsion_en

    WUKONG_CLIP (GPU)

    wukong_clip

    CLIP (GPU)

    クリップ

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

import requests
# Replace the value with the endpoint of the service. 
url = '<eas-service-url>'
# Replace the value with the token that you obtained. 
token = '<eas-service-token>'
# Generate the prediction data. In the following example, text classification is used. 
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] に設定します。 詳細については、「コンソールでのモデルのアップロードとデプロイ」をご参照ください。

  • EASCMDクライアントを使用したモデルのデプロイ

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

    {
      "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)] ページに移動してサービスを見つけ、[Service Type] 列の [Invocation Method] をクリックしてサービスエンドポイントとトークンを取得します。 次のサンプルコードは、サービスを呼び出すために使用されるサンプル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)
            })
# Replace the value with the token that you obtained. 
head = {
   "Authorization": "NTFmNDJlM2E4OTRjMzc3OWY0NzI3MTg5MzZmNGQ5Yj***"
}
for x in range(0,10):
  	# Replace the value with the endpoint of the service. 
    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] に設定します。 詳細については、「コンソールでのモデルのアップロードとデプロイ」をご参照ください。

  • EASCMDクライアントを使用したモデルのデプロイ

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

    • モデルを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] に設定します。 詳細については、「コンソールでのモデルのアップロードとデプロイ」をご参照ください。

  • 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_entrynamemodel_pathパラメーターの値が異なります。 モデルの目的に基づいてパラメーターを設定する必要があります。

Tritonプロセッサ

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

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

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

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

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

EASは作り付けのTritonプロセッサを提供します。

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

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

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

  • Tritonプロセッサを使用したモデルのデプロイ

    Tritonプロセッサを使用して、EASCMDクライアントでのみモデルをデプロイできます。 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サービスを使用する場合は、このパラメーターを設定する必要があります。 このパラメーターの有効な値については、「リージョンとエンドポイント」をご参照ください。

    メタデータ

    リソース

    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

    不可

    ログ警告

    不可

    ログエラー

    不可

    exit-on-error

    不可

    strict-model-config

    不可

    厳密な準備

    不可

    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プロセッサを使用してデプロイされたサービスを呼び出します

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

    pip3 install nvidia-pyindex
    pip3 install tritonclient[all]

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

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

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

    import numpy as np
    import time
    from PIL import Image
    
    import tritonclient.http as httpclient
    from tritonclient.utils import InferenceServerException
    
    URL = "<service url>" # Replace <service url> with the endpoint of the deployed service. 
    HEADERS = {"Authorization": "<service token>"} # Replace <service token> with the token that is used to access the service. 
    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()