成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用上Pytorch Lightning的這六招,深度學習pipeline提速10倍

新聞 深度學習
最近,一個國外小哥就提出了一種建議:在Pytorch lightning基礎上,讓深度學習pipeline速度提升10倍!

 [[427508]]

本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯(lián)系出處。

面對數以億計的圖片數據,到底該用什么樣的方法才能快速搞實驗?

這樣的問題,或許在做機器學習研究的你,也會經常遇到。

而就在最近,一個國外小哥就提出了一種建議:

在Pytorch lightning基礎上,讓深度學習pipeline速度提升10倍

用他自己的話來說就是——“爬樓時像給了你一個電梯”。

這般“酸爽”,到底是如何做到的呢?

用上Pytorch Lightning的這六招,深度學習pipeline提速10倍

優(yōu)化機器學習pipeline,很重要

無論你是身處學術界還是工業(yè)界,時間資源等各種因素,往往會成為你在搞實驗的枷鎖

尤其是隨著數據集規(guī)模和機器學習模型,變得越發(fā)龐大和復雜,讓實驗變得既費時又耗力。

用上Pytorch Lightning的這六招,深度學習pipeline提速10倍

提速這件事,就變得至關重要。

例如在2012年的時候,訓練一個AlexNet,要花上5到6天的時間。

而現如今,只需要短短幾分鐘就可以在更大的數據集上訓練更大的圖像模型。

這位小哥認為,從某種角度上來說,這是得益于各種各樣的“利器”的出現。

例如Pytorch Lingtning,就是其中一種。

于是,他便“死磕”pipeline,總結了六種“閃電加速”實驗周期的方法。

并行數據加載

數據加載和增強(augmentation)往往被認為是訓練pipeline時的瓶頸之一。

一個典型的數據pipeline包含以下步驟:

  • 從磁盤加載數據
  • 在運行過程中創(chuàng)建隨機增強
  • 將每個樣本分批整理

在這個過程中,倒是可以用多個CPU進程并行加載數據來優(yōu)化。

但與此同時,還可以通過下面的操作來加速這一過程:

1、將DataLoader中的num_workers參數設置為CPU的數量。

2、當與GPU一起工作時,將DataLoader中的pin_memory參數設置為True。這可以將數據分配到頁鎖定的內存中,從而加快數據傳輸到GPU的速度。

使用分布式數據并行的多GPU訓練

用上Pytorch Lightning的這六招,深度學習pipeline提速10倍

與CPU相比,GPU已經大大加速了訓練和推理時間。

但有沒有比一個GPU更好的方法?或許答案就是:

多個GPU!

在PyTorch中,有幾種范式可以用多個GPU訓練你的模型。

兩個比較常見的范式是 “DataParallel ”和 “DistributedDataParallel”。

而小哥采用的方法是后者,因為他認為這是一種更可擴展的方法。

但在PyTorch(以及其他平臺)中修改訓練pipeline并非易事。

必須考慮以分布式方式加載數據以及權重、梯度和指標的同步等問題。

不過,有了PyTorch Lightning,就可以非常容易地在多個GPU上訓練PyTorch模型,還是幾乎不需要修改代碼的那種!

用上Pytorch Lightning的這六招,深度學習pipeline提速10倍

混合精度

在默認情況下,輸入張量以及模型權重是以單精度(float32)定義的。

然而,某些數學運算可以用半精度(float16)進行。

這樣一來,就可以顯著提升速度,并降低了模型的內存帶寬,還不會犧牲模型的性能。

通過在PyTorch Lightning中設置混合精度標志(flag),它會在可能的情況下自動使用半精度,而在其他地方保留單精度。

通過最小的代碼修改,模型訓練的速度可以提升1.5至2倍。

用上Pytorch Lightning的這六招,深度學習pipeline提速10倍

早停法

當我們訓練深度學習神經網絡的時候,通常希望能獲得最好的泛化性能。

但是所有的標準深度學習神經網絡結構,比如全連接多層感知機都很容易過擬合。

當網絡在訓練集上表現越來越好,錯誤率越來越低的時候,實際上在某一刻,它在測試集的表現已經開始變差。

因此,早停法 (Early Stopping)便在訓練過程中加入了進來。

具體來說,就是當驗證損失在預設的評估次數(在小哥的例子中是10次評估)后停止訓練。

這樣一來,不僅防止了過擬合的現象,而且還可以在幾十個 epoch內找到最佳模型。

用上Pytorch Lightning的這六招,深度學習pipeline提速10倍

Sharded Training

Sharded Training是基于微軟的ZeRO研究和DeepSpeed庫。

它顯著的效果,就是讓訓練大模型變得可擴展和容易。

否則,這些模型就不適合在單個GPU上使用了。

而在Pytorch Lightning的1.2版本中,便加入了對Shared Training的支持。

雖然在小哥的實驗過程中,并沒有看到訓練時間或內存占用方面有任何改善。

但他認為,這種方法在其它實驗中可能會提供幫助,尤其是在不使用單一GPU的大模型方面。

用上Pytorch Lightning的這六招,深度學習pipeline提速10倍

模型評估和推理中的優(yōu)化

在模型評估和推理期間,梯度不需要用于模型的前向傳遞。

因此,可以將評估代碼包裹在一個torch.no_grad上下文管理器中。

這可以防止在前向傳遞過程中的存儲梯度,從而減少內存占用。

如此一來,就可以將更大的batch送入模型,讓評估和推理變得更快。

效果如何?

介紹了這么多,你肯定想知道上述這些方法,具體起到了怎樣的作用。

小哥為此做了一張表格,詳解了方法的加速效果。

用上Pytorch Lightning的這六招,深度學習pipeline提速10倍

那么這些方法,是否對在做機器學習實驗的你有所幫助呢?

快去試試吧~

 

 

責任編輯:張燕妮 來源: 量子位
相關推薦

2023-12-11 15:40:32

PyTorch代碼大模型

2016-10-08 16:02:37

WIFIMegaMIMO系統(tǒng)

2013-09-24 09:40:41

Java圖形加速

2016-02-18 09:36:52

光纖wifi

2024-03-19 14:43:17

自動駕駛激光

2025-01-08 08:30:38

2013-08-22 10:43:43

應用圖標蘋果

2022-02-08 06:46:38

WiFi路由器

2022-08-01 11:15:26

MIT材料

2021-02-17 13:20:51

forpandas語言

2024-07-17 08:25:44

2024-05-11 14:45:23

MAX基礎服務C端

2023-06-28 10:10:31

攜程技術

2021-07-27 15:55:01

人工智能機器學習技術

2021-10-11 22:31:26

Windows 10Windows微軟

2019-10-29 08:50:31

深度學習編程人工智能

2021-08-06 22:36:12

Windows 10Windows微軟

2024-09-02 22:51:59

結構化架構模型

2013-02-28 10:35:59

hadoop大數據Hortonworks

2016-03-21 10:16:06

RedisSpark大數據處理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 羞羞的视频免费在线观看 | 成人依人 | 免费在线精品视频 | 国产精品一区在线播放 | 刘亦菲国产毛片bd | 欧美www在线| 中文字幕高清视频 | 欧美精品欧美精品系列 | 一级黄片一级毛片 | 特黄毛片视频 | 欧美成人精品一区二区三区 | 欧美αv| 精品中文在线 | 一区二区在线不卡 | av中文在线 | 国产在线一区二区三区 | 夜夜爽99久久国产综合精品女不卡 | 国精品一区二区 | 欧美日韩在线成人 | 老司机狠狠爱 | 91久久精品一区 | 自拍偷拍亚洲欧美 | 久久99精品久久久久久 | 美国a级毛片免费视频 | 99久久精品国产毛片 | 亚洲电影一区二区三区 | 自拍偷拍中文字幕 | 一区二区三区亚洲精品国 | 精品久久久久久久久久久 | 亚洲国产精品成人久久久 | 久久久999成人 | 91精品国产综合久久久久久丝袜 | 日韩一区二区三区在线视频 | 久久精品黄色 | 久草在线在线精品观看 | 天天摸天天干 | 91精品国产91久久久久久吃药 | 色狠狠一区 | 亚洲综合色视频在线观看 | 精品蜜桃一区二区三区 | 日本中文字幕一区 |