mcpField
T
tao-train-mask-auto-encoder

tao-train-mask-auto-encoder

github.com/nvidia開発3.8k1.6k 回インストール今日更新
リポジトリ

tao-train-mask-auto-encoder について

MAE による視覚表現学習向けの TAO スキルです。画像パッチのマスキングを用いた自己教師あり事前学習と、分類タスクへのファインチューニングに対応します。

主な機能

  1. 01マスクパッチの再構成
  2. 02自己教師あり事前学習
  3. 03分類向けファインチューニング
  4. 04評価・推論・エクスポート
  5. 05AutoML 学習への対応

活用シーン

  1. 01ラベルなし画像データでの事前学習
  2. 02事前学習済み重みの分類向け調整
  3. 03調整済みモデルの評価や推論
  4. 04視覚モデルのエクスポート

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/nvidia/skills --skill tao-train-mask-auto-encoder

インストール後、Claude Code で/tao-train-mask-auto-encoderを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

BENCHMARK.md
skill-card.md
skill.oms.sig
config/
skillspector-baseline.yaml
evals/
evals.json
references/
skill_info.yaml
spec_template_deploy_gen_trt_engine.yaml
spec_template_evaluate.yaml
spec_template_export.yaml
spec_template_gen_trt_engine.yaml
spec_template_inference.yaml
spec_template_train.yaml
tao-deploy-mask-auto-encoder.md
tao-deploy-mask-auto-encoder.skill_info.yaml
schemas/
evaluate.schema.json
export.schema.json
gen_trt_engine.schema.json
inference.schema.json
manifest.json
train.schema.json

詳細

MAE

スタンドアロンでインストールする場合 このセッションが TAO スキルバンクプラグインによって初期化されていない場合は、まず tao-setup スキルを実行してください(ホストの事前確認、認証情報、スキル間の検出)。

MAE(Masked Autoencoder)は、自己教師ありの事前学習とファインチューニングに使用します。ランダムなパッチをマスクし、それらを再構成することで、視覚表現を学習します。事前学習とファインチューニングのステージをサポートしています。

ファインチューニング時に事前学習済み MAE の重みを使用するには、train.pretrained_model_path を設定してください。

TAO Deploy の TensorRT アクション(gen_trt_engine)については、まず references/tao-deploy-mask-auto-encoder.md を読んでください。Deploy の仕様テンプレートは、このスキルの references/ フォルダーにあり、接頭辞は spec_template_deploy_*.yaml です。

親の PyTorch mae CLI は、train、evaluate、inference、export をサポートしています。 TensorRT エンジンはモデルスキルではなく、Deploy ワークフローを通じてビルドしてください。

データクラススキーマ

生成された TAO Core スキーマは schemas/<action>.schema.json にパッケージ化され、利用可能なアクションは schemas/manifest.json に記載されています。生成された各スキーマから、スキーマのトップレベルの default フィールドを基に references/spec_template_<action>.yaml も出力されます。AutoML の有効化は、モデルレイヤーの references/skill_info.yaml で automl_enabled を介して宣言します。アクションで AutoML を実行するには、schemas/<action>.schema.json と references/spec_template_<action>.yaml が存在し、解析できる必要があります。automl_default_parameters、automl_disabled_parameters、デフォルト値、最小値/最大値の境界、列挙値、オプションの重み、数式の条件、依存関係、よく使われるパラメーターには、パッケージ化された選択アクションのスキーマを使用してください。実行時に ~/tao-core があることを前提としないでください。メンテナーはスキルバンクをパッケージ化する前に、スキーマとテンプレートを再生成します。

Train アクションポリシー

このモデルでは、モデルレイヤーで AutoML が有効になっています。train ステージのリクエストに対応する前に、references/skill_info.yaml を読み、明示的な automl_policy 値、またはユーザーのワークフローリクエストから実行時の設定を決定してください。デフォルトでは automl_policy: on を使用し、新しい起動プロンプトでは on/off のみを提示してください。「AutoML をオフにする」「AutoML を無効にする」「HPO なし」「通常のトレーニング」といった表現は、この実行に限り automl_policy: off として扱ってください。automl_policy: on、automl_enabled: true、schemas/train.schema.json および references/spec_template_train.yaml が両方ともパッケージ化されている場合は、デフォルトでこのモデルの skill_dir を指定して、train アクションを tao-skill-bank:tao-run-automl 経由で実行してください。データセット、仕様、出力ディレクトリー、GPU/プラットフォーム設定、親チェックポイント、automl_policy に関するワークフロー/アプリケーションの上書き設定は維持してください。automl_policy: off の場合、またはパッケージ化された train スキーマ/テンプレートが見つからない場合のみ、モデルの直接トレーニングを使用してください。スキーマが見つからない場合は、AutoML が有効ではあるものの、スキーマが生成されるまではこのモデルで実行できないことを報告してください。

evaluate、inference、export などの train 以外のアクションと Deploy フローは、このモデルスキルにとどまります。実行ごとの automl_policy の上書きによって、モデルのメタデータが変わることはありません。

トレーニング要件

  • データセットタイプ: image_classification
  • 形式: ssl
  • 受け付けるデータセットの用途: training、evaluation、testing
  • 事前学習の監視メトリクス: train_loss(最小化)。
  • AutoML メトリクスの要件: ファインチューニングでは、最大化するメトリクスとして ACC_all を使用してください。ファインチューニングの検証とパッケージ化された evaluate アクションでは、train_loss は出力されず、ACC_all(および val_loss)が出力されます。train.stage: finetune の場合は、試行と最終チェックポイントの選択に ACC_all を使用してください。
アクションごとのデータセット要件
アクションスペックキーソースファイルリスト?
traindataset.train_data_sourcestrain_datasetsimages_train.tar.gzいいえ
traindataset.val_data_sourceseval_datasetimages_val.tar.gzいいえ
evaluatedataset.val_data_sourceseval_datasetimages_val.tar.gzいいえ
inferencedataset.test_data_sourcesinference_datasetimages_test.tar.gzいいえ

SDK/アプリのジョブ入力では、images_*.tar.gz アーカイブがアクション入力としてアップロードされます。ホストにマウントされたデータに対してローカルの Docker を直接実行する場合は、まずアーカイブを展開し、dataset.train_data_sources、dataset.val_data_sources、dataset.test_data_sources を展開後の images_train、images_val、images_test フォルダーに向けてください。ローカルの tar パスを直接 MAE CLI に渡すと、ローカルのデータローダーがそのアーカイブパスを展開しないため、サンプル数ゼロのデータローダーが生成されることがあります。

一般的なスペックのオーバーライド

データソースのオーバーライドはすべてのアクションで必須です。エージェントは上記のアクションごとのデータセット要件表からデータソースパスを構築し、spec_overrides に含めなければなりません (MUST)。

S3_TRAIN = "s3://bucket/data/train"
S3_EVAL = "s3://bucket/data/eval"

train (必須のデータソース):

{
    "dataset.train_data_sources": f"{S3_TRAIN}/images_train.tar.gz",
    "dataset.val_data_sources": f"{S3_EVAL}/images_val.tar.gz",
    "train.num_epochs": 10,
    "train.optim.lr": 2e-4,
}

evaluate (必須のデータソース):

{
    "dataset.val_data_sources": f"{S3_EVAL}/images_val.tar.gz",
    "evaluate.checkpoint": "<selected train/AutoML checkpoint>",
    "train.stage": "finetune",
}

inference (必須のデータソース):

{
    "dataset.test_data_sources": f"{S3_EVAL}/images_test.tar.gz",
    "inference.checkpoint": "<selected train/AutoML checkpoint>",
    "train.stage": "finetune",
}

Eval データセット

任意です。事前学習には eval データは必要ありません。ファインチューニングではオプションで val セットを使用します。

重要なパラメーター

  • train.stage: トレーニング段階。オプション: pretrain、finetune。pretrain はマスキングを通じて表現を学習します。finetune は分類ヘッドを追加します。
  • model.arch: アーキテクチャ。デフォルトは convnextv2_base。ローカルのスモーク AutoML では、vit_tiny_patch16 のようなサポートされていない名前ではなく convnextv2_atto を使用してください。サポートされるファミリーには vit_base_patch16 およびそれ以上の ViT、ConvNeXtV2 の atto/femto/pico/nano/tiny/base/large/huge、そして Hiera の tiny/small/base/large/huge が含まれます。
  • model.num_classes: ファインチューニング用のクラス数。デフォルトは 1000 (ImageNet)。finetune 段階でのみ関連します。
  • model.mask_ratio: 事前学習中にマスクするパッチの割合。通常は 0.75。
  • model.norm_pix_loss: 再構成損失でピクセル値を正規化するかどうか。
  • dataset.augmentation.input_size: ConvNeXtV2 MAE ではローカルのスモークプロファイルを 224 のままにしてください。 112 に減らすと、MAE のマスクグリッドが特徴マップの次元と互換性がなくなる可能性があります。
  • MAE は dataset.workers スペックフィールドを公開していません。スモークテストの オーバーライドに追加しないでください。Hydra はトレーニング前に未知の dataset キーを拒否します。
  • train.optim.lr: 学習率。デフォルトは 2e-4。
  • dataset.augmentation: ファインチューニング用の mixup、cutmix を含む拡張設定。

マルチ GPU / マルチノード

起動方法: Lightning 管理 (単一の python プロセスで、Lightning がワーカーを生成)。

スペックキー説明デフォルト
train.num_gpusGPU の数1
train.gpu_idsGPU デバイスインデックス[0]
train.num_nodesノード数1
train.distributed_strategyddp または fsdpddp
  • ddp は find_unused_parameters=True を使用します
  • fsdp は FP16 を強制します
  • 事前学習にはマルチ GPU を強く推奨します (大きなバッチサイズが必要)

マルチノード環境変数 (オーケストレーターによって設定): WORLD_SIZE、NODE_RANK、MASTER_ADDR、MASTER_PORT、NUM_GPU_PER_NODE。

ハードウェア

最低 2 GPU、推奨 8 GPU。GPU あたり 24GB 以上 (A100 推奨) の VRAM。MAE の事前学習は多くの GPU にまたがる大きなバッチサイズの恩恵を受けます。ファインチューニングはリソース要件がより控えめです。

エラーパターン

ステージの不一致:train.stage が意図(pretrain または finetune)に合っていることを確認してください。pretrained_model_path を指定せずにファインチューニングすると、スクラッチから学習します。

pretrain チェックポイントを使用した推論:MAE の predict データローダーは、train.stage: pretrain の場合に NotImplementedError を発生させます。推論と分類形式の評価には finetune チェックポイントを使用するか、pretrain のみの実行を train/evaluate/export に限定してください。

num_classes の不一致(finetune のみ):ファインチューニング時は、model.num_classes がデータセットのクラス数と一致していることを確認してください。

Spec パラメーター/親モデルの推論

モデル固有の推論マッピングは config.json ではなく、この MD ファイルに記述します。生成されたランナーはこのセクションを読み取り、create_job() の前に SDK ヘルパーを使用してマッピングを適用する必要があります。これは以前のマイクロサービスにおける infer_params.py のフローを踏襲しています。

TAO Core mae.config.json からの推論マッピング:

アクションSpec フィールド推論関数意味
evaluateencryption_keykey暗号化キー
evaluateevaluate.checkpointparent_model親ジョブの結果フォルダーから推定されるモデルファイル
evaluateevaluate.trt_engineparent_model親ジョブの結果フォルダーから推定されるモデルファイル
evaluateresults_diroutput_dir現在のジョブの結果ディレクトリ
exportencryption_keykey暗号化キー
exportexport.checkpointparent_model親ジョブの結果フォルダーから推定されるモデルファイル
exportexport.onnx_filecreate_onnx_file出力 ONNX パス
exportresults_diroutput_dir現在のジョブの結果ディレクトリ
inferenceencryption_keykey暗号化キー
inferenceinference.checkpointparent_model親ジョブの結果フォルダーから推定されるモデルファイル
inferenceinference.trt_engineparent_model親ジョブの結果フォルダーから推定されるモデルファイル
inferenceresults_diroutput_dir現在のジョブの結果ディレクトリ
trainencryption_keykey暗号化キー
trainresults_diroutput_dir現在のジョブの結果ディレクトリ
traintrain.pretrained_model_pathptm_if_no_resume_model再開用チェックポイントがない場合の PTM
traintrain.resume_training_checkpoint_pathresume_model現在のジョブの結果フォルダーから推定されるモデルファイル

parent_model または parent_model_folder には、上流の train/export/AutoML 子ジョブ ID を parent_job_id として渡してください。SDK は親の結果フォルダーを一覧表示し、チェックポイントのアーティファクトを絞り込んで、選択されたモデルファイルまたはフォルダーを返します。これらのマッピングを config.json に戻したり、チェックポイントのパスを推測するよう生成済みランナースクリプトにパッチを適用したりしないでください。

SDK のリゾルバー以外でチェックポイントを解決する場合は、たとえば model_epoch_000_step_00099.pth のように、対象のエポック/ステップのアーティファクトを正確に選択してください。convnextv2_atto_latest.pth やその他の latest シンボリックリンクを使用するのは、latest が明示的に要求された場合に限ります。チェックポイントと ONNX/エンジンの形状が一致するよう、train.stage、model.arch、model.num_classes、およびエクスポート時の入力サイズを evaluate、inference、export、deploy の各 spec に引き継いでください。

デプロイ

コメント