此处给出了基于 NGC MxNet 实现的 ResNet50V1.5 任务的详细复现流程,包括环境介绍、环境搭建、复现脚本、测试结果和测试日志等。
我们使用了与Paddle测试完全相同的物理机环境:
-
单机V100(单卡、8卡)
- 系统:CentOS release 7.5 (Final)
- GPU:Tesla V100-SXM2-32GB * 8
- CPU:Intel(R) Xeon(R) Gold 6271C CPU @ 2.60GHz * 80
- Driver Version: 525.60.11
- 内存:630 GB
-
单机A100(单卡、8卡)
- 系统:CentOS release 7.5 (Final)
- GPU:NVIDIA A100-SXM4-40GB * 8
- CPU:Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz * 160
- Driver Version: 525.60.13
- 内存:1510 GB
-
多机(32卡)
- 系统:CentOS release 6.3 (Final)
- GPU:Tesla V100-SXM2-32GB * 8
- CPU:Intel(R) Xeon(R) Gold 6271C CPU @ 2.60GHz * 48
- Driver Version: 450.80.02
- 内存:502 GB
我们使用 NGC MxNet 的代码仓库提供的Dockerfile制作镜像:
- Docker: nvcr.io/nvidia/mxnet:22.10-py3
- MxNet:1.9.0
- 模型代码:NVIDIA/DeepLearningExamples/MxNet
- CUDA:11.1
- cuDNN:8.05
单机环境的搭建,我们遵循了 NGC MxNet 官网提供的 Quick Start Guide 教程成功搭建了测试环境,主要过程如下:
-
下载NGC MxNet repo,并进入目录
git clone https://github.com/NVIDIA/DeepLearningExamples cd DeepLearningExamples/MxNet/Classification/RN50v1.5 # 本次测试是在如下版本下完成的: git checkout fc9c09b08d6d39fb13c79c8a7e08f85b03dbf3d1
-
制作Docker镜像
docker build . -t nvidia_rn50_mxnet
-
启动Docker
# 假设imagenet数据放在<path to data>目录下 # 假设MxNet转化后的数据放在<path to rec data> nvidia-docker run --rm -it --ipc=host -v <path to data>:/ILSVRC2012 -v <path to mxnet data>:/data/imagenet/train-val-recordio-passthrough nvidia_rn50_mxnet
-
制作MxNet需要的rec格式数据
./scripts/prepare_imagenet.sh /ILSVRC2012 /data/imagenet/train-val-recordio-passthrough
我们会后续补充此内容。
对于1卡、8卡性能测试,本报告严格按NGC公开的测试报告进行复现,对其提供的代码未做改动,并严格按照NGC测试使用的参数配置测试。其公开的测试报告请见:《ResNet50 v1.5 for MXNet》
-
下载我们编写的测试脚本,并执行该脚本
cd scripts/ bash mxnet_test_all.sh
-
执行后将得到如下日志文件:
/log/mxnet_gpu1_gpu8_fp32_bs256.txt /log/mxnet_gpu1_gpu8_amp_bs256.txt
在NGC报告的Training performance: NVIDIA DGX-2 (16x V100 32G)小节,提供了其测试的参数配置。因此,我们提供的mxnet_test_all.sh
是参考了其文档中的配置。
我们会后续补充此内容。
- V100上训练吞吐率(images/sec)如下:
卡数 | FP32(BS=128) | AMP(BS=256) |
---|---|---|
1 | 389.54 | 1471.9 |
8 | 2957.8 | 10336 |
32 | - | - |
- A100上训练吞吐率(images/sec)如下:
卡数 | FP32(BS=256) | AMP(BS=256) |
---|---|---|
1 | 1015.8 | 3046.4 |
8 | 7848.2 | 22690 |