深度學習框架哪家強?國產框架OneFlow做了一份測評報告

2021-01-09 騰訊網

機器之心報導

機器之心編輯部

近日,國產深度學習框架 OneFlow 發布了人工智慧方向深度學習領域的 DLPerf 測評報告。

數據顯示,OneFlow 在 4 機 32 卡下的 ResNet50-v1.5 和 BERT-base 兩個模型中,無論是 Float32 類型還是自動混合精度,在同樣的算法和硬體條件下,吞吐率及加速比均優於其他深度學習框架。

OneFlow 是一流科技自主研發、擁有完全自主智慧財產權的深度學習框架軟體,是國內首個由初創團隊研發並開源的 AI 框架,今年 7 月 31 日正式開源。OneFlow 獨創的自動數據模型混合併行、靜態調度、去中心化和全鏈路異步流式執行四大核心技術,使用軟體技術解決大數據、大模型、大計算所帶來的異構集群分布式橫向擴展挑戰,獲得了廣泛的業內關注。

報告連結:https://github.com/Oneflow-Inc/DLPerf/blob/master/reports/dlperf_benchmark_test_report_v1_cn.md

此次測評是 OneFlow 開源百天後向廣大開發者交出的第一份「大型答卷」。對此,創始人袁進輝表示:「OneFlow 從研發之初就主打高效性,致力於解決大規模分布式 AI 訓練問題。這三個多月來,我們做了大量工作來增強穩定性、圖編譯和運行速度,在多機多卡場景下持續優化,以達到分布式最佳性能。」

參與本次測評的框架共有四款:OneFlow、TensorFlow 1.x & 2.x、PyTorch 和 MXNet。

除了數據對比,在本次測評報告中,OneFlow 還公布了對其他深度學習框架進行調優的過程,以保證測評報告公正、準確、可復現。在談到為何公布如此詳細的調優過程時,袁進輝說道:「首先,我們要保證這份測評報告是客觀、可復現的,這樣才能幫助到開發者的日常工作。隨著數據量級的增長,開發者對於深度學習框架如何激發硬體性能持續關注,我們希望這份報告可以給開發者在應用深度學習框架時提供必要的助力,並以此填補業界沒有在嚴格對齊算法和硬體配置的條件下科學測評分布式深度學習框架的空白。」

據機器之心了解,OneFlow 開源後收到了來自世界範圍內的廣泛關注,關注者包括來自谷歌、臉書、微軟、亞馬遜、阿里、字節跳動、騰訊、百度、商湯、曠視等企業的核心技術人員。開源一個多月後,接到多家頭部網際網路企業和人工智慧企業的使用意向。

下一步,OneFlow 將基於本次 DLPerf 測試報告,為開發者提供更多關於深度學習框架的系列課程、分享與論文,繼續支持企業與機構對深度學習框架的性能優化,提升深度學習框架在行業中的應用水平。

測評背景

這份報告比較了幾個深度學習框架在兩個經典的深度學習模型訓練任務上的吞吐率及分布式訓練任務上的加速比。測試均採用相同的數據集、相同的硬體環境和算法。

與其他的評測相比,這次評測有兩大特色:

1)強調分布式訓練任務的多機擴展性:與 NVIDIA DeepLearningExamples 相比,這次評測對比了多機擴展性,而 NVIDIA 的訓練任務僅測試了單機情況。

2)僅測試框架本身的性能差異:與 DAWNBench 相比,這次評測在相同的物理環境下,做了嚴格的算法對齊工作,讓各個框架使用相同的硬體和相同的算法腳本比較吞吐率,僅評測各個框架在系統實現方面的性能表現。而 DAWNBench 對算法要求不限,僅對比收斂到相同精度所使用的時間,所以會把算法改進和系統改進混在一起進行整體比較。

本次評測選擇了兩個經典主流的深度學習模型 ResNet-50 v1.5 和 BERT-Base。測試環境共有 4 臺機器,每臺機器配置了 8 張 V100 GPU 顯卡(每臺機器配置與 NVIDA DGX-1 接近)。對於每個框架的每一次性能測試,他們都至少測試了 1 機 1 卡、1 機 8 卡、2 機 16 卡、4 機 32 卡這幾種情況。

針對每個框架的每個模型,評測者都測試了其分布式環境下的吞吐率,包含不同的 batch size、是否經過 XLA 優化加速、是否使用自動混合精度訓練。最後,他們選取了吞吐率(throughput)和加速比(speedup)作為評測指標

ResNet-50 v1.5 性能測試結果

參與 ResNet-50 v1.5 評測的框架、版本、模型庫,以及額外特性如表 4-1 所示:

在 FP32 batch size = 128 時各框架的吞吐率如下所示:

從中可以看出,無論是何種情況( 1 機 1 卡、1 機 8 卡、2 機 16 卡、4 機 32 卡),OneFlow 在 ResNet50-v1.5 模型上的吞吐率均高於其他框架。而且,隨著硬體數量的增加,這種優勢變得越來越明顯。

下圖展示了 7 個框架實現在 ResNet50-v1.5 模型上(FP32 batch size = 128)的加速比對比情況:

從中可以看出,在其他條件都相同的情況下,OneFlow 是最接近理想加速比的框架。

除了 Float32,評測者還測試了自動混合精度下各個框架的表現。

註:其中 NGC TensorFlow 1.x 的 batch size = 224,因為 batch size = 256 會遇到 OOM(out of memory)。

從表 4-3 和圖 4-3 中可以看出,無論是何種情況( 1 機 1 卡、1 機 8 卡、2 機 16 卡、4 機 32 卡),在自動混合精度下,OneFlow 在 ResNet50-v1.5 模型上的吞吐率均高於其他框架。而且,隨著硬體數量的增加,這種優勢變得越來越明顯。

下圖展示了 8 個框架實現在 ResNet50-v1.5 模型上(AMP batch size = 256)的加速比對比情況:

圖 4-4 8 個框架實現在 ResNet50-v1.5 模型上(AMP batch size = 256)的加速比對比。

BERT-base pretrain 性能測試結果

參與 BERT-base pretrain 評測的框架、版本、模型庫,以及額外特性如表 5-1 所示:

在 FP32 batch size = 32 時各框架的吞吐率如下所示:

和在 ResNet50-v1.5 模型上的表現類似,無論是何種情況( 1 機 1 卡、1 機 8 卡、2 機 16 卡、4 機 32 卡),OneFlow 在 BERT-base pretrain 模型上的吞吐率均高於其他框架。而且,隨著硬體數量的增加,這種優勢變得越來越明顯。

下圖展示了 4 個框架實現在 BERT-base 模型上(FP32 batch size = 32)的加速比對比情況:

此外,在 FP32 batch size = max、FP32 batch size = 64 的情況下,OneFlow 在 BERT-base pretrain 模型上也展現出了類似的性能

除了 Float32,評測者還測試了自動混合精度下各個框架的表現。

從上圖可以看出,無論是何種情況( 1 機 1 卡、1 機 8 卡、2 機 16 卡、4 機 32 卡),在自動混合精度下,OneFlow 在 BERT-base 模型上的吞吐率均高於其他框架。而且,隨著硬體數量的增加,這種優勢變得越來越明顯。

下圖展示了 4 個框架實現在 BERT-base 模型上(AMP batch size = max)的加速比對比情況:

測評總結

根據上述性能測試結果,評測者得出結論:在 ResNet50 和 BERT-base 兩個模型中,無論是 Float32 類型還是自動混合精度,OneFlow 的性能表現都優於其他各個框架。

在復現各個框架的性能評測過程中,評測者對比了 OneFlow 框架和其他框架的性能差異以及復現難易程度,總結了一些優缺點。

其他框架的常見缺陷

在評測過程中,評測者發現:

很多框架的數據讀取 pipeline 性能存在瓶頸,尤其是 CNN 網絡的 AMP 訓練,常常依賴 DALI 才能達到理想的性能結果。

在多卡訓練時,其他官方框架和官方提供的模型腳本的默認配置一般跑不出最好的吞吐率,經常需要修改數據讀取的參數(如 PyTorch 的 worker 數量)並測試多次才能找到最佳的配置參數。

有些框架的分布式性能表現不如 Horovod。

很多框架和模型腳本實現的分布式訓練易用性不夠好,常常需要測試工程師進行額外的踩坑和腳本修復、第三方依賴安裝才能完成分布式訓練,有些框架的官方腳本只支持單機,多機即使經過調試、修改代碼也難以運行成功。

OneFlow 的優勢

評測者還總結了 OneFlow 的優勢:

OneFlow 分布式訓練非常易用。

OneFlow 不需要依賴 DALI 和 Horovod 就可以實現優秀的分布式訓練性能。

OneFlow 多卡訓練不需要調試參數,就可以在各種情況下達到最快。

除評測過程、結果等信息以外,該報告還總結了各個框架性能評測復現的踩坑經驗,更多內容參見原報告。

相關焦點

  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    選自builtin作者:Vihar Kurama機器之心編譯參與:吳攀、杜偉谷歌的 Tensorflow 與 Facebook 的 PyTorch 一直是頗受社區歡迎的兩種深度學習框架。那麼究竟哪種框架最適宜自己手邊的深度學習項目呢?本文作者從這兩種框架各自的功能效果、優缺點以及安裝、版本更新等諸多方面給出了自己的建議。如果你在讀這篇文章,那麼你可能已經開始了自己的深度學習之旅。如果你對這一領域還不是很熟悉,那麼簡單來說,深度學習使用了「人工神經網絡」,這是一種類似大腦的特殊架構,這個領域的發展目標是開發出能解決真實世界問題的類人計算機。
  • 對比深度學習十大框架:TensorFlow 並非最好?
    為什麼要做這一個盤點呢?他寫道:「我常聽到人們談論深度學習——我該從哪裡開始呢?TensorFlow 是現在最流行的吧?我聽說 Caffe 很常用,但會不會太難了?在 BEEVA Labs,我們常常需要應對許多不同的深度學習庫,所以我希望能夠將我們的發現和感想分享出來,幫助那些剛剛進入深度學習這一美麗世界的人。」
  • 深度| 對比深度學習十大框架:TensorFlow最流行但並不是最好
    選自Medium機器之心編譯參與:吳攀、朱思穎、李亞洲2016 年已經過去,BEEVA Labs 數據分析師 Ricardo Guerrero Gomez-Ol 近日在 Medium 上發表了一篇文章,盤點了目前最流行的深度學習框架。為什麼要做這一個盤點呢?他寫道:「我常聽到人們談論深度學習——我該從哪裡開始呢?TensorFlow 是現在最流行的吧?
  • 基於tensorflow框架對手寫字體MNIST數據集的識別
    本文我們利用python語言,通過tensorflow框架對手寫字體MNIST資料庫進行識別。學習每一門語言都有一個「Hello World」程序,而對數字手寫體資料庫MNIST的識別就是深度學習的「Hello World」代碼。下面我們給出詳細的步驟。tensorflow概述tensorflow是用C++語言實現的一個深度學習模塊。
  • 從框架優缺點說起,這是一份TensorFlow入門極簡教程
    隨著 TensorFLow 在研究及產品中的應用日益廣泛,很多開發者及研究者都希望能深入學習這一深度學習框架。而在昨天機器之心發起的框架投票中,2144 位參與者中有 1441 位都在使用 TensorFlow 框架,是所有框架中使用率最高的。但 TensorFLow 這種靜態計算圖有一定的學習成本,因此也阻擋了很多初學者入坑。
  • 超越PyTorch 和 TensorFlow,這個國產框架有點東西
    在這樣資源主導、肉食者謀的競爭環境下 ,一家國產深度學習框架的創業公司 OneFlow 出現了。它以處理大規模模型見長,甚至今年將全部源碼和實驗對比數據,在 GitHub 進行了開源。質疑不可避免的出現了:OneFlow 這種擅長解決大模型訓練的新架構有必要嗎?深度學習框架的效率有那麼重要嗎?創業公司有可能在競爭中脫穎而出麼?
  • 【我不再使用TensorFlow的5大原因】谷歌最受歡迎深度學習框架日漸...
    上線不到兩年便成為Github最受歡迎深度學習項目,谷歌開源深度學習框架TensorFlow,有人愛它,有人恨他,本文摘選了一些研究人員和開發者使用TF的感受——TensorFlow竟然這麼難用?歡迎留下評論,分享你的使用經驗。
  • TensorFlow vs PyTorch:哪個是深度學習網絡編程的最佳框架呢?
    import tensorflow as tf而對於PyTorch來說,需要的兩個庫為:import torchimport torchvisionb)加載和預處理數據使用TensorFlow加載和準備數據可以通過以下兩行代碼完成:在PyTorch中是這樣的:我們可以使用matplotlib.pyplot庫驗證這兩段代碼是否已經正確加載了相同數據
  • TensorFlow和Caffe、MXNet、Keras等其他深度學習框架的對比
    僅在數據挖據工具鏈上,Python 就有 NumPy、SciPy、Pandas、Scikit-learn、XGBoost 等組件,做數據採集和預處理都非常方便,並且之後的模型訓練階段可以和 TensorFlow 等基於 Python 的深度學習框架完美銜接。
  • 在Windows中安裝Tensorflow和Kears深度學習框架
    建立Tensorflow的Anaconda虛擬環境在一臺計算機中,我們常常需要安裝很多軟體,但是每個軟體所需要的Python的關聯模塊或版本不相同。例如,我們要使用Python開發開發網站系統,安裝的網站框架可能需要Python2.X的版本,但是安裝Tensorflow需要Python3.5的版本,此時就會發生版本不一致的問題。
  • 深度學習——你需要了解的八大開源框架
    深度學習八大開源框架導讀:深度學習(Deep Learning)是機器學習中一種基於對數據進行表徵學習的方法,深度學習的好處是用非監督式或半監督式的特徵學習、分層特徵提取高效算法來替代手工獲取特徵作為當下最熱門的話題,Google、Facebook、Microsoft等巨頭都圍繞深度學習重點投資了一系列新興項目,他們也一直在支持一些開源深度學習框架。
  • 微軟打造深度學習開源框架「自動翻譯機」:不同框架輕鬆切換
    【新智元導讀】微軟Cortana智能和機器學習小組的數據科學家最新在Giuhub開源項目,對各個深度學習框架進行了基準測試,提供了很多有參考價值的數據以及GPU優化代碼。眾多的深度學習框架,就像世界上各種不同的語言一樣,但是,不會「外語」並不可怕,他們希望構建一個深度學習框架的羅塞塔石碑,讓開發人員和研究者能在這個眾多框架並存的環境中,好好生存。
  • TensorFlow發布JavaScript開發者的機器學習框架TensorFlow.js
    去年的 TensorFlow 開發者大會上,該框架正式升級到了 1.0 版本,逐漸成為最流行的深度學習框架。今年,TensorFlow 發布了面向 JavaScript 開發者的全新機器學習框架 TensorFlow.js。
  • 深度學習框架Theano 宣布完成歷史使命,即將退役
    雷鋒網AI科技評論按:作為七大深度學習框架之一的Theano在今天宣布即將不再更新,這也就意味著它將退出深度學習框架的競爭行列。在今天凌晨一點左右,Yoshua Bengio教授的一封郵件被貼了出來:Yoshua Bengio教授是深度學習領域大神之一。
  • 11種深度學習框架影響力對比
    編者按:Jeff Hale根據網上招聘、調研報告、網絡搜索、論文、教程、GitHub等數據,評估了11種深度學習框架的影響力。 現在數據科學領域最熱門的方向仍舊是深度學習。相應地,深度學習框架也處於飛速變革之中。現在最流行的框架,除Theano外,5年前都不存在。
  • Github 項目推薦 | 微軟開源 MMdnn,模型可在多深度學習框架間轉換
    雷鋒網 AI 研習社按:近期,微軟開源了 MMdnn,這是一套能讓用戶在不同深度學習框架間做相互操作的工具比如,模型的轉換和可視化,並且可以讓模型在 Caffe、Keras、MXNet、Tensorflow、CNTK、PyTorch 和 CoreML 之間轉換。
  • TensorFlow、PyTorch 之後,「國產」AI 框架還有沒有機會?
    如果讓我看有什麼重要問題,我覺得不在平臺,原動力還是在模型、在數學上面,這也是我詬病現在所有深度學習框架的一個通病,以為學習了Python、學習了某一種框架就懂了深度學習,這其實是非常差的,它最後的動力在數學。也正是因為這個原因,我們在做另外一個框架,現在還不能說。
  • 迎來PyTorch,告別 Theano,2017 深度學習框架發展大盤點
    深度學習是機器學習中一種基於對數據進行表徵學習的方法,作為當下最熱門的話題,谷歌、Facebook、微軟等巨頭紛紛圍繞深度學習做了一系列研究,一直在支持開源深度學習框架的建設。過去一年間,在這些巨頭的加持下,深度學習框架格局發生了極大改變:新框架橫空出世,舊的框架也逐漸退出歷史舞臺,而框架與框架之間的聯繫也更加緊密,生態更為開放。
  • 技術分享|輕鬆進行深度學習的11種Python庫和框架
    數據觀世界深度學習是目前人工智慧領域的核心技術之一,為了更方便地開發基於深度學習的方法以及推進深度學習技術的進步,多個世界頂級的技術團隊為深度學習開發了框架,其中大部分都是開源的並且提供了針對Python語言的開發包,無論是對於Python還是深度學習這都是一件極好的事情,我們總結了11種開源框架的Python包,在這裡給大家做一下簡單地介紹。
  • 一行代碼切換TensorFlow與PyTorch,模型訓練也能用倆框架
    如果我們想要在自己的項目中調用某個開源模型,那麼它們最好都使用相同的框架,不同框架間的對接會帶來各種問題。當然要是不怕麻煩,也可以用不同的框架重寫一遍。以前 TensorFlow 和 PyTorch 經常會用來對比,討論哪個才是更好的深度學習框架。但是它們之間就不能友好相處麼,模型在兩者之間的相互遷移應該能帶來更多的便利。