メインコンテンツまでスキップ
バージョン: v2512

モデル変換の実行

このステップではオープンモデルのDETRのソースコードに対して、AcuiRTによる変換・推論・評価のワークフローを用いてAccuracy/Latencyの変化を確認します。

変換ワークフローの実行

  1. AcuiRTのConversionWorkflowクラスを使用してDETRの変換・推論・評価を行うためのワークフローを定義します。

    • 本チュートリアルでは ConversionWorkflowが既に導入されています。
  2. AcuiRTで使用する変換用のconfigを下記のように記述します。今回使用するconfigでは最上位モジュールから変換を試行し、何らかの原因で変換に失敗した場合はその子モジュールに対して再帰的に変換を試行します。

    aibooster_misc/config.json
    {
    "rt_mode": "onnx",
    "auto": true
    }
  3. test.pyを実行し、AcuiRTによる自動変換・推論・評価を実施します

    実行コマンド
    python main.py --batch_size 1 --no_aux_loss --eval --backbone resnet101 --resume ./detr-r101-2c7b67e5.pth --coco_path /path/to/dataset/coco --trt-engine-dir exps/baseline --trt-config aibooster_misc/config.json

    DETRの再現動作時と同様に、下記の様な認識精度のログが出力されます。

    DONE (t=0.09s).
    IoU metric: bbox
    Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.445
    Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.672
    Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.450
    Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.202
    Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.475
    Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.641
    Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.374
    Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.536
    Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.567
    Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.283
    Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.587
    Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.740

    AcuiRTではこれに加えて変換結果のサマリ情報が出力されます。

    Workflow Report
    Conversion Rate: 73/447
    Num Modules: 63
    Accuracy: 0.4450028287644359
    Latency: 66.98 ms

    変換結果のサマリ情報は下記の通りです。

    • Conversion Rate: 447個のモジュールのうち73個が変換に成功したことを示しています。
    • Num Modules: 変換した際に生成されたTensorRTエンジン数です。
    • Accuracy: 変換後の推論精度(AP)です。
    • Latency: 推論時間(ms)です。

変換結果の分析

サマリ情報をPyTorchモデルと比較すると、Accuracy, Latencyが共に低下していることが分かります。これはAcuiRTによって複数のモジュールがTensorRTエンジンに変換された一方で、一部のモジュールは変換に失敗し、PyTorchのまま推論を実行していることが原因です。その結果、PyTorchモジュールとTensorRTエンジン間のデータ転送などのオーバーヘッドが発生しています。

モデルAP (Accuracy)Latency
PyTorch0.531060.92 ms
AcuiRT導入0.445066.98 ms

次のステップではAcuiRTが出力したレポート情報を用いて、変換失敗原因の分析・特定を行う方法について説明します。