微軟開源深度學習優化庫 DeepSpeed,可訓練 1000 億參數的模型

2020-12-17 開源中國

人工智慧的最新趨勢是,更大的自然語言模型可以提供更好的準確性,但是由於成本、時間和代碼集成的障礙,較大的模型難以訓練。微軟日前開源了一個深度學習優化庫 DeepSpeed,通過提高規模、速度、可用性並降低成本,可以在當前一代的 GPU 集群上訓練具有超過 1000 億個參數的深度學習模型,極大促進大型模型的訓練。同時,與最新技術相比,其系統性能可以提高 5 倍以上。

根據微軟的介紹,DeepSpeed 庫中有一個名為 ZeRO(零冗餘優化器,Zero Redundancy Optimizer)的組件,這是一種新的並行優化器,它可以大大減少模型和數據並行所需的資源,同時可以大量增加可訓練的參數數量。研究人員利用這些突破創建了圖靈自然語言生成模型(Turing-NLG),這是最大的公開語言模型,參數為 170 億。

ZeRO 作為 DeepSpeed 的一部分,是一種用於大規模分布式深度學習的新內存優化技術,它可以在當前的 GPU 集群上訓練具有 1000 億個參數的深度學習模型,其吞吐量是當前最佳系統的 3 到 5 倍。它還為訓練具有數萬億個參數的模型提供了一條清晰的思路。

ZeRO 具有三個主要的優化階段,分別對應於優化器狀態、​​梯度和參數分區。

ZeRO 克服了數據並行和模型並行的局限性,同時實現兩者的優點,它通過跨數據並行進程將模型狀態劃分為上圖所示的參數、梯度和優化器狀態分區,而不是複製它們,從而消除了數據並行進程之間的內存冗餘。在訓練期間使用動態通信規劃(dynamic communication schedule),在分布式設備之間共享必要的狀態,以保持數據並行的計算粒度和通信量。

目前實施了 ZeRO 的第一階段,即優化器狀態分區(簡稱 ZeRO-OS),具有支持 1000 億參數模型的強大能力,此階段與 DeepSpeed 一起發布。

DeepSpeed 與 PyTorch 兼容,DeepSpeed API 是在 PyTorch 上進行的輕量級封裝,這意味著開發者可以使用 PyTorch 中的一切,而無需學習新平臺。此外,DeepSpeed 管理著所有樣板化的 SOTA 訓練技術,例如分布式訓練、混合精度、梯度累積和檢查點,開發者可以專注於模型開發。同時,開發者僅需對 PyTorch 模型進行幾行代碼的更改,就可以利用 DeepSpeed 獨特的效率和效益優勢來提高速度和規模。

DeepSpeed 在以下四個方面都表現出色:

  • 規模:目前最先進的大型模型,例如 OpenAI GPT-2、NVIDIA Megatron-LM 和 Google T5,分別具有 15 億、83 億和 110 億個參數,而 DeepSpeed 的 ZeRO 第一階段提供系統支持,以運行多達 1000 億個參數的模型,這是比當前最先進的模型大 10 倍。未來計劃增加對 ZeRO 第二和第三階段的支持,從而提供高達 2000 億個乃至數萬億個參數的模型的能力。
  • 速度:在各種硬體上,目前觀察到的吞吐量比當前最先進技術高出 5 倍。例如,為了在 GPT 系列工作負載上訓練大型模型,DeepSpeed 將基於 ZeRO 的數據並行與 NVIDIA Megatron-LM 模型並行相結合,在具有低帶寬互連的 NVIDIA GPU 集群上(沒有 NVIDIA NVLink 或 Infiniband),與僅對具有 15 億參數的標準 GPT-2 模型使用 Megatron-LM 相比,DeepSpeed 將吞吐量提高了 3.75 倍。在具有高帶寬互連的 NVIDIA DGX-2 集群上,對於 20 至 800 億個參數的模型,速度要快 3 到 5 倍。這些吞吐量的提高來自 DeepSpeed 更高的內存效率以及使用較低程度的模型並行和較大的批處理量來擬合這些模型的能力。
  • 成本:提高吞吐量意味著大大降低訓練成本,例如,要訓練具有 200 億個參數的模型,DeepSpeed 需要的資源是原來的 3/4。
  • 易用性:只需更改幾行代碼即可使 PyTorch 模型使用 DeepSpeed 和 ZeRO。與當前的模型並行庫相比,DeepSpeed 不需要重新設計代碼或重構模型,它也沒有對模型尺寸、批處理大小或任何其它訓練參數加以限制。對於參數多達 60 億的模型,可以方便地使用由 ZeRO 提供的數據並行能力,而無需模型並行。而相比之下,對於參數超過 13 億的模型,標準數據並行將耗盡內存。ZeRO 第二和第三階段將進一步增加僅通過數據並行即可訓練的模型大小。此外,DeepSpeed 支持 ZeRO 支持的數據並行與模型並行的靈活組合。

更具體的介紹查看微軟的博客:

https://www.microsoft.com/en-us/research/blog/zero-deepspeed-new-system-optimizations-enable-training-models-with-over-100-billion-parameters

相關焦點

  • 微軟開源深度學習優化庫 DeepSpeed 連登 GitHub 趨勢榜!
    【編者按】近期,深度學習社區發生了一件大事:微軟研究院發布了圖靈自然語言生成模型T-NLG,據稱這是史上最大的自然語言處理模型。T-NLG擁有170億個參數,性能遠勝於其他大型深度學習語言模型,例如BERT和GPT-2。很難想像訓練如此大規模的模型需要多少計算量。
  • 微軟更新DeepSpeed 開源庫 讓模型訓練變得更普及
    今年2月時,微軟發布了名為DeepSpeed 開源庫,而近日微軟對這一開源庫進行了更新,附加的4項DeepSpeed技術能夠同時提高存儲器、吞吐量和網絡的運作效率。無論是在超級計算機上還是在單個GPU上,都能夠縮短訓練時間。
  • 谷歌,DeepMind,微軟和Uber大規模訓練深度學習模型框架簡介
    大規模訓練是在現實世界中構建深度學習解決方案最具挑戰性的方面之一。從訓練到優化,深度學習程序的生命周期需要健壯的基礎設施構建塊,以便能夠並行化和擴展計算工作負載。儘管深度學習框架正在快速發展,但相應的基礎架構模型仍處於初期階段。
  • 百度開源移動端深度學習框架mobile-deep-learning(MDL)
    2017 年 9 月 25 日,百度在 GitHub 開源了移動端深度學習框架 mobile-deep-learning(MDL)的全部代碼以及腳本,希望這個項目在社區的帶動下能夠更好地發展。寫在前面深度學習技術已經在網際網路的諸多方向產生影響,每天科技新聞中關於深度學習和神經網絡的討論越來越多。
  • Facebook開源差分隱私庫Opacus,可保護數據隱私且高效訓練Prytorch模型
    如何保護數據集隱私,是深度學習訓練必須要解決的問題之一。近日,Facebook開源了一個名為Opacus的高速庫,該庫可用於訓練具有差分隱私的PyTorch模型。在此之前,谷歌、微軟等也陸續開源了其核心產品使用的差分隱私庫。不同的是,與現有方法相比,Opacus具有可擴展性,支持大多數類型的PyTorch模型,並且只需對神經網絡進行最少的代碼更改。同時它允許客戶端實時監控任何給定時間花費的隱私預算(Privacy Budget,DP中的核心數學概念)。
  • 微軟申請DeepSpeed商標 考慮為雲服務提供深度學習優化庫
    微軟已經為深度學習優化庫 DeepSpeed 申請了商標保護。該商標於2020年12月8日提交,其中提到「為人工智慧處理和深度學習提供臨時使用的在線不可下載的計算機軟體」,這表明微軟可能在考慮通過在線雲服務提供 DeepSpeed。
  • 訓練模型讓你厭煩?莫慌,收下這篇深度學習模型超參數搜索指南
    乾明 整理編譯自 FloydHub Blog量子位 報導 | 公眾號 QbitAI在文章開始之前,我想問你一個問題:你已經厭倦了小心翼翼地照看你的深度學習模型嗎?如果是的話,那你就來對地方了。近日,FloydHub Blog發表了一篇文章,詳細討論了為深度學習模型尋找最佳超參數集的有效策略。
  • OpenCV+深度學習預訓練模型,簡單搞定圖像識別 | 教程
    而OpenCV最近一次版本更新,為我們帶來了更好的深度學習支持,在OpenCV中使用預訓練的深度學習模型變得非常容易。pyimagesearch網站今天發布了一份用OpenCV+深度學習預訓練模型做圖像識別的教程,量子位編譯整理如下:最近,OpenCV 3.3剛剛正式發布,對深度學習(dnn模塊)提供了更好的支持,dnn模塊目前支持Caffe、TensorFlow、Torch、PyTorch等深度學習框架。
  • AI 四巨頭 Google、DeepMind、Microsoft、Uber 深度學習框架大比拼
    正如俗語所說,你最大的優點可以成為你最大的缺點,這一點自然也適用於深度學習模型。整個深度學習空間在一定程度上取決於深度神經網絡(DNN)跨越GPU拓撲的能力。然而,同樣的擴展能力導致了計算密集型程序的創建,這給大多數組織帶來了操作上的挑戰。從訓練到優化,深度學習項目的生命周期需要健壯的基礎設施構建塊,以便能夠並行化和擴展計算工作負載。
  • 既保護隱私又快速訓練,Facebook開源Opacus庫,利用差分隱私訓練Py...
    那麼,如何方便地使用差分隱私來訓練機器學習模型呢?近日,Facebook 開源了 Opacus 庫,支持以這種方式訓練 PyTorch 模型。近日,Facebook 開源了一個新型庫 Opacus,它支持使用差分隱私來訓練 PyTorch 模型,擴展性優於目前的 SOTA 方法。
  • DeepMind開源強化學習庫TRFL,關鍵算法可編寫RL智能體
    新智元報導 來源:DeepMind blog編輯:肖琴【新智元導讀】今天,DeepMind開源了一個內部強化學習庫TRFL,用於在TensorFlow中編寫強化學習智能體。這個庫包含DeepMind開發的大量成功的agent的關鍵算法組件,對於強化學習智能體的再現研究很有用。
  • 微軟開源以ONNX Runtime加速BERT模型的優化成果
    微軟宣布將開源應用於ONNX Runtime預測引擎,經優化過的自然語言處理模型BERT版本,這個模型是微軟為Bing搜尋引擎打造,可以擴展到GPU和CPU上計算,以低延遲即時處理Bing上數百萬次的查詢。
  • 谷歌開源大規模神經網絡模型高效訓練庫 GPipe
    GPipe,這是一款分布式機器學習庫,可以讓研究員在不調整超參數的情況下,部署更多的加速器以對大規模模型進行訓練,有效擴展了模型性能。與此對應的是,市面的 GPU 內存僅僅提高了 3 倍左右,目前最先進的圖像模型早已達到雲 TPUv2 可用內存的極限。因此,我們迫切需要一種高效、可擴展的基礎設施,以實現大規模的深度學習訓練,並克服當前的加速器內存受限問題。
  • 2020年微軟開發者大會召開,宣布開源圖靈模型,全球開發者的狂歡
    而未來讓AI智能自己去GitHub找代碼,然後自己編寫代碼也將是非常平常的事情,微軟已經對Azure AI服務和GitHub進行多次試驗和融合,欲進一步將大規模AI模型、訓練優化工具和超級計算機資源釋放出來,讓開發者、數據科學家和商業客戶都能輕鬆利用AI的力量。
  • 微軟和谷歌分別開源分布式深度學習框架,各自厲害在哪
    微軟和谷歌一直在積極研究用於訓練深度神經網絡的新框架,並且在最近將各自的成果開源——微軟的 PipeDream 和谷歌的 GPipe。原則上看,他們都遵循了類似的原則來訓練深度學習模型。這兩個項目已在各自的研究論文(PipeDream,GPipe)中進行了詳細介紹,這篇文章將對此進行總結。
  • 26億參數,智源、清華開源中文大規模預訓練模型
    近日,北京智源人工智慧研究院和清華大學研究團隊合作開展了一項名為「清源 CPM (Chinese Pretrained Models)」的大規模預訓練模型開源計劃,旨在構建以中文為核心的大規模預訓練模型。首期開源內容包括預訓練中文語言模型和預訓練知識表示模型,可廣泛應用於中文自然語言理解、生成任務以及知識計算應用,所有模型免費向學術界和產業界開放下載,供研究使用。
  • Facebook 開源 3D 深度學習函數庫 PyTorch3D
    原標題:Facebook開源3D深度學習函數庫PyTorch3D來源:開源中國Facebook近日開源了將PyTorch用於3D深度學習的函數庫PyTorch3D,這是一個高度模塊化且經過優化的庫,具備獨有的功能,旨在通過PyTorch簡化3D深度學習。
  • 各種程式語言的深度學習庫整理
    它使得在Python環境下編寫深度學習算法變得簡單。在它基礎之上還搭建了許多類庫。   1.Keras是一個簡潔、高度模塊化的神經網絡庫,它的設計參考了Torch,用Python語言編寫,支持調用GPU和CPU優化後的Theano運算。  2.Pylearn2是一個集成大量深度學習常見模型和訓練算法的庫,如隨機梯度下降等。它的功能庫都是基於Theano之上。
  • DeepMind 一次性開源 3 個新框架!深度強化學習應用落地即將迎來...
    雷鋒網 AI 開發者按:深度強化學習(Deep Reinforcement Learning,DRL)一直是近年來人工智慧的一些重大突破的核心。然而,儘管 DRL 有了很大的進步,但由於缺乏工具和庫,DRL 方法在主流解決方案中仍然難以應用。因此,DRL 仍然主要是以研究形式存在,並沒有在現實世界看到許多採用機器學習的應用方案;而解決這個問題就需要更好的工具和框架。
  • 用 Java 訓練深度學習模型,原來能這麼簡單
    儘管深度學習應用的不斷演進和落地,提供給 Java 開發者的框架和庫卻十分短缺。現今主要流行的深度學習模型都是用 Python 編譯和訓練的。對於 Java 開發者而言,如果要進軍深度學習界,就需要重新學習並接受一門新的程式語言同時還要學習深度學習的複雜知識。這使得大部分 Java 開發者學習和轉型深度學習開發變得困難重重。