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.
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
Full results on MLCommons website.
Pre-requisites:
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.
cd $PATH_DIR
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
./download_dataset.sh
./verify_dataset.sh
This should return PASSED.
Then, to extract the dataset, use:
DATASET_DIR=$PATH_DIR/mlperf/data/maskrcnn_data/
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.