NVIDIA Deep Learning Examples
NVIDIA Deep Learning Examples
EfficientDet For PyTorch
Resource
NVIDIA Deep Learning Examples
NVIDIA Deep Learning Examples
EfficientDet For PyTorch

A convolution-based neural network for the task of object detection.

Benchmarking

Benchmarking can be performed for both training and inference. Both the scripts run the EfficientDet model. You can specify whether benchmarking is performed in AMP, TF32, or FP32 by specifying it as an argument to the benchmarking scripts.

Training performance benchmark

Training benchmarking can be performed by running the script:

scripts/D0/train-benchmark_{AMP, TF32, FP32}_{V100-32G, A100-80G}.sh

Inference performance benchmark

Inference benchmarking can be performed by running the script:

scripts/D0/inference_{AMP, FP32, TF32}_{A100-80G, V100-32G}.sh

Results

The following sections provide details on how we achieved our performance and accuracy in training and inference.

Training Accuracy Results

Training accuracy: NVIDIA DGX A100 (8x A100 80GB)

Our results were obtained by running the scripts/D0/train_{AMP, TF32}_8xA100-80G.sh training script in the 21.06-py3 NGC container on NVIDIA DGX A100 (8x A100 80GB) GPUs with no intermediate evaluation.

GPUsBBOX mAP - TF32BBOX mAP - FP16Time to train - TF32Time to train - mixed precisionTime to train - speedup (TF32 to mixed precision)
80.33990.34078.576.51.318
Training accuracy: NVIDIA DGX-1 (8x V100 32GB)

Our results were obtained by running the scripts/D0/train_{AMP, FP32}_8xV100-32G.sh training script in the PyTorch 21.06-py3 NGC container on NVIDIA DGX-1 with 8x V100 32GB GPUs with no intermediate evaluation.

GPUsBBOX mAP - FP32BBOX mAP - FP16Time to train - FP32Time to train - mixed precisionTime to train - speedup (FP32 to mixed precision)
80.34100.34131610.51.52
Training accuracy: NVIDIA DGX-1 (32x V100 32GB)

Our results were obtained by running the scripts/D0/train_{AMP, FP32}_32xV100-32G.sh training script in the PyTorch 21.06-py3 NGC container on NVIDIA DGX-1 with 32x V100 32GB GPUs with no intermediate evaluation.

GPUsBBOX mAP - FP32BBOX mAP - FP16Time to train - FP32Time to train - mixed precisionTime to train - speedup (FP32 to mixed precision)
320.34180.337364.951.22
Training accuracy on Waymo dataset: NVIDIA DGX A100 (8x A100 80GB)

Our results were obtained by running the scripts/waymo/train_waymo_AMP_8xA100-80G.sh training script in the 21.06-py3 NGC container on the Waymo dataset on NVIDIA DGX A100 (8x A100 80GB) GPUs with no intermediate evaluation. These results were obtained by training the EfficientDet-D0 model with a frozen backbone.

categorymAPcategoryAP @ IoU 0.7categoryAP @ IoU 0.5categoryAP @ IoU 0.5
L2_ALL_NS50.377Vehicle50.271Pedestrian61.788Cyclist39.072

The following results were obtained by training the EfficientDet-D0 model without freezing any part of the architecture. This can be done by removing the --freeze_layer argument from the script.

categorymAPcategoryAP @ IoU 0.7categoryAP @ IoU 0.5categoryAP @ IoU 0.5
L2_ALL_NS51.249Vehicle51.091Pedestrian62.816Cyclist39.841
Training loss curves

Loss Curve

Here, multihead loss is simply the weighted sum of losses on the classification head and the bounding box head.

Training Stability Test

The following tables compare mAP scores across five different training runs with different seeds. The runs showcase consistent convergence on all five seeds with very little deviation.

ConfigSeed 1Seed 2Seed 3Seed 4Seed 5MeanStandard Deviation
8 GPUs, final AP BBox0.34220.33790.34370.34240.34020.34120.002

Training Performance Results

Training performance: NVIDIA DGX A100 (8x A100 80GB)

Our results were obtained by running the scripts/D0/train_benchmark_{AMP, TP32}_8xA100-80G.sh training script in the 21.06-py3 NGC container on NVIDIA DGX A100 (8x A100 80GB) GPUs. Performance numbers in images per second were averaged over an entire training epoch.

GPUsThroughput - TF32Throughput - mixed precisionThroughput speedup (TF32 - mixed precision)Weak scaling - TF32Weak scaling - mixed precision
11702551.511
46168661.43.623.39
8121318351.57.057.05
Training performance: NVIDIA DGX-1 (8x V100 32GB)

Our results were obtained by running the scripts/D0/train_benchmark_{AMP, FP32}_8xV100-32G.sh training script in the 21.06-py3 NGC container on NVIDIA DGX-1 with (8x V100 32GB) GPUs. Performance numbers in images per second were averaged over an entire training epoch.

GPUsThroughput - FP32Throughput - mixed precisionThroughput speedup (FP32 - mixed precision)Weak scaling - FP32Weak scaling - mixed precision
11101861.6911
43676101.663.333.28
861310401.695.575.59

To achieve similar results, follow the steps in the Quick Start Guide.

Inference performance results

Inference performance: NVIDIA DGX A100 (1x A100 40GB)

Our results were obtained by running the scripts/inference_{AMP, TF32}_A100-80G.sh training script in the PyTorch 21.06-py3 NGC container on NVIDIA DGX A100 (1x A100 80GB) GPU.

GPUsBatch size / GPUThroughput - TF32Throughput - mixed precisionThroughput speedup (TF32 - mixed precision)
1845.6150.231.101

To achieve similar results, follow the steps in the Quick Start Guide.

Inference performance: NVIDIA DGX-1 (1x V100 32GB)

Our results were obtained by running the scripts/inference_{AMP, FP32}_V100-32G.sh training script in the PyTorch 21.06-py3 NGC container on NVIDIA DGX-1 with 1x V100 32GB GPUs. Performance numbers (in items/images per second) were averaged over an entire training epoch.

GPUsBatch size / GPUThroughput - FP32Throughput - mixed precisionThroughput speedup (FP32 - mixed precision)
1838.8142.251.08

To achieve these same results, follow the steps in the Quick Start Guide.