参考 Getting start with MLPerf Hands-on
准备
软件环境
- ubuntu 16.04
- CUDA10.2
- docker
- nvidia-docker2
测试硬件
特斯拉-v100
测试
下载数据集
首先下载别人的测试结果
test@test-X11DPG-OT:~$ mkdir githubfile
test@test-X11DPG-OT:~$ cd githubfile
test@test-X11DPG-OT:~/githubfile$ git clone https://github.com/mlperf/training_results_v0.6.git
在文本中找到下载数据集的脚本,这里先进性gmnt的训练
cd training_results_v0.6/
cd NVIDIA/benchmarks/nmt/implementations/
bash download_dataset.sh
查看文件大小
du -sh data/
13G
验证数据集安装成功
test@test-X11DPG-OT:~/githubfile/training_results_v0.6/NVIDIA/benchmarks/gnmt/implementations$ bash verify_dataset.sh
查看训练文件
训练的文本和代码在pytorch文件中
cd pytorch
test@test-X11DPG-OT:~/githubfile/training_results_v0.6/NVIDIA/benchmarks/gnmt/implementations/pytorch$
你需要配置config_.sh 文件,在这里如果你有8块gpu或16块gpu你可以用config_DGX1.sh 或config_DGX2.sh文件,在这里我们可以选用DGX1并修改文件,默认的DGX1为
DGXNGPU=8
DGXSOCKETCORES=18
DGXNSOCKET=2
在这里我们查看我们的电脑配置
nvidia-smi去看gpu,lscpu去看cpu,
gpu一块v100
cpu
DGXSOCKETCORES=14
DGXNSOCKET=2
建立docker并开始训练
在建立docker前修改mlperf_log_utils文件的112行
删除上半段添加下半段,不然会出现
这是nvidia机器dgx中的ib卡驱动,这是查看版本
sudo docker build -t mlperf-nvidia:rnn_translator .
现在可以进行训练
我们可以执行run.sub来执行,这里需要配置环境变量数据集 log文件和配置文件
DATADIR=<path/to/data/dir> LOGDIR=<path/to/output/dir> PULL=0 DGXSYSTEM=<config file> PULL=0 DGXSYSTEM=<system> sudo ./run.sub
在我的测试中,我修改的是config_DGX1.sh,所以缩写为DGX1,PULL为0代表用的是本地镜像而不是网上下载,新建了logs来存储log文件
DATADIR="/home/test/githubfile/training_results_v0.6/NVIDIA/benchmarks/gnmt/implementations/data" LOGDIR="/home/test/githubfile/training_results_v0.6/NVIDIA/benchmarks/gnmt/implementations/logs" PULL=0 DGXSYSTEM=DGX1 sudo ./run.sub
这样会跑10次,如果要少跑一些,就要修改run.sub,改成3
执行上面的文件,其中run.sub有些问题,在run文件中修改DATADIR和LOGDIR
把cat /etc/dgx-release 改为 os-release,这是dgx机器查看版本信息,由于不是nvidia机器所以用os
把PULL!=0改成=0
运行
PULL=0 DGXSYSTEM=DGX1 sudo ./run.sub
成功
测试
watch -d -n 1 nvidia-smi
查看gpu运行状态
htop
查看cpu运行状态