Skip to main content
NetApp Solutions
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

測試程序與詳細結果

貢獻者

本節說明詳細的測試程序結果。

利用ResNet進行影像辨識訓練ONTAP 、以利執行

我們以一部和兩部SR670 V2伺服器執行ResNet50基準測試。本測試使用MXNet 22.04-py3 NGC容器來執行訓練。

我們在此驗證中使用下列測試程序:

  1. 在執行指令碼之前、我們先清除主機快取、以確保資料尚未快取:

    sync ; sudo /sbin/sysctl vm.drop_caches=3
  2. 我們在伺服器儲存設備(本機SSD儲存設備)和NetApp AFF RSIFStorage系統中執行ImageNet資料集的基準測試指令碼。

  3. 我們使用驗證了網路和本機儲存效能 dd 命令。

  4. 針對單節點執行、我們使用下列命令:

    python train_imagenet.py --gpus 0,1,2,3,4,5,6,7 --batch-size 408 --kv-store horovod --lr 10.5 --mom 0.9 --lr-step-epochs pow2 --lars-eta 0.001 --label-smoothing 0.1 --wd 5.0e-05 --warmup-epochs 2 --eval-period 4 --eval-offset 2 --optimizer sgdwfastlars --network resnet-v1b-stats-fl --num-layers 50 --num-epochs 37 --accuracy-threshold 0.759 --seed 27081 --dtype float16 --disp-batches 20 --image-shape 4,224,224 --fuse-bn-relu 1 --fuse-bn-add-relu 1 --bn-group 1 --min-random-area 0.05 --max-random-area 1.0 --conv-algo 1 --force-tensor-core 1 --input-layout NHWC --conv-layout NHWC --batchnorm-layout NHWC --pooling-layout NHWC --batchnorm-mom 0.9 --batchnorm-eps 1e-5 --data-train /data/train.rec --data-train-idx /data/train.idx --data-val /data/val.rec --data-val-idx /data/val.idx --dali-dont-use-mmap 0 --dali-hw-decoder-load 0 --dali-prefetch-queue 5 --dali-nvjpeg-memory-padding 256 --input-batch-multiplier 1 --dali- threads 6 --dali-cache-size 0 --dali-roi-decode 1 --dali-preallocate-width 5980 --dali-preallocate-height 6430 --dali-tmp-buffer-hint 355568328 --dali-decoder-buffer-hint 1315942 --dali-crop-buffer-hint 165581 --dali-normalize-buffer-hint 441549 --profile 0 --e2e-cuda-graphs 0 --use-dali
  5. 對於分散式執行、我們使用了參數伺服器的平行化模式。我們在每個節點使用兩個參數伺服器、並將epochs的數目設定為與單一節點執行相同。我們之所以這麼做、是因為分散式訓練通常需要更長的時間、因為程序之間的同步不完善。不同次數的epochs可能會扭曲單一節點與分散式個案之間的比較。

資料讀取速度:本機與網路儲存設備

讀取速度是使用測試的 dd 對ImageNet資料集的其中一個檔案執行命令。具體而言、我們針對本機和網路資料執行了下列命令:

sync ; sudo /sbin/sysctl vm.drop_caches=3dd if=/a400-100g/netapp-ra/resnet/data/preprocessed_data/train.rec of=/dev/null bs=512k count=2048Results (average of 5 runs):
Local storage: 1.7 GB/s Network storage: 1.5 GB/s.

這兩種價值都很相似、這表示網路儲存設備能夠以類似本機儲存設備的速度來提供資料。

共享使用案例:多個獨立的同步工作

本測試模擬此解決方案的預期使用案例:多工作業、多使用者AI訓練。每個節點在使用共享網路儲存設備時、都會執行自己的訓練。結果顯示在下圖中、這表示解決方案案例在所有工作執行速度與個別工作基本相同的情況下、都能提供優異的效能。總處理量會隨著節點數量線性調整。

此圖顯示每秒的Aggregate映像數。

這個圖示會以幾分鐘為單位顯示執行時間。

這些圖表以分鐘為單位顯示執行時間、並針對每部伺服器在100 GbE用戶端網路上使用八個GPU的運算節點、以每秒彙總映像數、同時結合並行訓練模式和單一訓練模式。訓練模式的平均執行時間為35分鐘9秒。個別執行時間為34分32秒、36分21秒、34分37秒、35分25秒、34分31秒。訓練模式的平均每秒影像數為2、573、每秒個別影像數為2、764、23、438、2、556、2、564和2、547。

根據我們的驗證結果、採用NetApp資料執行時間的獨立訓練模式為34分鐘54秒、影像數為22、231秒一個獨立的訓練模式、搭配本機資料(DAS)執行時間為34分21秒、影像數為22、102個/秒在這些執行期間、NVIDIA公司的GPU平均使用率為96%。請注意、此平均值包括測試階段、在此期間未使用GPU、而以mpstat測量的CPU使用率為40%。這表示每種情況下的資料傳輸率都已足夠。