今月も Triton Inference Server のリリース内容について、概要をお届けします。「Triton Inference Server って何?」という方は、以下の記事などをご確認ください。
What’s New in 2.23.0 (NGC 22.06)
リリース ノート本体は https://github.com/triton-inference-server/server/releases/tag/v2.23.0 です。今月のリリースには以下の機能や改善などが含まれています。
- いくつかのバックエンドで、dynamic batching を利用可能なモデルの場合、自動生成された model configuration は dynamic batching がデフォルトで有効になります
- Python バックエンドが、model configuration の自動生成に対応しました
- Python バックエンドでの Decoupled API サポートが、ベータから正式版になりました
- PyTorch バックエンドの入出力テンソル名の規約が更新されました
- https://github.com/triton-inference-server/server/blob/r22.06/docs/model_configuration.md#special-conventions-for-pytorch-backend
- 今回の更新から任意の名称を利用できるようになるようですが、この場合
config.pbtxt
の定義順でモデルの入出力とのマッピングが行われるようです
- Performance Analyzer の安定性などが改善されています
- TensorFlow バックエンドのデフォルトバージョンが、次回リリースから変更されます
- 現状は TF1 がデフォルトですが、次回 (v2.24.0; 22.07) 以降は TF2 がデフォルトとなるようです
今月の更新はやや控えめといった印象ですが、model configuration まわりの変更や改善は有用かもしれません。
以前から --strict-model-config=false
を指定して Triton を起動することで、設定ファイルの作成をスキップすることができていました。このとき実際には、Triton によって設定自体は自動生成されており、具体的な値は /v2/models/<modelname>/config
で確認することが可能です。今回の更新で、この生成される設定のデフォルト値が変更されます。具体的な差分は以下に示す diff の通りですが、まとめると以下の 2 点です。
max_batch_size
のデフォルト値が 4 になります- デフォルトで
dynamic_batching
が設定されるようになります- ただしモデル自体の定義によって dynamic batching を利用できない場合、
dynamic_batching
は設定されません - モデルごとの dynamic batching 利用可否の概要については「Triton Inference Server のバッチサイズを紐解く」で触れています
- ただしモデル自体の定義によって dynamic batching を利用できない場合、
--- 22.05_conf.json 2022-07-20 16:29:46.950969341 +0900
+++ 22.06_conf.json 2022-07-20 16:29:24.867140899 +0900
@@ -7,7 +7,7 @@
"num_versions": 1
}
},
- "max_batch_size": 1,
+ "max_batch_size": 4,
"input": [
{
"name": "input_1",
@@ -47,6 +47,14 @@
"gather_kernel_buffer_threshold": 0,
"eager_batching": false
},
+ "dynamic_batching": {
+ "preferred_batch_size": [],
+ "max_queue_delay_microseconds": 0,
+ "preserve_ordering": false,
+ "priority_levels": 0,
+ "default_priority_level": 0,
+ "priority_queue_policy": {}
+ },
"instance_group": [
{
"name": "resnet",
なおこのとき、max_batch_size
のデフォルト値については、--backend-config=default-max-batch-size=32
などとすることによって変更できます。
これに加えて、Python バックエンドで上記の設定ファイル自動生成に対応するため、モデルファイルの staticmethod として auto_complete_config()
が追加されました。--strict-model-config=false
が指定された場合に呼び出される関数で、期待する設定値などを定義するために使用されます。なおドキュメントの注釈にも記載されていますが、この関数を実行するために使用される Python インタプリターは関数終了後に破棄されるため、実際の推論実行に必要となるオブジェクトなどをこの関数内で生成しないように注意してください。
What’s New に言及されていないアップデート
今月も、更新内容や追加機能の詳細は What’s New でほぼ言及されていたようで、それ以外の主なものは以下の一件のみです。
- 出力されるログのフォーマット指定ができるようになりました (PR#4423)
Triton では、--log-verbose=1
や --log-info=true
などのオプションを起動時に追加することで、出力されるログの量を調整できますが、今回の対応でログのフォーマットもある程度制御できるようになるようです。ただし現時点では、日時のフォーマットを独自形式にするか ISO8601 形式にするかを選択できる程度のようですので、広く利用されているログ ライブラリのように柔軟な変更ができるかというと、そういうわけではないという点には注意が必要です。
まとめ
今月は利便性の向上に関する修正が大半でした。引き続き機能追加等は行われますので、定期的にチェックいただければと思います。