NVIDIA
NVIDIA
SSD v1.1 for PyTorch
Resource
NVIDIA
NVIDIA
SSD v1.1 for PyTorch

With a ResNet-50 backbone and a number of architectural modifications, this version provides better accuracy and performance.

Performance

Benchmarking

The following section shows how to run benchmarks measuring the model performance in training and inference modes.

Training performance benchmark

Training benchmark was run in various scenarios on V100 16G GPU. For each scenario, batch size was set to 32. The benchmark does not require a checkpoint from a fully trained model.

To benchmark training, run:

python -m torch.distributed.launch --nproc_per_node={NGPU} \
       main.py --batch-size {bs} \
               --mode benchmark-training \
               --benchmark-warmup 100 \
               --benchmark-iterations 200 \
               {fp16} \
               --data {data}

Where the {NGPU} selects number of GPUs used in benchmark, the {bs} is the desired batch size, the {fp16} is set to --fp16 if you want to benchmark training with tensor cores, and the {data} is the location of the COCO 2017 dataset.

Benchmark warmup is specified to omit first iterations of first epoch. Benchmark iterations is number of iterations used to measure performance.

Inference performance benchmark

Inference benchmark was run on 1x V100 16G GPU. To benchmark inference, run:

python main.py --eval-batch-size {bs} \
               --mode benchmark-inference \
               --benchmark-warmup 100 \
               --benchmark-iterations 200 \
               {fp16} \
               --data {data}

Where the {bs} is the desired batch size, the {fp16} is set to --fp16 if you want to benchmark inference with Tensor Cores, and the {data} is the location of the COCO 2017 dataset.

Benchmark warmup is specified to omit first iterations of first epoch. Benchmark iterations is number of iterations used to measure performance.

Results

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

Training accuracy results

Our results were obtained by running the ./examples/SSD300_FP{16,32}_{1,4,8}GPU.sh script in the pytorch-19.03-py3 NGC container on NVIDIA DGX-1 with 8x V100 16G GPUs. Batch was set to size best utilizing GPU memory. For FP32 precision, batch size is 32, for mixed precision batch size is 64

Number of GPUsMixed precision mAPTraining time with mixed precisionFP32 mAPTraining time with FP32
10.249410h 39min0.248321h 40min
40.24952h 53min0.24785h 52min
80.24891h 31min0.24752h 54min

Here are example graphs of FP32 and FP16 training on 8 GPU configuration:

TrainingLoss

ValidationAccuracy

Training performance results

Our results were obtained by running the main.py script with the --mode benchmark-training flag in the pytorch-19.03-py3 NGC container on NVIDIA DGX-1 with V100 16G GPUs.

Number of GPUsBatch size per GPUMixed precision img/s (median)FP32 img/s (median)Speed-up with mixed precisionMulti-gpu weak scaling with mixed precisionMulti-gpu weak scaling with FP32
132217.052102.4952.121.001.00
432838.457397.7972.113.863.88
8321639.843789.6952.087.567.70

To achieve same results, follow the Quick start guide outlined above.

Inference performance results

Our results were obtained by running the main.py script with --mode benchmark-inference flag in the pytorch-19.03-py3 NGC container on NVIDIA DGX-1 with 1x V100 16G GPUs.

Batch sizeMixed precision img/s (median)FP32 img/s (median)
2163.12147.91
4296.60201.62
8412.52228.16
16470.10280.57
32520.54302.43

To achieve same results, follow the Quick start guide outlined above.

NVIDIA uses cookies to improve your experience on our web site. We and our third-party partners also use cookies and other tools to collect and record information you provide as well as information about your interactions with our websites for performance improvement, analytics, and to assist in marketing efforts. By clicking "Accept All", you consent to our use of cookies and other tools as described in our Cookie Policy. You can manage your cookie settings by clicking on "Manage Settings." By continuing to use this site or by clicking one of the buttons below, you agree to our Terms of Service (which contains important waivers). Please see our Privacy Policy for more information on our privacy practices.