プロセッサは、オンライン予測ロジックのパッケージです。 Platform for AI (PAI) のElastic Algorithm Service (EAS) は、モデルの展開に一般的に使用される組み込みプロセッサを提供します。 組み込みのプロセッサは、モデルのオンライン予測ロジックを開発するコストを削減するのに役立ちます。
次の表に、EASが提供するプロセッサの名前とコードを示します。 EASCMDクライアントを使用してモデルをデプロイする場合は、プロセッサコードが必要です。
プロセッサ名 | プロセッサコード (EASCMDが使用される場合に必要) | 参照 | |
CPUエディション | GPUエディション | ||
PMML | pmml | なし | |
TensorFlow1.12 | tensorflow_cpu_1.12 | tensorflow_gpu_1.12 | |
TensorFlow1.14 | tensorflow_cpu_1.14 | tensorflow_gpu_1.14 | |
TensorFlow1.15 | tensorflow_cpu_1.15 | tensorflow_gpu_1.15 | |
TensorFlow2.3 | tensorflow_cpu_2.3 | なし | |
PyTorch1.6 | pytorch_cpu_1.6 | pytorch_gpu_1.6 | PyTorch1.6プロセッサと组み込み最适化エンジンベースのPAI-Blade of the agility edition |
Caffe | caffe_cpu | caffe_gpu | |
パラメータサーバアルゴリズム | parameter_sever | なし | |
Alink | alink_pai_processor | なし | なし |
xNN | xnn_cpu | なし | なし |
EasyVision | easy_vision_cpu_tf1.12_torch151 | easy_vision_gpu_tf1.12_torch151 | |
EasyTransfer | easytransfer_cpu | easytransfer_gpu | |
EasyNLP | easynlp | easynlp | |
EasyCV | easycv | easycv | |
ブレード | blade_cpu | blade_cuda10.0_beta | なし |
MediaFlow | なし | mediaflow | |
トリトン | なし | トリトン |
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_entry、name、model_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()