精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

大模型千卡訓練總結!難點到底在哪里?

人工智能 新聞
文將包括3個部分:首先我們將討論千卡訓練的難題,以及應該在什么時候使用千卡訓練;接著,我們將討論如何在一千張卡上開始訓練,如何讓他達到近乎線性的性能提升;最后我們將展開討論一些千卡訓練當中仍然懸而未決(至少對于開源社區來說)的問題。

本文經自動駕駛之心公眾號授權轉載,轉載請聯系出處。

最近看到知乎一個回答,把千卡訓練的難度吹上天了。但其實真正用過千卡就會發現也就那么幾個點。于是想寫一篇文章簡單講講。

本文將包括3個部分:首先我們將討論千卡訓練的難題,以及應該在什么時候使用千卡訓練;接著,我們將討論如何在一千張卡上開始訓練,如何讓他達到近乎線性的性能提升;最后我們將展開討論一些千卡訓練當中仍然懸而未決(至少對于開源社區來說)的問題。

為什么千卡訓練是困難的?

千卡訓練和八卡訓練的區別是—顯卡多了一百多倍。

這意味著什么呢?

  • 通信時間增加
  • 故障概率增加

這倆問題都很好理解。

時間上,PyTorch內部支持NCCL/Gloo/MPI三個通信后端(請務必使用NCCL。其中AllReduce操作會會根據具體硬件配置走Ring AllReduce和Tree AllReduce。Ring的時間復雜度是,Tree的時間復雜度是  。就算是理論上128節點也比單節點慢至少七倍,實踐當中跨節點通訊要遠比單節點慢得多。

故障上,一個節點出問題的概率是p,128個節點就是1-(1-p)^128。也就是說如果一個操作在一個訓練當中的出錯概率是1%,那么在128節點當中的出錯概率就是72.37%。

此外,隨著規模的增大,許多問題都會變得難以忍受。比如數據增強要花0.1s,一億條數據就是278個小時(當然這只是胡拆的一個數字,實際有各種機制所以不會有這么大影響。

因此,錢多燒手并不是使用千卡訓練的理由。閑得蛋疼可能是,但你得多蛋疼才能想出這么折磨自己的idea?

千卡訓練解決的問題是大模型&大數據問題。如果你的訓練時間沒有超過8192GPU日,那么你絕對不需要一千張顯卡。

看到這里,絕大多數人已經可以關掉這篇文章了。除非你的模型和數據都以B(十億)來作為計量單位。當然如果你正在廁所里手機沒電想看點兒東西解悶兒的話(雖然我很懷疑是否會有人把他打出來……那么可以繼續往下看

如何使用一千張卡訓練?

如何提高計算效率?

這件事情其實是一個case by case的事情。因為通信、計算速度啥的受硬件影響更多。而每一個集群的硬件拓撲都是不一樣的。同樣是A100集群,我全DGX節點,每一張A100都是SXM接口并配一塊兒專屬的IB網卡。你一個小破普惠服務器插8張PCI-E A100,IB卡一個節點只給一張。那咱倆遇到的問題就完全不是一個問題。

因此,要討論如何提高訓練效率、減少訓練耗時,我們首先要了解訓練耗時在哪里。那么,一個訓練步的耗時在哪里呢?需要謹記,沒有profile的優化是沒有意義的。

你可能會說,forward backward sync。很好,這說明你了解PyTorch的基本流程。不過現實當中要復雜得多。

  1. dataset讀取數據,構建輸出
  2. dataloader collate數據,進行數據預處理
  3. 模型forward計算輸出
  4. loss compute
  5. 模型backward計算梯度
  6. 模型sync梯度
  7. 優化器step更新權重
  8. 打印log

當然這是可以無限細分下去的,但一般這些就夠了。需要注意的是,除了4-7的耗時是真耗時,其他都需要通過異步操作來蓋掉。這也是我們的優化目標。

異步執行在PyTorch的dataloader、CUDA和分布式當中都存在。前者可以通過設置num_workers和prefetch_count為0來關閉,后兩者可以通過cuda.synchornize和dist.barrier來執行手動同步。在profile時,我們需要首先需要測整個step的時長。然后再在每次測量前執行手動同步來計算每個部分的時長。如果前者的總耗時等于后者4-7的耗時之和,那么通常不需要執行任何操作。但這種情況在千卡操作中幾乎不可能發生。

第6步通信往往需要耗費大量時間。因此,我們還需要進一步優化通信。

以下內容是對《PyTorch Distributed: Experiences on Accelerating Data Parallel Training》論文的概括,有感興趣的同學建議通讀并背誦全文。

Paper: https://arxiv.org/abs/2006.15704

計算-通信重疊

在PyTorch當中,梯度的通信和反向傳播是交疊進行的。也就是說,每完成一層的梯度計算,都會立即觸發當前層的同步。實現起來也很簡單,每個進程在完成自己第k層的梯度計算后都會觸發一個鉤子來給計數器+1s。當計數器達到進程數是開火進行梯度通信。有很多同學在計算梯度過程中遇到過RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one.錯誤,這就是因為有的模塊沒有參與計算loss,導致梯度同步卡住了。需要注意,當find_unused_parameters=True時,PyTorch分布式使用nn.Module.__init__當中定義sub-module的反向順序來作為梯度桶的構建順序。因此,確保模塊定義和調用的順序一致對于高效訓練來說很重要。

梯度合桶

盡管理論上來說,同步發生的越及時,重合度越高,性能越好。但實際上每次發起通信都是有開銷的。因此,現實當中梯度同步并不是越多越好越快越好。為此,PyTorch引入了梯度合桶機制,通過把多個Tensor裝在一個桶里再通信桶來減少通信次數從而減少總耗時。合桶的Buffer Size等等參數往往需要針對硬件和模型來調整從而取得最好的通信效果。PyTorch的默認參數是從0.x時代祖傳下來的,這一參數通常都需要調節。

梯度累加

當你做完所有操作之后,驚喜的發現TMD怎么同步時間還是單節點的好幾倍。這其實是正常情況……實際上超過256卡的訓練想要把通信蓋掉就是一件不可能的事情。你說老師我看FB論文說他們256卡就是線性提升啊…那這里不得不提的一個策略就是梯度累加了。梯度累加會執行k次forward+backward之后再執行優化器步進。這有很多好處,首先對于大模型batch size通常不能開多大,梯度累加可以提升等效batch size。其次累加期間的backward不需要通信梯度,加快了訓練速度。

少即是快

Python是一種很慢的代碼。當然你說JIT trace+torch.compile有提升我也不反對,但對于最高效率來說,只有必須要存在的代碼和不存在的代碼兩種。

抱抱臉的Transformers就是一個反例。兩個sub-Module就能寫完的TransformerLayer他們硬是能寫出來一堆…偏偏他們還信奉Single Model File Policy……我尋思你這完全不考慮繼承的封這么多層是要搞雞毛啊?正例反而是PyTorch……(笑死,我竟然會夸臉書代碼寫得好。具體來說就是nn.functional當中的各種實現。你會發現他們第一行往往是handle_torch_func。熟悉Python裝飾器的小伙汁通常要問了,為啥這里不用個裝飾器統一一下?因為裝飾器會引入額外的函數調用,額外的函數調用就是額外的開銷。

因此,如果你想確保最高的效率,寫一個簡單的訓練代碼和模型代碼非常重要。畢竟,1%的效率提升,節省的可能是數百個GPU日。

如何平穩訓練

這一段當中中咱們只討論你能控制的問題。

捕捉不致命的異常

故障率高的問題其實很好解決。在訓練當中,大部分異常都是非致命異常,捉住他們就好了。https://danling.org/utils/decorators/#danling.utils.decorators.catch 是我之前寫的一個裝飾器,它的作用就是catch異常,然后調回調函數(默認當然就是把錯誤打印到log里)。所有你需要做的只是使用它來裝飾非fatal的操作。

在實際應用當中,我們遇到的最常見的問題是存ckpt寫滿了磁盤(不準笑,從商湯到深勢再到上海AI Lab,這個問題在哪兒都有出現。咱也不知道為啥肯買那么多顯卡但不肯多插點兒硬盤,咱也不敢問)。catch住所有保存操作,如果你有閑心可以在回調里刪一下之前的ckpt。沒嫌心的話…大不了重訓一次嘛(逃。第二常見的問題,你猜對了……存log寫滿了硬盤……所以所有logging操作也都是要catch的。這就是為啥我都用tmux然后開很長的緩存窗口,總是能搶救一些log出來的。

咳咳,說點兒正經的。任何聯網操作都是需要catch的,常見的聯網操作主要包括從ceph讀取數據和…寫log到遠程(逃。其他就沒啥了吧,我見過有大哥嘗試恢復OOM的,但效果似乎不是很好,至少我自己沒用過。簡單來說,唯一不應捕捉的錯誤是集群炸了。

那有的大兄弟就說了,集群沒爆炸,但是有兩張卡突然掉了咋辦。這個咱第三部分再討論。

過程也很重要

有用過[丹靈]http://danling.org的同學可能比較熟悉。丹靈其他地方都很輕量,唯獨實驗管理這里寫的很復雜。現代丹靈會將創建一個三個級別的實驗目錄,project/experiment-run/timestamp。其中project是用戶給出的,experiment和run分別是通過代碼版本和配置計算出來的,timestamp就是運行開始的時間。也就是說,如果代碼和配置是完全一樣的,丹靈就會認為這是同一個運行。在設置中打開auto_resum就會自動找最新的一個檢查點(這就是為啥最后一級要用時間戳)來加載。其實微軟用的amlt更好用,他甚至還會創建一個代碼的diff文件夾來幫助你回憶當初代碼修改了些啥。

收斂,收斂,收斂

模型訓著訓著發散了幾乎是每個訓大模型的人都會遇到的問題。輸出和loss只要有nan果斷丟掉。梯度先clip by value再clip by norm都是常規操作。哦對了,還有初始化……關于大模型收斂性的論文有一堆,此處不再贅述。

比更大,還更大,再更大

彈性訓練

實際上當你的訓練超過2048個GPU日時,在整個訓練過程當中發生單個GPU甚至單個節點下線是再正常不過的事情了。

PyTorch在1.10就引入了torchelastic彈性訓練機制,用過的都罵娘。等下,讓我先罵一遍,呸。ok咱們繼續吧。

我印象當中在微軟的最后一輪面試當中被問到了這個問題:如何設計一個彈性分布式系統。

我的回答很教科書。每k分鐘,系統會做一次AllReduce來統計存活進程數,然后選舉出一個主進程。主進程會計算好每個進程的rank和local rank進行broadcast。所有進程每次forward開始時向主進程發送一個心跳包來匯報狀態。主進程會根據心跳包來確定這一個step參與同步的機器有多少。但很可惜,2024年了。還是沒人去寫。

大小梯度同步

我一直認為梯度同步不應該以GPU/進程為單位。而應該分為大同步(節點間同步)和小同步(節點內同步)。小同步可以更高頻的進行,大同步則可以更慢的執行。這樣不僅能提高實際的梯度同步頻率,降低同步總耗時,并且還能天然的去結合小batch和大batch訓練的優點—節點內小batch關注個體,節點間大batch關注整體。

責任編輯:張燕妮 來源: 自動駕駛之心
相關推薦

2019-11-26 10:57:11

攜號轉網運營商技術

2015-06-30 14:33:52

物聯網

2017-03-16 14:31:11

2021-11-16 23:07:59

手機性能技術

2010-08-09 09:09:36

Linux與BSD的區

2012-04-27 10:13:08

云計算數據IaaS

2015-08-26 08:41:19

物聯網

2023-11-03 07:47:12

機器資源大模型:

2024-11-05 09:32:47

2024-04-10 08:15:17

模型語言模型GPT

2018-09-14 08:28:14

數據中心廠商供應商

2019-01-21 07:53:11

路由器IP地址無線網關

2015-09-02 09:56:33

大數據

2013-01-22 11:24:22

PC

2015-07-03 11:19:43

火車WiFi

2019-08-07 18:34:41

蘋果信用卡金融

2014-01-07 13:54:40

Hadoop日志
點贊
收藏

51CTO技術棧公眾號

成人在线观看你懂的| 国产在线视频不卡| 久久精品老司机| 成人天堂yy6080亚洲高清| 国产日韩欧美制服另类| 999热视频在线观看| 国产一级做a爱片久久毛片a| 精品视频免费| 精品国产一区久久| www.欧美日本| 不卡av免费观看| 国产目拍亚洲精品99久久精品| 91日本视频在线| 四虎成人永久免费视频| 亚洲最新色图| 亚洲人成欧美中文字幕| 色男人天堂av| av成人在线观看| 一区二区三区精品在线| 日日夜夜精品网站| 黑人操亚洲女人| 精品亚洲免费视频| 国产成人免费91av在线| 日韩 欧美 精品| 久久久久久久久久久妇女| 精品无人区太爽高潮在线播放| 欧美xxxxxbbbbb| 国产精品麻豆成人av电影艾秋| 亚洲成av人片在线观看| 7777精品伊人久久久大香线蕉经典版下载| 8x拔播拔播x8国产精品| 亚洲视频重口味| 精品大片一区二区| 国产婷婷成人久久av免费高清| 无码人妻一区二区三区精品视频| 久久久久久久性潮| 在线免费av一区| 日本精品免费在线观看| 草草在线观看| 亚洲电影在线免费观看| 日本人妻伦在线中文字幕| 日本视频在线| 国产精品久久久久毛片软件| 日本一区二区精品视频| 日韩午夜影院| 久久亚洲一区二区三区四区| 国产精品一区二区三区不卡 | 东京热无码av男人的天堂| 网红女主播少妇精品视频| 亚洲第一精品夜夜躁人人躁| 中文字幕无人区二| 秋霞一区二区三区| 日韩免费高清av| 中文字幕制服丝袜| 成人av资源网址| 精品成a人在线观看| 国产chinese中国hdxxxx| 99ri日韩精品视频| 日韩免费观看高清完整版| 师生出轨h灌满了1v1| 91欧美极品| 亚洲精品第一页| 精品无码人妻一区| 成人看的视频| 精品国产一区二区三区久久久| 羞羞在线观看视频| 欧美国产精品| 韩国19禁主播vip福利视频| 国产无遮挡裸体免费视频| 亚洲国产国产亚洲一二三| 国语自产在线不卡| 在线永久看片免费的视频| 日本欧美在线看| 成人免费在线网址| 亚洲国产精品suv| 不卡的av电影| 水蜜桃亚洲一二三四在线| 美女写真理伦片在线看| 一区二区三区美女| 亚洲中文字幕无码专区| 高清av一区二区三区| 在线播放亚洲一区| 一本色道久久hezyo无码| 色橹橹欧美在线观看视频高清| 亚洲欧美资源在线| 欧美色图亚洲视频| 国产精品综合色区在线观看| 国产精品人成电影在线观看| 99riav国产| 91视频91自| 亚洲午夜久久久影院伊人| 欧美日韩色网| 欧美日免费三级在线| 亚洲成人激情小说| 久久91成人| 九九九久久国产免费| 欧美日韩综合一区二区三区| 国产一区二区剧情av在线| 久久婷婷开心| 午夜成年人在线免费视频| 日韩欧美一区二区三区久久| 看看黄色一级片| 蜜桃一区二区| 久久久久亚洲精品| 一区二区精品视频在线观看| xnxx国产精品| 成人免费a级片| 国产麻豆一区| 日韩精品一二三四区| 黄色a级片在线观看| 久久国产精品毛片| 成人动漫视频在线观看免费| av每日在线更新| 黄色精品在线看| 女王人厕视频2ⅴk| 日韩欧美中文| 国产成人啪精品视频免费网| 少妇高潮一区二区三区99小说| 中文字幕一区二区三区色视频| 久久国产亚洲精品无码| 免费观看亚洲视频大全| 中文精品99久久国产香蕉| 日本中文字幕第一页| 成人教育av在线| 久久久久久久久影视| 久久精品xxxxx| 亚洲视频axxx| 日韩欧美成人一区二区三区| 成人高清视频在线观看| 国产 国语对白 露脸| 日本免费成人| 色吧影院999| 国产精品传媒在线观看| 91老司机福利 在线| 成人午夜精品久久久久久久蜜臀| 国产一区二区三区国产精品| 日韩中文视频免费在线观看| 中文有码在线播放| 国产香蕉久久精品综合网| 欧美韩国日本在线| 日韩精品免费一区二区夜夜嗨 | 久久国产视频一区| aaa国产一区| 草草视频在线免费观看| 中文无码日韩欧| 欧美高清videos高潮hd| 亚洲AV午夜精品| 一区二区三区在线播放| 中文字幕久久久久久久| 午夜欧美理论片| 不卡视频一区二区三区| 国产深夜视频在线观看| 亚洲大胆人体视频| 在线观看精品国产| 91丨porny丨国产| 哪个网站能看毛片| 日韩不卡一区| 亚洲自拍欧美另类| 国产极品人妖在线观看| 亚洲国产精品系列| 色av性av丰满av| 国产欧美精品日韩区二区麻豆天美| 欧美精品无码一区二区三区| 成人看的视频| 91久久久一线二线三线品牌| 毛片在线导航| 亚洲视频在线看| 国产又粗又黄又爽视频| 一区二区三区高清| 国产精品嫩草av| 日韩av中文字幕一区二区 | 捆绑裸体绳奴bdsm亚洲| aa亚洲婷婷| 日韩在线观看电影完整版高清免费| 欧美一区 二区 三区| 中文字幕日韩欧美精品在线观看| 国产精品毛片一区二区在线看舒淇| 亚洲欧美另类久久久精品| 人妻 丝袜美腿 中文字幕| 欧美综合二区| 国产奶头好大揉着好爽视频| 爱高潮www亚洲精品| 日本视频久久久| 伦xxxx在线| 日韩精品电影网| 国产精品一区二区三区在线免费观看 | 九九**精品视频免费播放| 国产成人在线小视频| 久久99青青| www 成人av com| 性欧美hd调教| 欧美黄色片视频| 国产人成在线观看| 日韩三级.com| 神马久久久久久久| 亚洲在线一区二区三区| 国产一区二区三区精品在线| 大陆成人av片| 日韩精品你懂的| 亚洲视频一区| 亚洲精品成人自拍| 久久综合社区| 91最新国产视频| 日韩不卡在线| 欧美亚洲另类在线| 日本高清在线观看| 中文字幕亚洲第一| 五月天婷婷在线观看| 欧美一级欧美三级在线观看| 无码人妻丰满熟妇精品区| 亚洲国产一区二区a毛片| 亚洲女人毛茸茸高潮| 久久这里都是精品| 中文字幕在线观看91| 九一九一国产精品| 亚欧在线免费观看| 亚洲在线一区| av免费看网址| 你懂的国产精品永久在线| 亚洲精品国产一区| 猛男gaygay欧美视频| 精品国产一区二区三区麻豆小说 | 国产一二三四在线| 国产精品免费视频网站| 国产精品久久久久无码av色戒| 国产精品一级二级三级| 九九久久久久久| 免费人成精品欧美精品| 日韩av一二三四| 亚洲一区二区成人| 国产精品国产亚洲精品看不卡| 欧美91福利在线观看| 一区中文字幕在线观看| 欧美日韩在线二区| 日韩高清国产精品| 久久91精品| 色综合久久久久久久久五月| 亚洲警察之高压线| 久久久神马电影| 日韩三区视频| 奇米精品在线| 成人在线免费小视频| 日韩精品一区二区三区外面| 日本中文字幕在线一区| 精品无人乱码一区二区三区的优势| 亚洲专区**| 99re视频| swag国产精品一区二区| 国产福利久久精品| 林ゆな中文字幕一区二区| 久久久久se| 欧美**vk| 影音先锋欧美在线| 亚洲先锋影音| 大西瓜av在线| 妖精视频成人观看www| 国产极品粉嫩福利姬萌白酱| 日韩在线a电影| 午夜两性免费视频| 国产伦精品一区二区三区免费迷 | 香蕉久久精品日日躁夜夜躁| 欧美日韩一区综合| 久久网站免费观看| 精品国产一区二区三区在线| 欧美在线资源| 亚洲乱码中文字幕久久孕妇黑人| 久久一区激情| 久久成年人网站| 床上的激情91.| 国产精品1000部啪视频| 国产精品麻豆久久久| 久草视频在线资源| 色综合视频一区二区三区高清| 中文字幕av第一页| 欧美一区二区精品在线| 午夜小视频在线播放| 国产一区二区三区在线观看视频| 伊人在线视频| 国内免费久久久久久久久久久| 日本精品不卡| 91传媒视频免费| 中文字幕伦av一区二区邻居| 中文字幕久久综合| 日韩午夜电影| 人人爽人人爽av| 99国产精品视频免费观看| 天堂网av2018| 精品久久久久久国产91| 一级黄色大片免费| 亚洲精品一区二区三区蜜桃下载| 免费理论片在线观看播放老| 日韩中文av在线| 中文在线8资源库| 成人在线视频网| 亚洲成a人片77777在线播放| 91社在线播放| 日本欧美在线看| 99re久久精品国产| 中文字幕一区不卡| 五月天激情国产综合婷婷婷| 欧美一区二区三区啪啪| 九九在线视频| 国内成人精品一区| 国产精品日本一区二区三区在线 | 亚洲欧美国产精品久久久久久久 | 欧美自拍视频在线观看| 亚洲成人高清| 欧美资源一区| 99热在线精品观看| 三上悠亚 电影| 中文字幕乱码一区二区免费| 日本午夜精品理论片a级app发布| 欧美精品三级在线观看| 你懂的视频在线观看| 欧美激情在线播放| 精品视频在线观看网站| 色噜噜狠狠一区二区三区| 国产伦理一区| 亚洲中文字幕一区| 亚洲国产日韩一级| 国产成人毛毛毛片| 日韩最新在线视频| 97人人做人人爽香蕉精品| 蜜桃传媒视频麻豆第一区免费观看| 亚洲女同中文字幕| 中文字幕66页| 中文字幕免费观看一区| 销魂美女一区二区| 亚洲欧美日韩高清| 午夜影院在线播放| 精品综合在线| 中日韩视频在线观看| 超碰caoprom| 亚洲电影第三页| 蜜桃久久一区二区三区| 欧美极品少妇xxxxⅹ裸体艺术| 国产视频一区二区在线播放| 一区二区三区观看| 久久99蜜桃精品| 国产一二三区精品| 88在线观看91蜜桃国自产| 麻豆网站在线| 成人午夜在线影院| 91精品电影| 中文字幕在线视频一区二区| 亚洲男人的天堂在线aⅴ视频| 国产精品人妻一区二区三区| www.日韩系列| 国产一区二区三区亚洲综合| 潘金莲一级淫片aaaaaa播放1| 国产一区激情在线| 成人免费毛片东京热| 日韩欧美一区在线| 男人添女人下部高潮视频在线观看| 不卡视频一区二区| 99精品国产一区二区青青牛奶| 99久久国产精| 在线一区二区观看| 亚洲精品承认| 91成人免费在线观看| 亚洲美女毛片| 91精品人妻一区二区三区蜜桃欧美| 日本黄色一区二区| 婷婷五月在线视频| 99re国产视频| 裸体一区二区| 手机av在线不卡| 欧美一区二区高清| 极品在线视频| 色视频一区二区三区| 国产真实乱对白精彩久久| 国产在线观看你懂的| 亚洲色图五月天| 麻豆国产一区| 美女日批免费视频| 欧美激情综合五月色丁香小说| 国产又爽又黄免费软件| 久久免费少妇高潮久久精品99| 国产精品久av福利在线观看| 无人在线观看的免费高清视频| 亚洲四区在线观看| 天天舔天天干天天操| 国产日韩欧美中文| 亚洲精品欧洲| 成人信息集中地| 亚洲精品美女在线观看| xxxxx.日韩| 青青草视频在线免费播放| 国产精品美女视频| 五月天婷婷视频| 亚洲www视频| 久久一综合视频| 欧美激情精品久久| 国产亚洲精品久久久久久牛牛| 一区二区三区四区高清视频 | 久久亚洲欧美日韩精品专区| 亚州精品视频| 波多野结衣电影免费观看| 91搞黄在线观看| 国产精品偷拍|