mcpField
T
tao-train-pointpillars

tao-train-pointpillars

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

tao-train-pointpillars について

LiDAR点群を使ったPointPillarsの3D物体検出を行うTAOスキルです。AutoMLを考慮した学習に加え、評価、推論、TensorRTによるデプロイにも対応します。

主な機能

  1. 01ピラー方式のLiDARエンコード
  2. 02AutoML対応の学習フロー
  3. 03学習・評価・推論アクション
  4. 04TensorRTデプロイフロー

活用シーン

  1. 01自動運転向け3D検出器の学習
  2. 02ロボットのLiDARデータから物体を検出

インストール

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

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

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

同梱ファイル

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

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json
references/
skill_info.yaml
spec_template_dataset_convert.yaml
spec_template_deploy_evaluate.yaml
spec_template_deploy_gen_trt_engine.yaml
spec_template_deploy_inference.yaml
spec_template_evaluate.yaml
spec_template_export.yaml
spec_template_gen_trt_engine.yaml
spec_template_inference.yaml
spec_template_prune.yaml
spec_template_retrain.yaml
spec_template_train.yaml
tao-deploy-pointpillars.md
tao-deploy-pointpillars.skill_info.yaml
schemas/
dataset_convert.schema.json
evaluate.schema.json
export.schema.json
gen_trt_engine.schema.json
inference.schema.json
manifest.json
prune.schema.json
retrain.schema.json
train.schema.json

詳細

PointPillars

LiDAR 点群から 3D 物体検出を行う PointPillars です。柱ベースの表現を使って点群を疑似画像にエンコードし、2D 検出を適用します。自動運転やロボット工学で使用されます。

通常はスクラッチからトレーニングします。再開するには、train.resume_training_checkpoint_path を指定してください。

TAO Deploy の TensorRT アクション(gen_trt_engine、TensorRT の evaluate、TensorRT の inference)については、最初に references/tao-deploy-pointpillars.md をお読みください。Deploy の spec テンプレートは、このスキルの references/ フォルダーにあり、spec_template_deploy_*.yaml というプレフィックスが付いています。

Dataclass スキーマ

生成された 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、デプロイフローなどの train 以外のアクションは、このモデルのスキル内にとどまります。実行ごとの automl_policy オーバーライドによって、モデルのメタデータが変更されることはありません。

トレーニング要件

  • データセットタイプ: pointpillars
  • 形式: デフォルト
  • モニタリング指標: loss
アクションごとのデータセット要件
アクションSpec キーソースファイルリスト?
dataset_convertdataset.data_pathidいいえ
evaluatedataset.data_pathtrain_datasetsいいえ
evaluatedataset.data_info_pathtrain_datasets/results/{dataset_convert_job_id}/data_info/いいえ
exportdataset.data_pathtrain_datasetsいいえ
exportdataset.data_info_pathtrain_datasets/results/{dataset_convert_job_id}/data_info/いいえ
inferencedataset.data_pathtrain_datasetsいいえ
inferencedataset.data_info_pathtrain_datasets/results/{dataset_convert_job_id}/data_info/いいえ
prunedataset.data_pathtrain_datasetsいいえ
prunedataset.data_info_pathtrain_datasets/results/{dataset_convert_job_id}/data_info/いいえ
retraindataset.data_pathtrain_datasetsいいえ
retraindataset.data_info_pathtrain_datasets/results/{dataset_convert_job_id}/data_info/いいえ
traindataset.data_pathtrain_datasetsいいえ
traindataset.data_info_pathtrain_datasets/results/{dataset_convert_job_id}/data_info/いいえ
一般的な 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.data_path": f"{S3_TRAIN}",
    "dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}

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

{
    "dataset.data_path": f"{S3_TRAIN}",
    "dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}

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

{
    "dataset.data_path": f"{S3_TRAIN}",
    "dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}

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

{
    "dataset.data_path": f"{S3_TRAIN}",
    "dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}

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

{
    "dataset.data_path": f"{S3_TRAIN}",
    "dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}

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

{
    "dataset.data_path": f"{S3_TRAIN}",
    "dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}

評価データセット

任意です。検証データ(val.tar.gz)はトレーニングデータとは別です。mAP の評価に使用します。

重要なパラメーター

  • train.num_epochs:デフォルトは80です(他の TAO モデルより大幅に多い値です)。PointPillars で3D検出の収束を得るには、より多くのエポックが必要です。
  • train.lr:学習率です。デフォルトは0.003です(adam_onecycle スケジューラー)。
  • dataset.class_names:3Dオブジェクトクラスのリストです。デフォルトは7クラス(KITTI 形式)です。データセットに合わせて変更してください。
  • dataset.data_path:点群データディレクトリへのパスです。
  • dataset.data_info_path:dataset_convert ステップで生成されたデータ情報ファイルへのパスです。
  • dataset.point_cloud_range:対象となる点群の空間範囲です。センサーの構成に合わせる必要があります。
  • model.dense_head.anchor_generator_config:クラスごとのアンカー設定です。オブジェクトのサイズと点群の範囲に合わせて調整する必要があります。

マルチ GPU/マルチノード

起動方法: torchrun(LIGHTNING_EXCLUDED_NETWORK)。PyTorch ネイティブのDistributedDataParallelを使用します(Lightning Trainer は使用しません)。

Spec キー説明デフォルト
train.num_gpusノードあたりの GPU 数1
train.gpu_idsGPU デバイスのインデックス[0]
train.num_nodesノード数1
  • CUDA_VISIBLE_DEVICESはTAO_VISIBLE_DEVICESから明示的に設定されます
  • nn.parallel.DistributedDataParallelを直接使用します(Lightning の strategy は使用しません)
  • RANKが未設定の場合、NODE_RANKがRANKにコピーされます

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

変数用途
WORLD_SIZEノード数
NODE_RANKこのノードのランク
MASTER_ADDRランク0のノードの IP
MASTER_PORTランク0のポート(デフォルトは29500)
NUM_GPU_PER_NODEノードあたりの GPU 数

ハードウェア

最低1 GPU、推奨4 GPUです。各 GPU に16GB以上(V100 または A100)の VRAM が必要です。PointPillars は3D検出において比較的効率的です。主なボトルネックは、大規模な点群データセットのデータ I/O です。

エラーパターン

dataset_convert が必要です:以前に実行した dataset_convert ジョブでdata_info_pathが設定されていない場合、トレーニングは失敗します。必ず先に変換を実行してください。

点群の範囲の不一致:point_cloud_rangeが実際のセンサーデータの範囲と一致しない場合、検出結果が不良になるか、空になります。

エポック番号:PointPillars のチェックポイントのエポック番号は、status.json に報告されるエポック数と1つずれる場合があります。

Spec Param / 親モデルの推論

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

TAO Core pointpillars.config.json の推論マッピング:

アクションSpec フィールド推論関数意味
dataset_convertresults_diroutput_dir現在のジョブの結果ディレクトリ
evaluateevaluate.checkpointparent_model親ジョブの結果フォルダーから推論されるモデルファイル
evaluatekeykey暗号化キー
evaluateresults_diroutput_dir現在のジョブの結果ディレクトリ
exportexport.checkpointparent_model親ジョブの結果フォルダーから推論されるモデルファイル
exportexport.onnx_filecreate_onnx_file出力 ONNX パス
exportexport.save_enginecreate_engine_file出力 TensorRT エンジンパス
exportkeykey暗号化キー
exportresults_diroutput_dir現在のジョブの結果ディレクトリ
gen_trt_enginegen_trt_engine.onnx_fileparent_model親ジョブの結果フォルダーから推論されるモデルファイル
gen_trt_enginegen_trt_engine.save_enginecreate_engine_file出力 TensorRT エンジンパス
gen_trt_enginekeykey暗号化キー
gen_trt_engineresults_diroutput_dir現在のジョブの結果ディレクトリ
inferenceinference.checkpointparent_model親ジョブの結果フォルダーから推論されるモデルファイル
inferenceinference.trt_engineparent_model親ジョブの結果フォルダーから推論されるモデルファイル
inferencekeykey暗号化キー
inferenceresults_diroutput_dir現在のジョブの結果ディレクトリ
prunekeykey暗号化キー
pruneprune.modelparent_model親ジョブの結果フォルダーから推論されるモデルファイル
pruneresults_diroutput_dir現在のジョブの結果ディレクトリ
retrainkeykey暗号化キー
retrainresults_diroutput_dir現在のジョブの結果ディレクトリ
retraintrain.pruned_model_pathparent_model親ジョブの結果フォルダーから推論されるモデルファイル
trainkeykey暗号化キー
trainmodel.pretrained_model_pathptm_if_no_resume_model再開チェックポイントがない場合の PTM
trainresults_diroutput_dir現在のジョブの結果ディレクトリ
traintrain.resume_training_checkpoint_pathresume_model現在のジョブの結果フォルダーから推論されるモデルファイル

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

デプロイ

  • tao-deploy-pointpillars — TAO Deploy を使用した TensorRT エンジン生成、TensorRT 評価、TensorRT 推論の PointPillars デプロイワークフロー。

コメント