• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • Data Science

    Triton Inference Server 2022 年 2 月のリリース概要

    Reading Time: < 1 minute

    この記事は、先日まで Medium 上の NVIDIA Japan オフィシャル アカウントで更新していた Triton Inference Server のリリース概要紹介が、技術ブログに移行したものとなります。そもそも「Triton Inference Server って何?」という方は、まずは以下の記事などをご確認ください。

    What’s New in 2.19.0 (NGC 22.02)

    リリース ノート本體は https://github.com/triton-inference-server/server/releases/tag/v2.19.0 です。2 月のリリースには以下の機能や改善などが含まれています。

    今月もあまり大きなアップデートはありませんが、PyTorch バックエンド利用時に複數のテンソルを束ねた辭書オブジェクトが利用可能になっています。

    もともと、PyTorch バックエンドを利用するためには TorchScript が必要とされているのですが、その仕様から、入出力テンソルに明示的な名稱を割り當てることができませんでした。一方 Triton Inference Server では、リクエスト送信時にテンソルの名稱を必須としているため、PyTorch バックエンドを利用する際は入出力テンソルの名稱が自動付與されていました。詳細は Special Conventions for PyTorch Backend – Naming Convention に記述されていますが、ざっくり言うと、INPUT__0INPUT__1、… および OUTPUT__0OUTPUT__1、… という形式で連番が割り當てられます。

    これでは不便だということが理由かは定かではありませんが、今回のリリースで、元のモデルが入力として辭書オブジェクトを受け取るように実裝されていると、Triton 側ではそのキー文字列を入力テンソル名として扱う、という対応が入っています。これが「入力テンソルとして dict が使えるように」の內容です。

    これだけだとちょっとわかりにくいので、実裝例を見ていきます。例えば以下のようにモデルが実裝されている場合、

    class PseudoModel(nn.Module):
        def __init__(self):
            super().__init__()
        
        def forward(self, inputs):
            x = inputs["x"]
            y = inputs["y"]
    
            x = 2 * x
            y = y / 2
            return torch.cat((x, y), 1)
    

    Triton 側の設定を以下のように記述できるようになります。

    input [
        {
            name: "x"
            data_type: TYPE_FP32
            dims: [ 10 ]
        },
        {
            name: "y"
            data_type: TYPE_FP32
            dims: [ 10 ]
        }
    ]
    

    これはつまり、クライアントからは INPUT__0 および INPUT__1 という名前ではなく、xy という名前で入力を扱えるようになるということを意味します。なお少なくとも現時點では、辭書オブジェクトを入力として利用する場合、入力パラメーターが一つだけで、かつキーが文字列で、値がテンソルの辭書のみがサポートされます。複數入力や、文字列以外のキー、テンソル以外の値を利用するようなケースはサポートされません。

    What’s New に言及されていないアップデート

    そのほか、以下の內容が公開されています。

    • Trace 機能を制御する endpoint が追加されました
    • PyTorch 1.2.0 およびそれ以前のバージョンでエクスポートされたモデルを PyTorch バックエンドから利用する場合、再エクスポートが必要になります

    Trace 機能自體は以前から導入されていた、Triton 內部での処理時間の內訳をファイル出力する機構ですが、これを操作するための API として /v2[/models/${MODEL_NAME}]/trace/setting が追加されました。これにより、動作中の Triton に対して Trace の設定を変更したりできるようになるようです。

    二つ目の、以前の PyTorch で生成したモデルの継続利用に再エクスポートを必要とする件は、內部モジュールのバージョンアップに伴う対応のようです。再エクスポートしない場合、エラーを吐く可能性があるようです。

    まとめ

    今月も比較的小さなアップデートが多かったかと思いますが、PyTorch バックエンド利用時に入力テンソルの名稱を制御できるようになったのは、ちょっと便利な改善ではないでしょうか。先日の GTC でもさまざまな発表がありましたが、Triton の開発も引き続き継続していきますので、ご要望などある方は、Github に issue を上げていただければと思います。

    その他、疑問點や問題點がある場合や、日本語で要望を書きたいという方など、自由にコメントなどいただければ幸いです!

    +1

    Tags

    人人超碰97caoporen国产