object_detection使用Mask R-CNN with ResNet50 backbone進行模型訓練,參考鏈接為https://github.com/Caiyishuai/training/tree/master/object_detection。
將MLPerf庫拷到本地
mkdir -p mlperf
cd mlperf
git clone https://github.com/mlperf/training.git
安裝CUDA和docker
source training/install_cuda_docker.sh
建立鏡像
cd training/object_detection/
nvidia-docker build . -t mlperf/object_detection
准備Dataset
source download_dataset.sh
查看下載的數據信息,如果shell里下載較慢可以利用下載器下載
#!/bin/bash
# Get COCO 2014 data sets
mkdir -p pytorch/datasets/coco
pushd pytorch/datasets/coco curl -O https://dl.fbaipublicfiles.com/detectron/coco/coco_annotations_minival.tgz tar xzf coco_annotations_minival.tgz curl -O http://images.cocodataset.org/zips/train2014.zip unzip train2014.zip curl -O http://images.cocodataset.org/zips/val2014.zip unzip val2014.zip curl -O http://images.cocodataset.org/annotations/annotations_trainval2014.zip unzip annotations_trainval2014.zip # TBD: MD5 verification # $md5sum *.zip *.tgz #f4bbac642086de4f52a3fdda2de5fa2c annotations_trainval2017.zip #cced6f7f71b7629ddf16f17bbcfab6b2 train2017.zip #442b8da7639aecaf257c1dceb8ba8c80 val2017.zip #2d2b9d2283adb5e3b8d25eec88e65064 coco_annotations_minival.tgz popd
如果用下載器下載在當前目錄下,更改此文件為:
tar xzf coco_annotations_minival.tgz
unzip train2014.zip
unzip val2014.zip
unzip annotations_trainval2014.zip
# TBD: MD5 verification
# $md5sum *.zip *.tgz
#f4bbac642086de4f52a3fdda2de5fa2c annotations_trainval2017.zip
#cced6f7f71b7629ddf16f17bbcfab6b2 train2017.zip
#442b8da7639aecaf257c1dceb8ba8c80 val2017.zip
#2d2b9d2283adb5e3b8d25eec88e65064 coco_annotations_minival.tgz
popd
啟動鏡像
nvidia-docker run -v /root/worktable/:/workspace -t -i --rm --ipc=host mlperf/object_detection "cd mlperf/training/object_detection && ./run_and_time.sh"
在鏡像中進入運行的目錄
cd mlperf/training/object_detection
先運行./install.sh
./install.sh
install.sh里的內容,調用了pytorch/setup.py,要去下載maskrcnn-benchmark,可以先下載下來放到pytorch底下
其中涉及聯網下載R-50.pkl,可以現在到本地,再把本地的R-50.pkl放到鏡像里的/root/.torch/models/底下
運行Benchmark
./run_and_time.sh
注意:如果單機多卡,則要更改./run_and_time.sh里的命令
查看自己電腦gpu信息
watch -d -n 1 nvidia-smi
pytorch單機多卡訓練的命令:
python -m torch.distributed.launch --nproc_per_node=你的GPU數量 YOUR_TRAINING_SCRIPT.py (--arg1 --arg2 --arg3 and all other arguments of your training script)
更改./run_and_time.sh為
watch -d -n 1 nvidia-smi可以看到自己的gpu都跑起來了