モデル変換のファイル構造
この記事では、モデル変換ワークフロー中に生成されるファイル構造と、キャッシュ処理、履歴追跡、推論など、各フォルダーやファイルの目的について説明します。
モデルプロジェクトを作成し、何度か実行した後のファイル構造は以下のようになります。
model_project_name/
├── model_lab.workspace.config
└── huggingface_microsoft_resnet-50_v1/
├── .gitignore
├── imagenet.py
├── inference_sample.ipynb
├── model_project.config
├── README.md
├── requirements.txt
├── resnet_ptq_qnn.json
├── cache/
└── history/
└── history_1(20250414_161046)/
├── model/
├── footprints.json
├── history.config
├── history.config.user
├── inference_sample.ipynb
├── log.txt
├── metrics.json
├── model_config.json
├── olive_config.json
├── output_footprint.json
└── run_history.txt
└── history_2/
└── history_3/
model_project_nameフォルダー内には、各モデルのワークフローが個別のフォルダーに格納されています。
requirements.txt: ワークフローおよび推論サンプルを実行するために必要な依存関係がリストされています。resnet_ptq_qnn.json、imagenet.py: Oliveによるモデル変換に使用されるJSONファイルです。カスタマイズのために追加のPythonファイルを必要とするものもあります。README.md: モデルのタスク、パフォーマンスメトリクス、使用方法など、モデルの詳細を記述します。model_project.config: プロジェクトテンプレートの設定が含まれています。特定の要件に合わせて一部の設定を上書きすることができます。inference_sample.ipynb: 出力モデルをテストするためのサンプルです。このファイルはhistoryフォルダーにコピーされ、異なるJupyterノートブックを使用して異なる履歴のモデルを比較できるようにします。
キャッシュフォルダー
cacheフォルダーには、ワークフローの実行中に生成されたキャッシュファイルが保存されます。これらのキャッシュされた結果は、ワークフローを繰り返し実行する際の高速化に役立ちます。
不要になった場合は、このフォルダーを削除してディスク容量を解放できます。
履歴フォルダー
historyフォルダー名のタイムスタンプは、2025年4月14日 16:10:46のように実行日時を示しています。
model: モデルファイル。model_config.json: モデルに関する詳細情報が含まれています。footprints.json、output_footprint.json、run_history.txt: Oliveの出力ファイルです。history.config、history.config.user: モデル変換で使用される履歴設定です。inference_sample.ipynb: 出力モデルをテストするためのサンプルです。log.txt: ログが含まれています。metrics.json: 評価が有効な場合、その評価結果が含まれます。olive_config.json: 変換の実行に使用された設定ファイルです。
gitについて
デフォルトでは、cacheおよびhistoryフォルダーはバージョン管理から除外(.gitignore)されます。ただし、history.configとolive_config.jsonの2つの設定ファイルは例外です。
保存する価値のある特定の履歴フォルダーを含めるように、.gitignoreファイルを更新しても構いません。
他の人がリポジトリをクローンした際、これら2つのファイルがあれば、履歴を再実行して変換結果を再現することが可能です。
__pycache__
/cache
/history/*/*
!/history/*/history.config
!/history/*/olive_config.json