A Quick Guide to Benchmarking AI models on Azure: Mask R-CNN with MLPerf Training v2.1
Published Nov 09 2022 10:00 AM 3,104 Views

By Sonal Doomra, Hugo Affaticati, Reza Soroushmehr, and Jon Shelley




Azure is pleased to showcase results from our MLPerf Training v2.1 submission. For this submission, we benchmarked our NC A100 v4-series and NDm A100 v4-series offerings, which are our flagship virtual machine (VM) types for mid-end and high-end AI training workloads, respectively. NC A100 v4-series features up to four NVIDIA A100 PCIe Tensor Core GPUs with 80GB memory each, 96 3rd generation AMD EPYC Milan processor cores and 880 GiB of system memory.  NDm A100 v4 VMs are powered by eight NVIDIA A100 SXM 80GB Tensor Core GPUs with NVIDIA (NVLink 3.0 technology) and 96 physical 2nd generation AMD EPYC™ 7V12 CPU cores. In addition, with support for NVIDIA Quantum InfiniBand networking with in-network computing, the NDm A100 v4 VM series enable customers to scale out and meet the computational demands of multi-node distributed training workloads at scale.


In this document we share the highlights of MLPerf™ Training v2.1 results along with how to run these benchmarks on Azure. These MLPerf™ benchmark results demonstrate Azure’s commitment to providing our customers with the latest GPU offerings, being in line with on-premises performance and its commitment to enabling our customers to run AI at scale in the cloud.


MLPerfTM from MLCommons®


MLCommons® is an open engineering consortium of AI leaders from academia, research labs, and industry where the mission is to “build fair and useful benchmarks” that provide unbiased evaluations of training and inference performance for hardware, software, and services—all conducted under prescribed conditions. MLPerf™ Training benchmarks consist of real-world compute-intensive AI workloads to best simulate customer’s needs. MLPerf™ tests are transparent and objective, so technology decision makers can rely on the results to make informed buying decisions.


Highlights from MLPerfTM training v2.1 benchmark results

  1. Azure is the only cloud provider that demonstrated distributed training at scale with up to 128 NVIDIA A100 Tensor Core GPUs.    
  2. Azure achieved a 5.3% reduction in training time from the previous round (MLPerf Training v2.0) on an eight NVIDIA GPU system for the Mask R-CNN benchmark.
  3. Azure training times are at par with the on-premises submitters across all the benchmarks.  

Full results on MLCommons website.


How to replicate the results in Azure



NC A100 v4-series (single node): Deploy and set up a virtual machine on Azure by following Getting started with the NC A100 v4-series.

NDm A100 v4-series (multi node): Deploy and set up a cluster of virtual machines with CycleCloud by following the script Setup CycleCloud to run NGC containers


Set up the environment

First, we need to export the path to the directory where we will perform the benchmarks.

The path for NC A100 v4-series (single node) is:

export PATH_DIR=/mnt/resource_nvme

The path for NDm A100 v4-series (multi node) is:

export PATH_DIR=/shared/mlcommons

Then, we can clone the repository in the directory we created previously.

git clone https://github.com/mlcommons/training_results_v2.1.git


Get the dataset for Mask R-CNN

The Mask R-CNN script operates on COCO, a large-scale object detection, segmentation, and captioning dataset. To download and verify the dataset, use the following commands.

cd $PATH_DIR/training_results_v2.1/Azure/benchmarks/maskrcnn/implementations/ND96amsr_A100_v4/maskrcnn/dataset_scripts

This should return PASSED.

Then, to extract the dataset, use:

mkdir -p $DATASET_DIR
DATASET_DIR=$DATASET_DIR ./extract_dataset.sh

Mask R-CNN uses pre-trained ResNet50 as a backbone. To download and verify the RN50 weights use:

DATASET_DIR=$DATASET_DIR ./download_weights.sh

Make sure DATASET_DIR is writable.


To speed up loading of coco annotations during training, the annotations can be pickled since unpickling is faster than loading a json. Repeat the command below for all the annotations files in the json format to convert it to the pickle format.  

cd $PATH_DIR/training_results_v2.1/Azure/benchmarks/maskrcnn/implementations/NC96ads_A100_v4
docker build -t mlperftrainingv21/maskrcnn:latest .
docker run --gpus all -v $DATASET_DIR:/data -it mlperftrainingv21/maskrcnn:latest
cd /data
mkdir /data/pkl_coco
cd /workspace/object_detection/maskrcnn/dataset_scripts
python pickle_coco_annotations.py --root /data --ann_file /data/coco2017/annotations/<FILENAME>.json --pickle_output_file /data/pkl_coco/<FILENAME>.json.pickled

Exit the container to run the benchmarks.


Run the Mask R-CNN benchmark

The steps to run the benchmark consist of building the docker container, sourcing the configuration file, and starting the benchmark. The path and run commands differ depending on the virtual machines you are testing.


For NC A100 v4-series:

cd $PATH_DIR/training_results_v2.1/Azure/benchmarks/maskrcnn/implementations/NC96ads_A100_v4
source ./config_DGXA100_NC.sh
CONT= mlperftrainingv21/maskrcnn:latest DATADIR=$PATH_DIR/mlperf/data/maskrcnn_data/ ./run_with_docker.sh

For NDm A100 v4-series:

cd $PATH_DIR/training_results_v2.1/Azure/benchmarks/maskrcnn/implementations/ND96amsr_A100_v4
enroot import -o maskrcnn.sqsh "dockerd://mlperftrainingv21/maskrcnn:latest"
source ./config_DGXA100.sh
CONT=./maskrcnn.sqsh DATADIR=$PATH_DIR/mlperf/data/maskrcnn_data/ sbatch -N $DGXNNODES -p ndmv4 --exclusive --gpus-per-node=${DGXNGPU} ./run.sub

The above steps can be replicated for the other MLPerf Training v2.1 benchmarks or cluster sizes. One would have to adapt to the right configuration files and steps to preprocess the data.


#AzureHPCAI #MakeAIYourReality

Version history
Last update:
‎Dec 16 2022 01:09 PM
Updated by: