mcpField
T
tao-train-bevfusion

tao-train-bevfusion

github.com/promptingcompanyデータ・データベース039 回インストール17 週間前に更新
リポジトリ

tao-train-bevfusion について

tao-train-bevfusion は、LiDAR 点群とカメラ画像を融合して鳥瞰視点の 3D 物体検出を行う NVIDIA TAO BEVFusion 用スキルです。データセット変換、学習、評価、推論に対応し、複数 GPU・複数ノードでの学習も扱います。

主な機能

  1. 01LiDAR とカメラデータの融合
  2. 02鳥瞰視点の 3D 物体検出
  3. 03データセット変換・学習・評価
  4. 04複数 GPU・複数ノードでの学習
  5. 05AutoML 学習ポリシーへの対応

活用シーン

  1. 01自動運転向け 3D 認識モデルの学習
  2. 02BEVFusion の検出結果の評価
  3. 03KITTI 形式データセットでの推論

インストール

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

$npx skills add https://github.com/promptingcompany/nv-skills --skill tao-train-bevfusion

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

同梱ファイル

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

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json
references/
skill_info.yaml
spec_template_dataset_convert.yaml
spec_template_evaluate.yaml
spec_template_inference.yaml
spec_template_train.yaml
schemas/
dataset_convert.schema.json
evaluate.schema.json
inference.schema.json
manifest.json
train.schema.json

詳細

BEVFusion

マルチセンサーによる3D物体検出のためのBEVFusionです。LiDARの点群とカメラ画像を鳥瞰図(BEV)空間で融合します。堅牢な3D認識を実現するため、自動運転で使用されます。

Swin画像バックボーンの事前学習済みバックボーンパスを設定します。

データクラススキーマ

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

Trainアクションのポリシー

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

evaluate、inference、export、deployフローなどのtrain以外のアクションは、引き続きこのモデルのスキルで処理します。実行ごとのautoml_policyオーバーライドによってモデルのメタデータが変わることはありません。

トレーニング要件

  • データセットの種類: bevfusion
  • 形式: default
  • モニタリング指標: AP11
アクションごとのデータセット要件
アクションSpec Keyソースファイルリスト?
dataset_convertroot_diridいいえ
evaluatedataset.test_datasettrain_datasetsann_file: results/{dataset_convert_job_id}/kitti_person_infos_val.pklいいえ
inferencedataset.root_dirtrain_datasetsいいえ
inferencedataset.test_datasettrain_datasetsann_file: results/{dataset_convert_job_id}/kitti_person_infos_val.pklいいえ
traindataset.train_datasettrain_datasetsann_file: results/{dataset_convert_job_id}/kitti_person_infos_train.pklいいえ
traindataset.val_datasettrain_datasetsann_file: results/{dataset_convert_job_id}/kitti_person_infos_val.pklいいえ
traindataset.test_datasettrain_datasetsann_file: results/{dataset_convert_job_id}/kitti_person_infos_val.pklいいえ
代表的なSpecオーバーライド

データソースのオーバーライドはすべてのアクションで必須です。エージェントは上記のアクションごとのデータセット要件の表をもとにデータソースのパスを構築し、spec_overridesに含める必要があります。

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

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

{
    "train.num_epochs": 30,
    "train.checkpoint_interval": 10,
    "train.validation_interval": 10,
    "train.num_gpus": 1,
    "dataset.train_dataset": {"ann_file": f"{S3_TRAIN}/results/{dataset_convert_job_id}/kitti_person_infos_train.pkl"},
    "dataset.val_dataset": {"ann_file": f"{S3_TRAIN}/results/{dataset_convert_job_id}/kitti_person_infos_val.pkl"},
    "dataset.test_dataset": {"ann_file": f"{S3_TRAIN}/results/{dataset_convert_job_id}/kitti_person_infos_val.pkl"},
}

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

{
    "dataset.test_dataset": {"ann_file": f"{S3_TRAIN}/results/{dataset_convert_job_id}/kitti_person_infos_val.pkl"},
}

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

{
    "dataset.root_dir": f"{S3_TRAIN}",
    "dataset.test_dataset": {"ann_file": f"{S3_TRAIN}/results/{dataset_convert_job_id}/kitti_person_infos_val.pkl"},
}

Evalデータセット

任意です。Valデータセットの分割は、データセット設定のann_fileで構成します。

重要なパラメーター

  • dataset.classes:検出クラスのリストです。デフォルトは ["person"] です。アノテーションのカテゴリと一致させる必要があります。
  • dataset.type:データセットの種類です。選択肢:KittiPersonDataset、TAO3DSyntheticDataset、TAO3DDataset。
  • dataset.root_dir:KITTI 形式のデータセットのルートディレクトリです。
  • dataset.box_type_3d:3D ボックスの座標系です。選択肢:lidar、camera。デフォルトは lidar です。
  • train.optimizer.lr:学習率です。デフォルトは 2e-4(AdamW)です。混合精度を使用するには、optimizer.wrapper_type で AmpOptimWrapper を指定します。
  • input_modality:センサーのモダリティを制御する辞書です。キーは use_lidar(True)、use_camera(True)、use_radar(False)、use_map(False)です。
  • model.img_backbone:画像バックボーンです。デフォルトは mmdet.SwinTransformer(Swin-Tiny)です。embed_dims=96、depths=[2,2,6,2] です。
  • model.view_transform.type:BEV 投影のビュー変換です。選択肢:DepthLSSTransform、LSSTransform。デフォルトは DepthLSSTransform です。
  • model.point_cloud_range:LiDAR の空間範囲です。デフォルトは [0,-40,-3,70.4,40,1] です。
  • model.voxel_size:ボクセルの寸法です。デフォルトは [0.05, 0.05, 0.1] です。
  • dataset.train_dataset.batch_size:GPU ごとのバッチサイズです。デフォルトは 4 です。

マルチ GPU/マルチノード

起動方法: torchrun(LIGHTNING_EXCLUDED_NETWORK)です。エントリーポイントは torchrun --nnodes=N --nproc-per-node=M train.py を実行します。通常の python ではありません。

Spec Key説明デフォルト
train.num_gpusノードごとの GPU 数1
train.gpu_idsGPU デバイスのインデックス[0]
train.num_nodesノード数1
  • CUDA_VISIBLE_DEVICES は TAO_VISIBLE_DEVICES から明示的に設定されます。
  • BEVFusion は Lightning DDP ではなく、mmdet3d ベースの分散学習を使用します。
  • RANK が未設定の場合、NODE_RANK の値が RANK にコピーされます。

マルチノード環境変数(オーケストレーターによって設定):

変数用途
WORLD_SIZEノード数
NODE_RANKこのノードのランク
MASTER_ADDRランク 0 のノードの IP アドレス
MASTER_PORTランク 0 のポート(デフォルトは 29500)
NUM_GPU_PER_NODEノードごとの GPU 数

ハードウェア

最低 2 GPU、推奨 4 GPU です。GPU ごとに 24 GB 以上(A100 を推奨)の VRAM が必要です。BEVFusion は複数センサーのフュージョンを行うため、メモリを大量に消費します。A100 GPU を強く推奨します。マルチ GPU 学習を想定しています。

エラーパターン

dataset_convert が必要です:学習を始める前に dataset_convert を実行して、info pickle ファイルを生成してください。

モダリティデータの欠落:マルチモーダルフュージョンを使用する場合は、カメラ画像と LiDAR 点群の両方が存在することを確認してください。

エポック番号:BEVFusion のチェックポイントのエポック番号は、標準的なゼロ埋め形式に従わない場合があります。

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

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

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

アクションSpec フィールド推論関数意味
dataset_convertresults_diroutput_dir現在のジョブの結果ディレクトリ
evaluateencryption_keykey暗号化キー
evaluateevaluate.checkpointparent_model親ジョブの結果フォルダーから推論されたモデルファイル
evaluateresults_diroutput_dir現在のジョブの結果ディレクトリ
inferenceencryption_keykey暗号化キー
inferenceinference.checkpointparent_model親ジョブの結果フォルダーから推論されたモデルファイル
inferenceresults_diroutput_dir現在のジョブの結果ディレクトリ
trainencryption_keykey暗号化キー
trainresults_diroutput_dir現在のジョブの結果ディレクトリ
traintrain.pretrained_checkpointptm_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 に戻したり、チェックポイントのパスを推測するために生成されたランナースクリプトを修正したりしないでください。

コメント