tao-train-pointpillars
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChinesePointPillars
PointPillars
PointPillars for 3D object detection from LiDAR point clouds. Encodes point clouds into a pseudo-image via pillar-based representation, then applies 2D detection. Used in autonomous driving / robotics.
Typically trained from scratch. Provide train.resume_training_checkpoint_path to resume.
For TAO Deploy TensorRT actions (, TensorRT , and TensorRT ), read first. Deploy spec templates live in this skill's folder with the prefix.
gen_trt_engineevaluateinferencereferences/tao-deploy-pointpillars.mdreferences/spec_template_deploy_*.yamlPointPillars用于基于LiDAR点云的3D目标检测。它通过基于柱体的表示方式将点云编码为伪图像,随后应用2D检测技术,适用于自动驾驶/机器人领域。
通常从头开始训练。提供train.resume_training_checkpoint_path参数可恢复训练。
对于TAO Deploy TensorRT操作(、TensorRT 和TensorRT ),请先阅读。部署规格模板位于本技能的文件夹中,前缀为。
gen_trt_engineevaluateinferencereferences/tao-deploy-pointpillars.mdreferences/spec_template_deploy_*.yamlDataclass Schemas
数据类模式
Generated TAO Core schemas are packaged in , with listing available actions. Each generated schema also emits from the schema top-level field. AutoML enablement is declared at the model layer in via . Runnable AutoML still requires and to exist and parse. Use the packaged train schema for , , defaults, min/max bounds, enums, option weights, math conditions, dependencies, and popular parameters. Do not expect at runtime; maintainers regenerate schemas/templates before packaging the skill bank.
schemas/<action>.schema.jsonschemas/manifest.jsonreferences/spec_template_<action>.yamldefaultreferences/skill_info.yamlautoml_enabledschemas/train.schema.jsonreferences/spec_template_train.yamlautoml_default_parametersautoml_disabled_parameters~/tao-core生成的TAO Core模式打包在中,列出了可用操作。每个生成的模式还会从模式顶层的字段生成。AutoML支持在中的模型层通过声明。可运行的AutoML仍要求和存在且可解析。使用打包的训练模式来配置、、默认值、最小/最大边界、枚举、选项权重、数学条件、依赖关系和常用参数。运行时不要依赖;维护人员在打包技能库前会重新生成模式/模板。
schemas/<action>.schema.jsonschemas/manifest.jsondefaultreferences/spec_template_<action>.yamlreferences/skill_info.yamlautoml_enabledschemas/train.schema.jsonreferences/spec_template_train.yamlautoml_default_parametersautoml_disabled_parameters~/tao-coreTrain Action Policy
训练操作策略
This model is AutoML-enabled at the model layer. Before handling any train-stage request, read and resolve the run override from either an explicit value or the user's workflow request. Treat phrases like "turn off AutoML", "disable AutoML", "no HPO", or "plain training" as for this run only; otherwise default to . When , , and both and are packaged, route the train action through by default with this model's . Preserve workflow/application overrides for datasets, specs, output directories, GPU/platform settings, parent checkpoints, and . Use direct model training only when or the packaged train schema/template is missing; in the missing-schema case, report that AutoML is enabled but not runnable for this model until schemas are generated.
references/skill_info.yamlautoml_policyautoml_policy: offautoautoml_policy: autoautoml_enabled: trueschemas/train.schema.jsonreferences/spec_template_train.yamltao-skill-bank:tao-run-automlskill_dirautoml_policyautoml_policy: offNon-train actions such as , , , and deploy flows stay in this model skill. The per-run override does not change model metadata.
evaluateinferenceexportautoml_policy该模型在模型层支持AutoML。处理任何训练阶段请求前,请阅读,并通过显式的值或用户的工作流请求解析运行覆盖配置。将“turn off AutoML”、“disable AutoML”、“no HPO”或“plain training”这类短语视为本次运行的;否则默认设为。当、且和均已打包时,默认将训练操作通过路由,并传入该模型的。保留数据集、规格、输出目录、GPU/平台设置、父检查点和的工作流/应用覆盖配置。仅当或打包的训练模式/模板缺失时,才使用直接模型训练;若模式缺失,需报告该模型已启用AutoML但无法运行,直到生成模式为止。
references/skill_info.yamlautoml_policyautoml_policy: offautoautoml_policy: autoautoml_enabled: trueschemas/train.schema.jsonreferences/spec_template_train.yamltao-skill-bank:tao-run-automlskill_dirautoml_policyautoml_policy: off非训练操作(如、、和部署流程)仍在本模型技能中执行。每次运行的覆盖配置不会更改模型元数据。
evaluateinferenceexportautoml_policyTraining Requirements
训练要求
- Dataset type: pointpillars
- Formats: default
- Monitoring metric: loss
- 数据集类型: pointpillars
- 格式: default
- 监控指标: loss
Per-Action Dataset Requirements
各操作的数据集要求
| Action | Spec Key | Source | Files | List? |
|---|---|---|---|---|
| dataset_convert | dataset.data_path | id | No | |
| evaluate | dataset.data_path | train_datasets | No | |
| evaluate | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | No |
| export | dataset.data_path | train_datasets | No | |
| export | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | No |
| inference | dataset.data_path | train_datasets | No | |
| inference | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | No |
| prune | dataset.data_path | train_datasets | No | |
| prune | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | No |
| retrain | dataset.data_path | train_datasets | No | |
| retrain | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | No |
| train | dataset.data_path | train_datasets | No | |
| train | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | No |
| 操作 | 规格键 | 来源 | 文件 | 是否为列表? |
|---|---|---|---|---|
| dataset_convert | dataset.data_path | id | 否 | |
| evaluate | dataset.data_path | train_datasets | 否 | |
| evaluate | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | 否 |
| export | dataset.data_path | train_datasets | 否 | |
| export | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | 否 |
| inference | dataset.data_path | train_datasets | 否 | |
| inference | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | 否 |
| prune | dataset.data_path | train_datasets | 否 | |
| prune | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | 否 |
| retrain | dataset.data_path | train_datasets | 否 | |
| retrain | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | 否 |
| train | dataset.data_path | train_datasets | 否 | |
| train | dataset.data_info_path | train_datasets | /results/{dataset_convert_job_id}/data_info/ | 否 |
Typical Spec Overrides
典型规格覆盖配置
Data source overrides are mandatory for every action — the agent MUST construct data source paths from the Per-Action Dataset Requirements table above and include them in .
spec_overridespython
S3_TRAIN = "s3://bucket/data/train"train (mandatory data sources):
python
{
"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 (mandatory data sources):
python
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}export (mandatory data sources):
python
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}inference (mandatory data sources):
python
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}prune (mandatory data sources):
python
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}retrain (mandatory data sources):
python
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}数据源覆盖配置对每个操作都是必填项——代理必须根据上表的各操作数据集要求构建数据源路径,并将其包含在中。
spec_overridespython
S3_TRAIN = "s3://bucket/data/train"train(必填数据源):
python
{
"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(必填数据源):
python
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}export(必填数据源):
python
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}inference(必填数据源):
python
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}prune(必填数据源):
python
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}retrain(必填数据源):
python
{
"dataset.data_path": f"{S3_TRAIN}",
"dataset.data_info_path": f"{S3_TRAIN}//results/{dataset_convert_job_id}/data_info/",
}Eval Dataset
评估数据集
Optional. Validation data (val.tar.gz) is separate from training. Used for mAP evaluation.
可选。验证数据(val.tar.gz)与训练数据分离,用于mAP评估。
Important Parameters
重要参数
- train.num_epochs: Default 80 (much higher than other TAO models). PointPillars needs more epochs for convergence on 3D detection.
- train.lr: Learning rate. Default 0.003 (adam_onecycle scheduler).
- dataset.class_names: List of 3D object classes. Default 7 classes (KITTI-style). Modify to match your dataset.
- dataset.data_path: Path to point cloud data directory.
- dataset.data_info_path: Path to data info files from dataset_convert step.
- dataset.point_cloud_range: Spatial extent of the point cloud to consider. Must match your sensor configuration.
- model.dense_head.anchor_generator_config: Anchor configurations per class. Must be tuned for your object sizes and the point cloud range.
- 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: 每个类别的锚框配置,必须针对目标尺寸和点云范围进行调优。
Multi-GPU / Multi-Node
多GPU/多节点
Launch method: (LIGHTNING_EXCLUDED_NETWORK). Uses PyTorch native (NOT Lightning Trainer).
torchrunDistributedDataParallel| Spec Key | Description | Default |
|---|---|---|
| Number of GPUs per node | 1 |
| GPU device indices | [0] |
| Number of nodes | 1 |
- is explicitly set from
CUDA_VISIBLE_DEVICESTAO_VISIBLE_DEVICES - Uses directly (not Lightning strategy)
nn.parallel.DistributedDataParallel - is copied to
NODE_RANKifRANKis unsetRANK
Multi-node env vars (set by orchestrator):
| Variable | Purpose |
|---|---|
| Number of nodes |
| This node's rank |
| Rank-0 node IP |
| Rank-0 port (default 29500) |
| GPUs per node |
启动方式: (LIGHTNING_EXCLUDED_NETWORK)。使用PyTorch原生的(而非Lightning Trainer)。
torchrunDistributedDataParallel| 规格键 | 描述 | 默认值 |
|---|---|---|
| 每个节点的GPU数量 | 1 |
| GPU设备索引 | [0] |
| 节点数量 | 1 |
- 由
CUDA_VISIBLE_DEVICES显式设置TAO_VISIBLE_DEVICES - 直接使用(而非Lightning策略)
nn.parallel.DistributedDataParallel - 如果未设置,将
RANK复制到NODE_RANKRANK
多节点环境变量(由编排器设置):
| 变量 | 用途 |
|---|---|
| 节点总数 |
| 当前节点的排名 |
| 排名为0的节点IP |
| 排名为0的节点端口(默认29500) |
| 每个节点的GPU数量 |
Hardware
硬件要求
Minimum 1 GPU(s), recommended 4 GPU(s). 16GB+ (V100 or A100) VRAM per GPU. PointPillars is relatively efficient for 3D detection. The main bottleneck is data I/O for large point cloud datasets.
最低1块GPU,推荐4块GPU。每块GPU需16GB及以上显存(V100或A100)。PointPillars在3D检测任务中效率相对较高,主要瓶颈是大型点云数据集的I/O。
Error Patterns
常见错误模式
dataset_convert required: Training will fail if data_info_path is not populated from a prior dataset_convert job. Always run convert first.
Point cloud range mismatch: If point_cloud_range does not match the actual sensor data extent, detections will be poor or empty.
Epoch numbering: PointPillars checkpoint epoch numbers may be offset by 1 from status.json reported epochs.
需先执行dataset_convert: 如果data_info_path未从之前的dataset_convert任务中获取,训练将失败。请始终先执行转换操作。
点云范围不匹配: 如果point_cloud_range与实际传感器数据范围不匹配,检测结果会很差或为空。
轮次编号: PointPillars的检查点轮次编号可能与status.json中报告的轮次编号相差1。
Spec Param / Parent Model Inference
规格参数/父模型推理
Model-specific inference mappings belong in this MD file, not in . Generated runners should read this section and apply the mappings with SDK helpers before . This mirrors the old microservices flow.
config.jsoncreate_job()infer_params.pyInference mappings from TAO Core :
pointpillars.config.json| Action | Spec Field | Inference Function | Meaning |
|---|---|---|---|
| dataset_convert | | | current job results directory |
| evaluate | | | model file inferred from the parent job results folder |
| evaluate | | | encryption key |
| evaluate | | | current job results directory |
| export | | | model file inferred from the parent job results folder |
| export | | | output ONNX path |
| export | | | output TensorRT engine path |
| export | | | encryption key |
| export | | | current job results directory |
| gen_trt_engine | | | model file inferred from the parent job results folder |
| gen_trt_engine | | | output TensorRT engine path |
| gen_trt_engine | | | encryption key |
| gen_trt_engine | | | current job results directory |
| inference | | | model file inferred from the parent job results folder |
| inference | | | model file inferred from the parent job results folder |
| inference | | | encryption key |
| inference | | | current job results directory |
| prune | | | encryption key |
| prune | | | model file inferred from the parent job results folder |
| prune | | | current job results directory |
| retrain | | | encryption key |
| retrain | | | current job results directory |
| retrain | | | model file inferred from the parent job results folder |
| train | | | encryption key |
| train | | | PTM when no resume checkpoint exists |
| train | | | current job results directory |
| train | | | model file inferred from the current job results folder |
For or , pass the upstream train/export/AutoML child job id as . The SDK lists the parent result folder, filters checkpoint artifacts, and returns the selected model file or folder. Do not add these mappings back to and do not patch generated runner scripts to guess checkpoint paths.
parent_modelparent_model_folderparent_job_idconfig.json模型特定的推理映射应放在此MD文件中,而非。生成的运行器应读取本节内容,并在前使用SDK助手应用映射。这与旧微服务的流程一致。
config.jsoncreate_job()infer_params.py来自TAO Core 的推理映射:
pointpillars.config.json| 操作 | 规格字段 | 推理函数 | 含义 |
|---|---|---|---|
| dataset_convert | | | 当前任务结果目录 |
| evaluate | | | 从父任务结果文件夹推断出的模型文件 |
| evaluate | | | 加密密钥 |
| evaluate | | | 当前任务结果目录 |
| export | | | 从父任务结果文件夹推断出的模型文件 |
| export | | | 输出ONNX路径 |
| export | | | 输出TensorRT引擎路径 |
| export | | | 加密密钥 |
| export | | | 当前任务结果目录 |
| gen_trt_engine | | | 从父任务结果文件夹推断出的模型文件 |
| gen_trt_engine | | | 输出TensorRT引擎路径 |
| gen_trt_engine | | | 加密密钥 |
| gen_trt_engine | | | 当前任务结果目录 |
| inference | | | 从父任务结果文件夹推断出的模型文件 |
| inference | | | 从父任务结果文件夹推断出的模型文件 |
| inference | | | 加密密钥 |
| inference | | | 当前任务结果目录 |
| prune | | | 加密密钥 |
| prune | | | 从父任务结果文件夹推断出的模型文件 |
| prune | | | 当前任务结果目录 |
| retrain | | | 加密密钥 |
| retrain | | | 当前任务结果目录 |
| retrain | | | 从父任务结果文件夹推断出的模型文件 |
| train | | | 加密密钥 |
| train | | | 无恢复检查点时使用预训练模型 |
| train | | | 当前任务结果目录 |
| train | | | 从当前任务结果文件夹推断出的模型文件 |
对于或,将上游训练/导出/AutoML子任务ID作为传入。SDK会列出父结果文件夹,过滤检查点工件,并返回选定的模型文件或文件夹。请勿将这些映射添加回,也不要修改生成的运行器脚本以猜测检查点路径。
parent_modelparent_model_folderparent_job_idconfig.jsonDeployment
部署
- tao-deploy-pointpillars — PointPillars deploy workflow for TensorRT engine generation, TensorRT evaluation, and TensorRT inference using TAO Deploy.
- tao-deploy-pointpillars — 使用TAO Deploy进行PointPillars部署的工作流,包括TensorRT引擎生成、TensorRT评估和TensorRT推理。