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

ConversionWorkflowを使用して変換・評価する

ConversionWorkflowとは

  • AcuiRTの変換・評価を一貫して行うためのフレームワークです。ConversionWorkflowにデータセット・モデル・評価アルゴリズムを与えることでAcuiRTによる変換・変換後のモデルの評価・プロファイルの取得を行います。

ConversionWorkflowの使用方法

1. モデルとデータセットの準備

2. ConversionWorkflowを使用する

  • ConversionWorkflowインスタンスを宣言し、下記の設定を行います
    • model: 変換対象のモデル
    • evaluator: モデルの出力の評価を行うクラス
      • evaluatorEvaluateProtocolのインターフェースを遵守する必要があります。
    • eval_dataset: 評価を行うデータセット
    • eval_dataset_post_process: データセットの後処理関数
    • coversion_dataset: 変換時に参照するデータセット (省略可)
      • 変換時のデータセットが評価用データセットと異なる場合や、trainデータセットでキャリブレーション・変換を行い、testデータセットで評価を行う場合に指定します。
    • model_post_process: 推論結果の後処理関数 (省略可)
    • model_post_porocess_rt: 変換後の推論結果の後処理関数 (省略可)
      • 最適化によって出力のデータ形式が変化した場合に指定します。
    • eval_non_converted_model: 変換前のモデルを評価するか (省略可)
    • settings_torch_profiler: torch profilerの設定 (省略可)
      • デフォルトでは下記の設定が行われており、CPU, CUDAのアクティビティを全て記録します。profilerのパフォーマンスに影響するため、必要に応じて設定を変更してください。特にscheduleを指定しない場合は全データに対してプロファイルを実行するため、処理時間が大幅に増加する可能性があります。
        • activity: [torch.profiler.ProfilerActivity.CPU, torch.profiler.ProfilerActivity.CUDA]
        • profile_memory: False
    • profile_max_depth: torch profilerで追跡する子モジュールの階層の最大深さ (省略可)
      • デフォルトでは推論時の全ての関数呼び出しを追跡し、自動的にプロファイラに記録します。
    • exporters: レポートを出力するExporter (省略可)
      • デフォルトではExporterは指定されていないため、必要に応じてaibooster.intelligence.acuirt.utils以下のJsonExporterLoggingExporterをインポートし、インスタンスをリスト形式で与えてください。ExporterProtocolに準拠することでカスタムのExporterを使用することも可能です。

3. 変換を実行する

  • runメソッドを呼び出して変換を実行します。実行結果として、変換されたモデルとレポートが返されます。

    model_converted, report = workflow.run(
    config,
    export_path
    )
  • configには、変換設定を記述したdict または AcuiRTBaseConversionConfigとその派生dataclassを与えます

    # dictを使用する例
    config = dict(
    rt_mode="onnx",
    auto=True,
    )

    # AcuiRTBaseConversionConfigを使用する例
    from aibooster.intelligence.acuirt.dataclasses import AcuiRTBaseConversionConfig
    config_dataclass = AcuiRTBaseConversionConfig(
    rt_mode="onnx",
    auto=True,
    children=None,
    input_shapes=None,
    input_args=None,
    )

4. 変換結果を確認する

  • 3の手順で得られたreportには変換後の推論速度・推論精度情報や変換時のエラー内容が含まれています。

備考

  • ConversionWorkflowを用いたサンプルプログラムはaibooster-examplesintelligence/acuirt/image_classification_resnet50.py にて公開されています。