改變幾行程式碼,PyTorch煉丹速度狂飆、模型最佳化時間大減
如何提升 PyTorch「煉丹」速度?
最近,知名機器學習與 AI 研究者 Sebastian Raschka 向我們展示了他的絕招。據他表示,他的方法在不影響模型準確率的情況下,僅僅透過改變幾行程式碼,將 BERT 優化時間從 22.63 分鐘縮減到 3.15 分鐘,訓練速度足足提升了 7 倍。
#作者更是表示,如果你有8 個GPU 可用,整個訓練過程只需要2 分鐘,實現11.5 倍的效能加速。
#下面我們來看看他到底是如何實現的。
讓PyTorch 模型訓練更快
首先是模型,作者採用DistilBERT 模型進行研究,它是BERT 的精簡版,與BERT 相比規模縮小了40 %,但性能幾乎沒有損失。其次是資料集,訓練資料集為大型電影評論資料集 IMDB Large Movie Review,該資料集總共包含 50000 則電影評論。作者將使用下圖中的 c 方法來預測資料集中的影評情緒。
基本任務交代清楚後,以下就是 PyTorch 的訓練過程。為了讓大家更能理解這項任務,作者也貼心地介紹了一下熱身練習,即如何在 IMDB 電影評論資料集上訓練 DistilBERT 模型。如果你想自己運行程式碼,可以使用相關的Python 函式庫來設定一個虛擬環境,如下所示:
#相關軟體的版本如下:
現在省略掉枯燥的資料載入介紹,只需要了解本文將資料集分割成35000 個訓練範例、5000 個驗證範例和10000 個測試範例。需要的程式碼如下:
#程式碼部分截圖
#完整程式碼位址:
#https://github.com/rasbt/faster-pytorch-blog /blob/main/1_pytorch-distilbert.py
#然後在A100 GPU 上執行程式碼,得到如下結果:
#部分結果截圖
#如上述程式碼所示,模型從第2 輪到第3輪開始有一點過擬合,驗證準確率從92.89% 下降到了92.09%。在模型運行了 22.63 分鐘後進行微調,最終的測試準確率為 91.43%。
使用Trainer 類別
#接下來是改進上述程式碼,改進部分主要是把PyTorch 模型包裝在LightningModule 中,這樣就可以使用來自Lightning 的Trainer 類別。部分程式碼截圖如下:
#完整程式碼位址:https://github.com/rasbt/faster-pytorch-blog/blob/main/2_pytorch- with-trainer.py
上述程式碼建立了一個LightningModule,它定義瞭如何執行訓練、驗證和測試。相較於前面給出的程式碼,主要變化是在第 5 部分(即 5 Finetuning),即微調模型。與先前不同的是,微調部分在 LightningModel 類別中包裝了 PyTorch 模型,並使用 Trainer 類別來擬合模型。
之前的程式碼顯示驗證準確率從第2 輪到第3 輪有所下降,但改進後的程式碼使用了ModelCheckpoint 以載入最佳模型。在同一台機器上,這個模型在 23.09 分鐘內達到了 92% 的測試準確率。
需要注意,如果禁用checkpointing 並允許PyTorch 以非確定性模式運行,本次運行最終將獲得與普通PyTorch 相同的運行時間(時間為22.63 分而非23.09 分)。
自動混合精準度訓練
#進一步,如果GPU 支援混合精準度訓練,可以開啟GPU 以提高運算效率。作者使用自動混合精度訓練,在 32 位和 16 位浮點之間切換而不會犧牲準確率。
#在這一最佳化下,使用Trainer 類,即能透過一行程式碼實現自動混合精準度訓練:
#上述操作可以將訓練時間從23.09 分鐘縮短到8.75 分鐘,這幾乎快了3倍。測試集的準確率為 92.2%,甚至比之前的 92.0% 還略有增加。
使用Torch.Compile 靜態圖
最近PyTorch 2.0 公告顯示,PyTorch 團隊引進了新的toch.compile 函數。此函數可以透過產生最佳化的靜態圖來加速 PyTorch 程式碼執行,而不是使用動態圖來執行 PyTorch 程式碼。
#由於PyTorch 2.0 尚未正式發布,因而必須先安裝torchtriton,並更新到PyTorch 最新版本才能使用此功能。
#然後透過新增這一行來修改程式碼:
在4 區塊GPU 上進行分散式資料並行
###上文介紹了在單 GPU 上加速程式碼的混合精度訓練,接下來介紹多 GPU 訓練策略。下圖總結了幾種不同的多 GPU 訓練技術。
#想要實作分散式資料並行,可以透過DistributedDataParallel 來實現,只需修改一行程式碼就能使用Trainer。
經過這一步驟優化,在4 個A100 GPU 上,這段程式碼運行了3.52 分鐘就達到了93.1 % 的測試準確率。
DeepSpeed
最後,作者探討了在Trainer 中使用深度學習優化庫DeepSpeed 以及多GPU 策略的結果。首先必須安裝DeepSpeed 函式庫:
#接著只需更改一行程式碼即可啟用該函式庫:
這一波下來,用時3.15 分鐘就達到了92.6% 的測試準確率。不過 PyTorch 也有 DeepSpeed 的替代方案:fully-sharded DataParallel,透過 strategy="fsdp" 調用,最後花費 3.62 分鐘完成。
####以上就是作者能提升PyTorch 模型訓練速度的方法,有興趣的夥伴可以跟著原部落格嘗試一下,相信你會得到想要的結果。 ######
以上是改變幾行程式碼,PyTorch煉丹速度狂飆、模型最佳化時間大減的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

0.這篇文章乾了啥?提出了DepthFM:一個多功能且快速的最先進的生成式單目深度估計模型。除了傳統的深度估計任務外,DepthFM還展示了在深度修復等下游任務中的最先進能力。 DepthFM效率高,可以在少數推理步驟內合成深度圖。以下一起來閱讀這項工作~1.論文資訊標題:DepthFM:FastMonocularDepthEstimationwithFlowMatching作者:MingGui,JohannesS.Fischer,UlrichPrestel,PingchuanMa,Dmytr

想像一下,一個人工智慧模型,不僅擁有超越傳統運算的能力,還能以更低的成本實現更有效率的效能。這不是科幻,DeepSeek-V2[1],全球最強開源MoE模型來了。 DeepSeek-V2是一個強大的專家混合(MoE)語言模型,具有訓練經濟、推理高效的特點。它由236B個參數組成,其中21B個參數用於啟動每個標記。與DeepSeek67B相比,DeepSeek-V2效能更強,同時節省了42.5%的訓練成本,減少了93.3%的KV緩存,最大生成吞吐量提高到5.76倍。 DeepSeek是一家探索通用人工智

AI,的確正在改變數學。最近,一直十分關注這個議題的陶哲軒,轉發了最近一期的《美國數學學會通報》(BulletinoftheAmericanMathematicalSociety)。圍繞著「機器會改變數學嗎?」這個話題,許多數學家發表了自己的觀點,全程火花四射,內容硬核,精彩紛呈。作者陣容強大,包括菲爾茲獎得主AkshayVenkatesh、華裔數學家鄭樂雋、紐大電腦科學家ErnestDavis等多位業界知名學者。 AI的世界已經發生了天翻地覆的變化,要知道,其中許多文章是在一年前提交的,而在這一

波士頓動力Atlas,正式進入電動機器人時代!昨天,液壓Atlas剛「含淚」退出歷史舞台,今天波士頓動力就宣布:電動Atlas上崗。看來,在商用人形機器人領域,波士頓動力是下定決心要跟特斯拉硬剛一把了。新影片放出後,短短十幾小時內,就已經有一百多萬觀看。舊人離去,新角色登場,這是歷史的必然。毫無疑問,今年是人形機器人的爆發年。網友銳評:機器人的進步,讓今年看起來像人類的開幕式動作、自由度遠超人類,但這真不是恐怖片?影片一開始,Atlas平靜地躺在地上,看起來應該是仰面朝天。接下來,讓人驚掉下巴

本月初,來自MIT等機構的研究者提出了一種非常有潛力的MLP替代方法—KAN。 KAN在準確性和可解釋性方面表現優於MLP。而且它能以非常少的參數量勝過以更大參數量運行的MLP。例如,作者表示,他們用KAN以更小的網路和更高的自動化程度重現了DeepMind的結果。具體來說,DeepMind的MLP有大約300,000個參數,而KAN只有約200個參數。 KAN與MLP一樣具有強大的數學基礎,MLP基於通用逼近定理,而KAN基於Kolmogorov-Arnold表示定理。如下圖所示,KAN在邊上具

什麼?瘋狂動物城被國產AI搬進現實了?與影片一同曝光的,是一款名為「可靈」全新國產影片生成大模型。 Sora利用了相似的技術路線,結合多項自研技術創新,生產的影片不僅運動幅度大且合理,還能模擬物理世界特性,具備強大的概念組合能力與想像。數據上看,可靈支持生成長達2分鐘的30fps的超長視頻,分辨率高達1080p,且支援多種寬高比。另外再劃個重點,可靈不是實驗室放出的Demo或影片結果演示,而是短影片領域頭部玩家快手推出的產品級應用。而且主打一個務實,不開空頭支票、發布即上線,可靈大模型已在快影

哭死啊,全球狂煉大模型,一網路的資料不夠用,根本不夠用。訓練模型搞得跟《飢餓遊戲》似的,全球AI研究者,都在苦惱怎麼才能餵飽這群資料大胃王。尤其在多模態任務中,這問題尤其突出。一籌莫展之際,來自人大系的初創團隊,用自家的新模型,率先在國內把「模型生成數據自己餵自己」變成了現實。而且還是理解側和生成側雙管齊下,兩側都能產生高品質、多模態的新數據,對模型本身進行數據反哺。模型是啥?中關村論壇上剛露面的多模態大模型Awaker1.0。團隊是誰?智子引擎。由人大高瓴人工智慧學院博士生高一鑷創立,高

最近,軍事圈被這個消息刷屏了:美軍的戰鬥機,已經能由AI完成全自動空戰了。是的,就在最近,美軍的AI戰鬥機首次公開,揭開了神秘面紗。這架戰鬥機的全名是可變穩定性飛行模擬器測試飛機(VISTA),由美空軍部長親自搭乘,模擬了一對一的空戰。 5月2日,美國空軍部長FrankKendall在Edwards空軍基地駕駛X-62AVISTA升空注意,在一小時的飛行中,所有飛行動作都由AI自主完成! Kendall表示——在過去的幾十年中,我們一直在思考自主空對空作戰的無限潛力,但它始終顯得遙不可及。然而如今,
