[測試]3700xRadeonVII9900K2080Ti實驗室深度學習

看板PC_Shopping作者時間4年前 (2020/05/08 18:57), 4年前編輯推噓14(1406)
留言20則, 13人參與, 4年前最新討論串1/1
重要的事先說在前 別真的買AMD顯卡來跑DL 使用Radeon VII跑tensorflow與pytorch純粹測試 購買Radeon VII的正確理由應該是 有OpenCL的程式要執行 且需要雙精度算力 而不需要ECC 又買不起計算卡(P100 V100) 這時才考慮收一張Radeon VII來應付 === 做實驗要有對照 因此使用同為8C16T的9900K作為3700X的對手 但不是專業評測媒體 沒有很多備品與時間 很難做到完全公平測試 只能盡量說明細節 讀者可自行判斷結果 測試目標是在盡量預設(官方Turbo)的條件下 用一些比較簡單的小程式 嘗試反應跑運算的能力(ML DL) 所有結果僅供參考 在windows上也能跑出類似的數據 有相同配備的人可以試著重現實驗結果 === 測試硬體 AMD Ryzen 7 3700X Wraith Prism (H mode) ASUS TUF GAMING X570-PLUS 4x Kingston KVR32N22D8/16 HIS Radeon VII XPG SX8200Pro 1TB 全漢 聖武士 650W 視博通 聖鬥神 PRO Intel Core i9-9900K Thermalright Silver Arrow IB-E Extreme GIGABYTE Z390 AORUS ELITE 4x KLEVV KD4AGU88C-26N190A GIGABYTE RTX 2080 Ti Turbo XPG SX8200Pro 1TB 全漢 聖武士 650W 全漢 CMT240(B) 炫鬥士 (黑) 另外加測同一張2080ti插到3700x那台上 === BIOS版本與設定 TUF GAMING X570 PLUS 1405 PBO manual Package Power Tracking(PPT) 1000W Thermal Design Current(TDC) 1000A Electrical Design Current(EDC) 1000A 其餘預設 DDR4-3200 (22-22-22) 1.2V Z390 AORUS ELITE F8 Package Power Limit 1 4090W Package Power Limit Time 1 127s Package Power Limit 2 4090W Package Power Limit Time 2 127s Platform Power Limit 1 4090W Platform Power Limit Time 1 127s Platform Power Limit 2 4090W Power Limit 3 4090W Power Limit 3 Time 127s Core Current Limit 255A 其餘預設 DDR4-2666 (19-19-19) 1.2V (早期的科賦原生記憶體是有xmp的 開了時序會收緊 但這批比較後期 xmp profile時序是一樣的 開xmp就只是電壓變1.35V CPU更耗電) 另外使用 nvidia-smi -pm 1 nvidia-smi -pl 280 解除2080ti到280W OS Ubuntu Server 20.04 LTS kernel 5.4.0-26 ROCm driver 5.4.8 CUDA driver 440.64 頻率溫度功耗 數字皆為約略 詳細可看錄影 3700x sensors讀取溫度 turbostat讀取頻率瓦數 Radeon VII rocm-smi讀取溫度頻率瓦數 9900k turbostat讀取溫度頻率瓦數 2080ti nvidia-smi讀取溫度頻率瓦數 待機 3700x+Radeon VII CPU 2100MHz 36度C 13W GPU 808MHz 36度C 18W 延長線 52W 3700x+2080ti CPU 2100MHz 36度C 13W GPU 300MHz 31度C 6W 延長線 46W 9900k+2080ti CPU 800MHz 28度C 8W GPU 300MHz 29度C 5W 延長線 38W Prime95 Version 29.8 build 6 Small FFTs(L1/L2/L3) FMA3(AVX2) 3700x 1秒 CPU 3978MHz 81.5度C 143W 延長線 210W 1分鐘 CPU 3911MHz 87.1度C 133W 延長線 197W https://youtu.be/FsxKta8cYQs
9900k 1秒 CPU 4700MHz 87度C 222W 延長線 314W 1分鐘 CPU 4532MHz 100度C 216W 延長線 290W https://youtu.be/1SJ_f3upgEc
(linux的行為與windows不同 使用sudo service thermald stop 避免一撞溫度牆就降到base) (實驗室5顆9900k 1顆在ASUS PRIME Z390-A上解除電流限制(192A)會自動關機 估計是VRM不夠力 另外4顆在GIGABYTE Z390 AORUS ELITE上 有1顆預設電壓較低 可90度上下全核4.7 其他3顆都只能100度全核4.5 也無法降電壓 就算只-0.05V p95一樣無法過 只能說是體質問題 下面的效能測試是全核4.5GHz這粒CPU的結果) tensorflow resnet50 training fp16 batch128 3700x+Radeon VII 1分鐘 GPU 1801MHz 105度C 273W 延長線 381W https://youtu.be/xBZvnZ0Gtk0
3700x+2080ti 1秒 GPU 1905MHz 40度C 254W 延長線 351W 1分鐘 GPU 1845MHz 70度C 273W 延長線 366W https://youtu.be/7dURoFo-TyY
9900k+2080ti 1秒 GPU 1920MHz 39度C 254W 延長線 358W 1分鐘 GPU 1830MHz 69度C 279W 延長線 336W https://youtu.be/y3jh_HDrJ-g
(真正跑數小時到數天的運算 基本上是穩定1545MHz 84度C) p95+tensorflow 3700x+Radeon VII CPU 125W GPU 302W 延長線 505W https://youtu.be/vXGoWQZyf5M
3700x+2080ti CPU 129W GPU 279W 延長線 490W https://youtu.be/EjuvHMI8pQE
9900k+2080ti CPU 228W GPU 270W 延長線 618W https://youtu.be/eVz76K0rsdE
由於現在CPU GPU都有boost 跑出來結果會飄 大概前幾位數比較一下趨勢就好 沒有重複很多次或固定溫度 不要太認真比較小數點後幾位 CPU理論效能測試 使用https://github.com/Mysticial/Flops 86d412c (這結果會與AIDA64 GPGPU效能測試中的CPU結果相似) version3/binaries-linux下 ./2006-Core2 //使用SSE2 模擬 一般/普通/傳統/上古遺跡 應用程式 ./2013-Haswell //使用AVX/FMA3 模擬 高度最佳化的現代應用程式 (3700x執行./2017-Zen不會有明顯差別) | 128-bit SSE2 | 256-bit AVX | 256-bit FMA3 | Multiply + Add | Multiply + Add | Fused Multiply Add | 1T | 16T | 1T | 16T | 1T | 16T 3700x | 42.432 | 521.184 | 82.176 | 992.256 | 136.896 | 1044.1 9900k | 39.072 | 301.008 | 79.968 | 602.016 | 159.552 | 1204.22 單位: GFlops 以上是單精度 zen2已經解決zen1 256bit浮點半速問題 zen2與skylake的架構分析文 網路上很多 兩家的解碼執行策略不同 導致這個結果 CPU計算效能測試 使用intel的測試script 基本反應numpy scipy sklearn效能 同時也可以知道像MATLAB與其他用到BLAS、LAPACK的程式會是什麼狀況 python使用Anaconda3-2020.02 內建numpy使用Intel MKL 另外比較numpy使用conda提供的OpenBLAS pip的OpenBLAS 與自編譯BLIS+libFLAME有沒有機會贏MKL === ###主程式 git clone --no-checkout https://github.com/IntelPython/ibench.git cd ibench git checkout d2a81d04352427437e6e383654cfbd36e99c5ae9 python -m ibench run -b all --size small --runs 3 --file result.json ###強制MKL使用AVX2 export MKL_DEBUG_CPU_TYPE=5 ###切換OpenBLAS (註: 若用pip install numpy安裝pypi版也會是openblas) conda remove mkl numpy scipy scikit-learn numexpr conda install nomkl numpy scipy scikit-learn numexpr export OPENBLAS_NUM_THREADS=8 // numpy==1.18.1 scipy==1.4.1 ###BLIS+libFLAME conda remove nomkl numpy scipy scikit-learn numexpr sudo apt install gfortran git clone https://github.com/flame/blis.git -b 0.7.0 cd blis ./configure --enable-cblas --enable-threading=openmp x86_64 make -j $(nproc) sudo make install cd .. git clone https://github.com/flame/libflame.git -b 5.2.0 cd libflame ./configure --enable-dynamic-build \ --enable-lapack2flame \ --enable-multithreading=openmp \ --enable-supermatrix \ --enable-max-arg-list-hack make -j $(nproc) sudo make install cd .. git clone https://github.com/numpy/numpy.git -b v1.17.2 cd numpy #### create site.cfg [blis] libraries = blis library_dirs = /usr/local/lib include_dirs = /usr/local/include/blis runtime_library_dirs = /usr/local/lib [flame] libraries = flame library_dirs = /usr/local/lib runtime_library_dirs = /usr/local/lib #### NPY_BLAS_ORDER=blis NPY_LAPACK_ORDER=flame python setup.py bdist_wheel pip install dist/numpy-1.17.2-cp37-cp37m-linux_x86_64.whl cd .. git clone https://github.com/scipy/scipy.git -b v1.1.0 cd scipy cp ../numpy/site.cfg . NPY_BLAS_ORDER=blis NPY_LAPACK_ORDER=flame python setup.py bdist_wheel pip install dist/scipy-1.1.0-cp37-cp37m-linux_x86_64.whl export BLIS_NUM_THREADS=8 === |Cholesky|Det |Dot |Fft |Inv |Lu |Qr |Svd 9900k mkl | 351.32|456.52|497.80|5.73|337.58|409.80|262.10|6.49 pip | 399.44|444.85|486.18|4.97|295.99|409.00|103.18|6.19 3700x mkl | 334.89|393.53|382.96|5.26|249.74|353.86|234.54|8.06 debug mkl | 403.91|427.24|444.15|6.32|357.66|384.55|275.21|8.92 nomkl | 288.64|331.38|329.63|5.24|252.08|309.60|110.13|6.10 pip | 363.68|418.34|428.93|5.06|309.44|391.73|118.28|6.35 BLIS+FLAME | 342.64|298.42|413.02|7.14|227.18|283.95|116.60|0.75 單位: GFlops IO測試 使用fio 參數比照CrystalDiskMark 7 fio --loops=5 --size=1g --runtime=5 \ --time_based=1 --stonewall --direct=1 --group_reporting \ --name=SeqQ8T1read --bs=1048576 --iodepth=8 --rw=read \ --name=SeqQ8T1write --bs=1048576 --iodepth=8 --rw=write \ --name=SeqQ1T1read --bs=1048576 --iodepth=1 --rw=read \ --name=SeqQ1T1write --bs=1048576 --iodepth=1 --rw=write \ --name=4kQ32T16read --bs=4096 --iodepth=32 --numjobs=16 --rw=randread \ --name=4kQ32T16write --bs=4096 --iodepth=32 --numjobs=16 --rw=randwrite \ --name=4kQ1T1read --bs=4096 --iodepth=1 --rw=randread \ --name=4kQ1T1write --bs=4096 --iodepth=1 --rw=randwrite |3700x |9900k 1MSeqQ8T1r|2785MB/s |2781MB/s 1MSeqQ8T1w|2845MB/s |1824MB/s 1MSeqQ1T1r|2793MB/s |2858MB/s 1MSeqQ1T1w|2818MB/s |1757MB/s 4kQ32T16r | 697MB/s(170k) | 657MB/s(160k) 4kQ32T16w |1497MB/s(365k) |1390MB/s(339k) 4kQ1T1r |80.0MB/s(19.5k) |61.2MB/s(14.9k) 4kQ1T1w | 239MB/s(58.3k) | 324MB/s(79.2k) (可能原因有 3700x直連cpu 9900k是pch 9900k是使用一陣子的舊ssd 但執行fstrim後速度差不多 沒有提升 若套用https://make-linux-fast-again.com會變快 但寫入還是一段差距 或者被換料了? 我沒有檢查顆粒是否相同) Tensorflow測試 使用官方benchmark resnet50 Radeon VII的docker image為rocm/tensorflow:rocm3.1-tf2.1-python3 2080ti為nvcr.io/nvidia/tensorflow:20.02-tf2-py3 === https://github.com/tensorflow/benchmarks aef6daa python scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py \ --data_format=NHWC --batch_size=64 --num_batches=100 \ --model=resnet50 --optimizer=sgd --variable_update=replicated \ --use_fp16=False --distortions=False --local_parameter_device=gpu \ --num_gpus=1 --display_every=10 === resnet50 |fp32batch64|fp32batch128|fp16batch64|fp16batch128|fp16batch256 3700x 鐳7 | 282.96 | 292.60 | 390.69 | 423.17 | 443.81 3700x 2080ti | 313.08 | 298.43 | 717.52 | 778.22 | 723.40 9900k 2080ti | 306.34 | 294.64 | 696.98 | 752.51 | 706.08 單位images/sec Pytorch 與 混精度AMP(Apex) 測試 使用Transformers 2.8.0 BERT 取第三個epoch的時間 Radeon VII的docker image為rocm/pytorch:rocm3.3_ubuntu16.04_py3.6_pytorch 2080ti為nvcr.io/nvidia/pytorch:20.02-py3 === sudo apt install cabextract wget https://download.microsoft.com/download/D/4/6/ D46FF87A-F6B9-4252-AA8B-3604ED519838/MSRParaphraseCorpus.msi mkdir MRPC cabextract MSRParaphraseCorpus.msi -d MRPC cat MRPC/_2DEC3DBE877E4DB192D17C0256E90F1D | tr -d $'\r' > MRPC/msr_paraphrase_train.txt cat MRPC/_D7B391F9EAFF4B1B8BCE8F21B20B1B61 | tr -d $'\r' > MRPC/msr_paraphrase_test.txt rm MRPC/_* rm MSRParaphraseCorpus.msi wget https://gist.githubusercontent.com/W4ngatang/ 60c2bdb54d156a41194446737ce03e2e/raw/ 17b8dd0d724281ed7c3b2aeeda662b92809aadd5/download_glue_data.py python download_glue_data.py --path_to_mrpc MRPC git clone https://github.com/huggingface/transformers.git -b v2.8.0 cd transformers pip install . pip install -r ./examples/requirements.txt export GLUE_DIR=../glue_data export TASK_NAME=MRPC python ./examples/run_glue.py \ --model_type bert \ --model_name_or_path bert-base-uncased \ --task_name $TASK_NAME \ --do_train \ --do_eval \ --do_lower_case \ --data_dir $GLUE_DIR/$TASK_NAME \ --max_seq_length 128 \ --per_gpu_eval_batch_size=8 \ --per_gpu_train_batch_size=8 \ --learning_rate 2e-5 \ --num_train_epochs 3.0 \ --output_dir /tmp/$TASK_NAME/ \ --fp16 === bert | fp32| fp16| 3700x RadeonVII |00:52.9|01:56.8| 3700x 2080ti |00:38.6|00:30.6| 9900k 2080ti |00:38.5|00:31.8| 單位為時間秒 Pytorch的混精度套件Apex是nvidia的 用在Radeon上因某些功能需要nvcc所以不能用 相容性也不好 從結果得知開了更慢 Radeon顯卡跑DL 若手上已有RX 400/500 8GB 時間很多的話可以折騰玩玩看 ML套件有支援OpenCL (像LightGBM) 也可以加速 但該買NVIDIA還是得買 這沒辦法 3600x/3700x/9600K(F)/9700K(F) 這幾顆就看預算與需求下去考量 要省錢就3600x/3700x intel還要加散熱器 (原廠散熱只保證base) 但若不需要GPU AMD也是要加亮機卡 只要內顯 換不了openblas 需要用到多核MKL的保守派 選intel (畢竟無法保證intel會不會某天就把MKL_DEBUG_CPU_TYPE給砍了 速度慢就算了 相容性是一個問題 要是程式完全無法執行會很頭痛) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.16.145 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1588935446.A.CAF.html

05/08 18:59, 4年前 , 1F
7nm的八核心跑輸14nm的八核心 笑死
05/08 18:59, 1F

05/08 19:03, 4年前 , 2F
樓上又要發作了?
05/08 19:03, 2F

05/08 19:11, 4年前 , 3F
已經發作了
05/08 19:11, 3F

05/08 19:12, 4年前 , 4F
整天一直在崩潰 笑死
05/08 19:12, 4F

05/08 19:13, 4年前 , 5F
推詳細測試
05/08 19:13, 5F

05/08 19:55, 4年前 , 6F
推測試分享
05/08 19:55, 6F

05/08 20:16, 4年前 , 7F
05/08 20:16, 7F

05/08 20:53, 4年前 , 8F
推所配的power,真正物有所值
05/08 20:53, 8F

05/08 21:53, 4年前 , 9F
感謝分享 非常有幫助
05/08 21:53, 9F

05/09 01:04, 4年前 , 10F
測試詳細 讚
05/09 01:04, 10F

05/09 01:20, 4年前 , 11F
推詳細測試
05/09 01:20, 11F

05/09 01:23, 4年前 , 12F
resnet50訓練那邊 radeon 105度? 是關了降頻嘛?
05/09 01:23, 12F

05/09 01:23, 4年前 , 13F
一直對他16GB ram感覺有興趣 但網路上資料好少 感謝
05/09 01:23, 13F

05/09 01:23, 4年前 , 14F
提供測試結果
05/09 01:23, 14F

05/09 01:33, 4年前 , 15F
另外 最後表格的鐳7那個是vii?
05/09 01:33, 15F
Radeon VII的溫度限制是110度 要頂到才會降頻 功耗測試那邊沒有特別調整風扇或溫度限制 鐳7就是RadeonVII ※ 編輯: fo40225 (36.229.220.214 臺灣), 05/09/2020 09:53:59

05/09 12:02, 4年前 , 16F
印象tf在batch norm好像會把fp16轉回fp32算再弄回去
05/09 12:02, 16F

05/09 12:02, 4年前 , 17F
fp16 如果都fp16 搞不好2080ti又更快 自用搞不好兩
05/09 12:02, 17F

05/09 12:02, 4年前 , 18F
張2070寫multi gpu還比RadeonVII好? 再次感謝測試
05/09 12:02, 18F

05/09 12:02, 4年前 , 19F
fp16這部分對我來說很重要XD
05/09 12:02, 19F

05/09 12:59, 4年前 , 20F
所以結論是3700x跟9900k跑起來差不多嗎0.0?
05/09 12:59, 20F
文章代碼(AID): #1UjJiMol (PC_Shopping)