プロセッサは、オンライン予測ロジックのパッケージです。Elastic Algorithm Service (EAS) は、標準モデルをデプロイするための組み込みプロセッサを提供しており、このロジックを独自に開発する必要はありません。
次の表に、EAS のプロセッサ名とコードを示します。EASCMD を使用してサービスをデプロイする際に、プロセッサコードを指定してください。
|
プロセッサ名 |
プロセッサコード (EASCMD のみ) |
リファレンス |
|
|
CPU 版 |
GPU 版 |
||
|
EasyRec |
easyrec-2.4 |
easyrec-2.4 |
|
|
TorchEasyRec |
easyrec-torch-1.0 |
easyrec-torch-1.0 |
|
|
PMML |
pmml |
なし |
|
|
TensorFlow 1.12 |
tensorflow_cpu_1.12 |
tensorflow_gpu_1.12 |
|
|
TensorFlow 1.14 |
tensorflow_cpu_1.14 |
tensorflow_gpu_1.14 |
|
|
TensorFlow 1.15 |
tensorflow_cpu_1.15 |
tensorflow_gpu_1.15 |
|
|
TensorFlow 2.3 |
tensorflow_cpu_2.3 |
なし |
|
|
PyTorch 1.6 |
pytorch_cpu_1.6 |
pytorch_gpu_1.6 |
|
|
Caffe |
caffe_cpu |
caffe_gpu |
|
|
Parameter Server |
parameter_server |
なし |
|
|
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 |
blade_cpu |
blade_cuda10.0_beta |
なし |
|
MediaFlow |
なし |
mediaflow |
|
|
Triton |
なし |
triton |
|
PMML プロセッサ
EAS の PMML プロセッサは、次の機能を提供します。
-
PMML モデルファイルをサービスとしてロードします。
-
モデルサービスへのリクエストを処理します。
-
予測結果を計算し、クライアントに返します。
PMML プロセッサは、欠損値を処理するためのデフォルトの戦略を提供します。PMML モデルファイルの特徴列に isMissing ポリシーが指定されていない場合、システムは次のデフォルト値で補完します。
|
タイプ |
デフォルト |
|
BOOLEAN |
false |
|
DOUBLE |
0.0 |
|
FLOAT |
0.0 |
|
INT |
0 |
|
STRING |
"" |
PMML モデルは、次のいずれかの方法でデプロイします。
-
コンソール
Processor Type パラメーターを 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 # EAS は CPU コア (1 Quota) ごとに 4 GB のメモリを割り当てます。 } } -
Data Science Workshop (DSW)
EASCMD クライアントの使用と同様です。service.json 設定ファイルを作成します。詳細については、「EASCMD を使用したモデルサービスのデプロイ」をご参照ください。
TensorFlow 1.12 プロセッサ
EAS の TensorFlow 1.12 プロセッサは、SavedModel (推奨) または SessionBundle 形式の TensorFlow モデルをロードします。デプロイする前に、Keras および Checkpoint モデルを SavedModel 形式に変換してください。詳細については、「TensorFlow に関するよくある質問」をご参照ください。
このプロセッサは、カスタム TensorFlow オペレーションをサポートしていません。
TensorFlow モデルは、次のいずれかの方法でデプロイします。
-
コンソール
Processor Type を [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
EASCMD クライアントの使用と同様です。service.json 設定ファイルを作成します。詳細については、「EASCMD を使用したモデルサービスのデプロイ」をご参照ください。
TensorFlow 1.14 プロセッサ
EAS の TensorFlow 1.14 プロセッサは、SavedModel (推奨) または SessionBundle 形式の TensorFlow モデルをロードします。デプロイする前に、Keras および Checkpoint モデルを SavedModel 形式に変換してください。詳細については、「TensorFlow に関するよくある質問」をご参照ください。
このプロセッサは、カスタム TensorFlow オペレーションをサポートしていません。
TensorFlow モデルは、次のいずれかの方法でデプロイします。
-
コンソール
Processor Type を [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
EASCMD クライアントの使用と同様です。service.json 設定ファイルを作成します。詳細については、「EASCMD を使用したモデルサービスのデプロイ」をご参照ください。
TensorFlow 1.15 プロセッサ (PAI-Blade アジリティエディション)
EAS の TensorFlow 1.15 プロセッサは、SavedModel (推奨) または SessionBundle 形式の TensorFlow モデルをロードします。デプロイする前に、Keras および Checkpoint モデルを SavedModel 形式に変換してください。詳細については、「TensorFlow に関するよくある質問」をご参照ください。
-
このプロセッサは、カスタム TensorFlow オペレーションをサポートしていません。
-
このプロセッサには、PAI-Blade で最適化された TensorFlow モデルをデプロイするための PAI-Blade アジリティエディション最適化エンジンが含まれています。
TensorFlow モデルは、次のいずれかの方法でデプロイします。
-
コンソール
Processor Type を [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
EASCMD の使用と同様です。service.json 設定ファイルを作成します。詳細については、「EASCMD を使用したモデルサービスのデプロイ」をご参照ください。パラメーターの説明については、「サービスの作成」をご参照ください。
TensorFlow 2.3 プロセッサ
EAS の TensorFlow 2.3 プロセッサは、SavedModel (推奨) または SessionBundle 形式の TensorFlow モデルをロードします。デプロイする前に、Keras および Checkpoint モデルを SavedModel 形式に変換してください。詳細については、「TensorFlow に関するよくある質問」をご参照ください。
このプロセッサは、カスタム TensorFlow オペレーションをサポートしていません。
TensorFlow モデルは、次のいずれかの方法でデプロイします。
-
コンソール
Processor Type を [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
EASCMD の使用と同様です。service.json 設定ファイルを作成します。詳細については、「EASCMD を使用したモデルサービスのデプロイ」をご参照ください。
PyTorch 1.6 プロセッサ (PAI-Blade アジリティエディション)
EAS の PyTorch 1.6 プロセッサは、TorchScript 形式のモデルをロードします。詳細については、「TorchScript の公式ドキュメント」をご参照ください。
-
このプロセッサは、PyTorch 拡張機能や、非テンソル形式のモデル入出力をサポートしていません。
-
このプロセッサには、最適化された PyTorch モデルをデプロイするための PAI-Blade (アジリティエディション) 最適化エンジンが含まれています。
TorchScript モデルは、次のいずれかの方法でデプロイします。
-
コンソール
Processor Type を [PyTorch 1.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
EASCMD クライアントの使用と同様です。service.json 設定ファイルを作成します。詳細については、「EASCMD を使用したモデルサービスのデプロイ」をご参照ください。パラメーターの説明については、「サービスの作成」をご参照ください。
Caffe プロセッサ
EAS の Caffe プロセッサは、Caffe でトレーニングされたディープラーニングモデルをロードします。モデルパッケージにモデルと重みファイル名を指定してください。
このプロセッサは、カスタムデータ層をサポートしていません。
Caffe モデルは、次の方法でデプロイします。
-
コンソール
Processor Type を 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
EASCMD クライアントの使用と同様です。service.json 設定ファイルを作成します。詳細については、「EASCMD を使用したモデルサービスのデプロイ」をご参照ください。
PS プロセッサ
EAS の PS プロセッサは、PS 形式のモデルをロードします。
PS モデルをデプロイし、サービスにリクエストを送信します。
-
PS モデルは、次のいずれかの方法でデプロイします。
-
コンソール
Processor Type を PS Algorithm に設定します。詳細については、「カスタムデプロイ」をご参照ください。
-
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
EASCMD クライアントの使用と同様です。service.json 設定ファイルを作成します。詳細については、「EASCMD クライアントを使用したモデルサービスのデプロイ」をご参照ください。
-
-
リクエスト形式
このプロセッサは、単一予測とバッチ予測の両方をサポートしています。リクエスト形式は同じで、特徴オブジェクトの 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 } ]" -
応答
単一リクエストとバッチリクエストの応答形式は同じで、応答オブジェクトの配列です。各応答オブジェクトは、同じ位置のリクエストオブジェクトに対応します。
[ { "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 モデルは、次の方法でデプロイします。
-
コンソール
Processor Type パラメーターに [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 モデルは、次のいずれかの方法でデプロイします。
-
コンソール
Processor Type を [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
テキストベクトル化
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
デプロイ後、Elastic Algorithm Service (EAS) ページで、対象サービスの Service Type 列にある Invocation Information をクリックして、エンドポイントとトークンを表示します。次の 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 モデルは、次のいずれかの方法でデプロイします。
-
コンソール
Processor Type を [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"}
デプロイ後、Elastic Algorithm Service (EAS) ページに移動します。サービスを見つけ、Service Type 列で Invocation Information をクリックして、エンドポイントとトークンを表示します。次の Python の例は、サービスの呼び出し方法を示しています。
import requests
import base64
import json
resp = requests.get('http://examplebucket.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/easycv_classification_example", data=datas, headers=head)
print(resp.text)
画像または動画データを Base64 でエンコードして転送します。画像データには image キーを、動画データには video キーを使用します。
EasyVision プロセッサ
EAS の EasyVision プロセッサは、EasyVision でトレーニングされたディープラーニングモデルをロードします。
EasyVision モデルは、次のいずれかの方法でデプロイします。
-
コンソール
Processor Type を [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 モデルは、次のいずれかの方法でデプロイします。
-
コンソール
Processor Type を [MediaFlow] に設定します。詳細については、「カスタム推論サービスのデプロイ」をご参照ください。
-
EASCMD クライアント
service.json 設定ファイルで、processor を 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 } }
ASR と動画分類の設定は、主に model_entry、name、model_path が異なります。ご利用のモデルに合わせてこれらのフィールドを変更してください。
-
Triton プロセッサ
Triton Inference Server は、NVIDIA のオンラインサービングフレームワークです。GPU 上でモデルをデプロイおよび管理するためのインターフェイスを提供し、KFServing API 標準と互換性があります。主な特徴:
-
TensorFlow、PyTorch、ONNX Runtime、TensorRT、カスタムバックエンドなど、さまざまなフレームワークのモデルをデプロイします。
-
GPU 上で複数のモデルを同時に実行して、使用率を向上させます。
-
HTTP/gRPC プロトコルとバイナリ形式拡張をサポートし、リクエストサイズを削減します。
-
動的バッチ処理をサポートし、サービススループットを向上させます。
Triton Inference Server は、EAS 上で組み込みの Triton プロセッサとして利用できます。
-
中国 (上海) リージョンでのみパブリックプレビューとして利用可能です。
-
すべてのモデルは OSS に保存する必要があります。まず OSS を有効化し、モデルファイルを OSS バケットにアップロードしてください。詳細については、「シンプルアップロード」をご参照ください。
Triton プロセッササービスのデプロイと呼び出し。
-
Triton プロセッサを使用したデプロイ
Triton モデルサービスは、EASCMD を使用してのみデプロイできます。詳細については、「サービスの作成」をご参照ください。「service.json」構成ファイルで、プロセッサ を 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 固有のパラメーターを以下に示します。その他のパラメーターについては、「service.json のパラメーター」をご参照ください。
パラメーター
説明
processor_params
起動時に Triton Server に渡されるパラメーター。サポートされていないパラメーターは自動的にフィルターされます。サポートされているパラメーターは、次のTriton サーバーに渡すことができるパラメーターセットにリストされています。model-repository は必須です。オプションのパラメーターについては、「main.cc」をご参照ください。
oss_endpoint
OSS エンドポイント。指定しない場合、システムは EAS サービスと同じリージョンの OSS を使用します。クロスリージョン OSS の場合はこれを指定してください。値については、「リージョンとエンドポイント」をご参照ください。
metadata
resource
モデルサービスをデプロイするための EAS 専用リソースグループの ID。Triton プロセッサには、EAS 専用リソースグループが必要です。詳細については、「EAS 専用リソースグループの使用」をご参照ください。
表 1. Triton サーバーでサポートされているパラメーター
パラメーター
必須
説明
model-repository
はい
パスは OSS パスとして指定する必要があります。システムは、バケットのルートディレクトリを model-repository として直接使用することをサポートしていません。バケット内のサブディレクトリを指定する必要があります。
例:
oss://triton-model-repo/models。ここで、triton-model-repo はバケット名、models はバケット内のサブディレクトリです。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 クライアントを使用したサービスの呼び出し
NVIDIA の公式 Triton クライアントをインストールします。
pip3 install nvidia-pyindex pip3 install tritonclient[all]テスト画像をダウンロードします。
wget http://pai-blade.oss-cn-zhangjiakou.aliyuncs.com/doc-assets/cat.pngPython クライアントを使用して、バイナリ形式のリクエストを 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()