精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

女人让男人操自己视频在线观看| 亚洲欧美另类中文字幕| 麻豆av一区二区三区| 可以看毛片的网址| 杨幂一区二区国产精品| 91九色国产在线播放| 久久久久久久久久久久久久久99 | 丝袜国产日韩另类美女| 精品国产一区二区三区久久狼黑人 | 亚洲国产一二三精品无码| 亚洲区小说区图片区| 久久国产精品99久久人人澡| 国模吧一区二区三区| 99热99这里只有精品| 天堂网av成人| 欧美一区二区观看视频| 成人三级视频在线播放| 永久免费网站在线| 在线中文字日产幕| 国产精品无码一区二区桃花视频| 好看的日韩av电影| 国产91丝袜在线播放九色| 欧美在线一区二区三区四| 日韩欧美123区| 国产污片在线观看| 久草成人在线| 亚洲精品一区二区三区蜜桃下载 | 久久久久九九九| www.久久成人| 精品一区二区三区免费视频| 88国产精品欧美一区二区三区| 91在线播放观看| 色综合狠狠操| 亚洲天堂开心观看| 熟妇高潮精品一区二区三区| 成人黄色av网址| 欧美一级午夜免费电影| 高潮一区二区三区| 精品国产美女a久久9999| 色视频欧美一区二区三区| 日本xxxxxxxxxx75| 国产精品69xx| 曰韩精品一区二区| av动漫在线播放| 91黄色在线| 一区二区在线观看免费| 狠狠精品干练久久久无码中文字幕| 9色在线观看| 久久精品水蜜桃av综合天堂| 久久综合伊人77777麻豆| 天天操天天操天天操| 韩国一区二区三区| 91在线播放国产| 国产精品污视频| 精品一区二区成人精品| 91久久精品国产91久久| 国产精品久久久久久久久毛片| 老司机精品视频一区二区三区| 国产精品丝袜久久久久久高清 | 欧美日韩一区二区三区在线视频| 亚州av在线播放| 久久只精品国产| 欧美日韩高清免费| 成a人片在线观看www视频| 国产片一区二区三区| 婷婷精品国产一区二区三区日韩 | 伊人精品一区| 国产午夜精品全部视频在线播放| 久久亚洲AV无码专区成人国产| 激情婷婷综合| 久久韩国免费视频| a级片在线观看免费| 激情综合久久| 日韩美女视频免费看| 波多野结衣视频免费观看| 蜜臀91精品一区二区三区| 成人欧美一区二区三区在线| 亚洲黄色a级片| 99精品国产91久久久久久| 免费在线一区二区| 91吃瓜网在线观看| 一区二区三区四区乱视频| 黄色大片在线免费看| 成人自拍av| 337p亚洲精品色噜噜噜| 九九九九九国产| 精品深夜福利视频| 中国china体内裑精亚洲片| 精品无码久久久久成人漫画| 亚洲国产影院| 国产精自产拍久久久久久| 成人av一区二区三区在线观看| 波多野结衣精品在线| 欧洲一区二区日韩在线视频观看免费| 秋霞影院午夜丰满少妇在线视频| 一区二区三区四区精品在线视频| 成人毛片视频网站| 色综合.com| 日韩精品在线观看视频| 中国毛片直接看| 欧美资源在线| av蓝导航精品导航| 国产理论电影在线观看| 亚洲国产综合在线| 欧美午夜aaaaaa免费视频| 国产精品2023| 久久精品国产亚洲精品2020| 97超碰人人干| 国产精品一区一区三区| 日韩资源av在线| 白浆在线视频| 欧美成人一区二区| 国产精品久久久免费看| 久久久久久黄| 狠狠色噜噜狠狠狠狠色吗综合| 麻豆传媒在线免费看| 色婷婷综合久色| 久久久久久久久久影视| 久久蜜桃av| 国产成人精品久久久| 噜噜噜久久,亚洲精品国产品| 国产精品素人一区二区| 久久久精品在线视频| 成人爽a毛片免费啪啪红桃视频| 久久精品国产久精国产一老狼| 天天干天天色综合| 91视频精品在这里| 美女扒开大腿让男人桶| 日韩区一区二| 久久亚洲影音av资源网 | 日韩欧美黄色影院| 三级影片在线看| 另类成人小视频在线| 日韩资源av在线| 男人皇宫亚洲男人2020| 精品亚洲国产视频| 亚洲 欧美 日韩 综合| 成人av在线资源| 无码人妻少妇伦在线电影| 伊人久久亚洲| 精品中文字幕在线| www.黄色小说.com| 一区二区三区影院| 风韵丰满熟妇啪啪区老熟熟女| 欧美在线视屏| 91免费观看| 三级资源在线| 欧美精品一区二区蜜臀亚洲| 国产亚洲精品久久久久久无几年桃 | 欧美视频在线一区二区三区 | 在线国产亚洲欧美| 丁香激情五月少妇| 麻豆精品国产传媒mv男同| 亚洲视频在线观看日本a| 国产福利91精品一区二区| 中文字幕九色91在线| 夜夜嗨av禁果av粉嫩avhd| 一区免费观看视频| 亚洲综合在线一区二区| 欧美日本久久| 国产一区视频观看| 在线成人av观看| 国产亚洲成精品久久| 少妇一级淫片日本| 亚洲视频小说图片| 潘金莲一级淫片aaaaa| 亚洲国产高清一区| 欧美日韩精品一区| 亚洲精品大片| 欧美大片免费观看| 日韩精品视频在线观看一区二区三区| 欧美性猛交xxxx偷拍洗澡| 免费视频91蜜桃| 国产呦精品一区二区三区网站| 天天想你在线观看完整版电影免费| 国产成人高清精品免费5388| 欧美一性一乱一交一视频| 1024国产在线| 欧美成人vps| 性色av免费观看| 国产精品成人免费在线| 欧美xxxx日本和非洲| 久久综合婷婷| 日韩视频一二三| 麻豆一区一区三区四区| 国产精品嫩草影院久久久| 污污片在线免费视频| 日韩av在线直播| 在线黄色av网站| 亚洲国产日韩精品| 国产视频三区四区| 国产成人精品网址| 日本三区在线观看| 欧美日韩在线大尺度| 日本不卡二区| 91欧美日韩在线| 国产精品爽爽ⅴa在线观看| 爱啪啪综合导航| 久久久精品一区二区三区| 偷拍自拍在线| 欧美一级二级三级蜜桃| 最近免费中文字幕大全免费版视频| 亚洲欧美日韩国产综合在线 | 国产精品久久久久四虎| 六十路息与子猛烈交尾| 九色|91porny| 亚洲人成无码www久久久| 国内精品美女在线观看| 在线观看福利一区| 国产精品亚洲人成在99www| 不卡视频一区二区三区| 日韩色性视频| 日韩美女视频在线观看| 高清在线视频不卡| 欧美日韩xxxxx| 黄a在线观看| 亚洲精品网站在线播放gif| 成人午夜免费福利| 欧美一区二区美女| 一卡二卡在线视频| 欧美亚洲综合在线| 国产精品乱子伦| 亚洲第一久久影院| 懂色av懂色av粉嫩av| 日韩理论片在线| 亚洲精品天堂网| 欧美国产丝袜视频| 国产在线观看h| 久久久噜噜噜久久人人看| 99久久久无码国产精品性波多| 极品少妇xxxx精品少妇偷拍| 日韩av片网站| 日韩激情一二三区| 岳毛多又紧做起爽| 亚洲综合日本| 国产成人无码a区在线观看视频| 欧美日韩爆操| 奇米777四色影视在线看| 91精品一区二区三区综合在线爱| 一区二区在线中文字幕电影视频| 欧美日韩在线二区| 日韩三级电影网站| 日韩精品dvd| 一区二区三区四区视频在线观看| 成人久久久久| 亚洲欧洲另类精品久久综合| 日韩精品免费一区二区三区| 亚洲免费视频一区| 99精品综合| 五月天激情图片| 亚洲午夜一区| 高清在线观看免费| 久久欧美肥婆一二区| 爱情岛论坛vip永久入口| 免费欧美在线视频| 91国内在线播放| 国产乱码字幕精品高清av| 亚洲一级Av无码毛片久久精品| 成人福利视频在线| ass精品国模裸体欣赏pics| 久久日一线二线三线suv| 日本精品在线观看视频| 中文字幕一区在线观看| 久草视频在线免费看| 黑人巨大精品欧美一区二区三区| 天天干天天操天天爱| 欧美亚洲高清一区| 国内精品国产成人国产三级| 亚洲成年人在线| 九色视频在线观看免费播放| 久久精品91久久香蕉加勒比| 午夜小视频在线观看| 777精品视频| 欧美va在线观看| 亚洲精品日韩av| 鲁大师精品99久久久| 日韩精品av一区二区三区| 亚洲成人一区| 男人操女人逼免费视频| 免费欧美日韩国产三级电影| 日韩精品xxx| 国产亚洲一区二区三区四区| 日韩在线不卡av| 偷偷要91色婷婷| 怡红院男人天堂| 亚洲电影第1页| av福利在线播放| 久久人人97超碰精品888| av久久网站| 国产日韩精品推荐| 99精品视频精品精品视频| 国产av天堂无码一区二区三区| 日本午夜精品一区二区三区电影| 潘金莲一级淫片aaaaa| 欧美国产综合色视频| 精品少妇theporn| 欧美色图第一页| 日日夜夜精品免费| 久久久国产精品视频| 一二三四视频在线中文| 91av免费看| 欧美午夜精品一区二区三区电影| 九九热只有这里有精品| 久久电影网站中文字幕| 黄色正能量网站| 一区二区三区在线不卡| 亚洲一级av毛片| 精品亚洲aⅴ在线观看| 青春草免费在线视频| 国产欧美 在线欧美| 自拍偷拍一区| 欧美精品自拍视频| 国产九色精品成人porny| 亚洲色图第四色| 欧美丝袜美女中出在线| 黄色一级a毛片| 美日韩精品免费观看视频| 国产精品久久久久久吹潮| 久久免费99精品久久久久久| 亚洲人成免费| jjzz黄色片| 亚洲男人的天堂在线aⅴ视频| 国产男人搡女人免费视频| 日韩av在线最新| 黄色污网站在线观看| 懂色一区二区三区av片| 影视一区二区| 伊人精品视频在线观看| 中文字幕精品—区二区四季| www.亚洲激情| 夜夜躁日日躁狠狠久久88av | 国产综合在线观看视频| 国产a久久精品一区二区三区| 日本www在线视频| aaa亚洲精品| 久久9999久久免费精品国产| 欧美成人性福生活免费看| 羞羞网站在线免费观看| 亚洲自拍偷拍在线| 欧美久久综合| 色哟哟无码精品一区二区三区| 一区二区日韩电影| 亚洲精品无遮挡| 国内偷自视频区视频综合| 好吊妞视频这里有精品| 91国视频在线| 久久精子c满五个校花| 中文字幕一区在线播放| 国产一区二区成人| 素人啪啪色综合| 一区二区免费电影| 国产一本一道久久香蕉| 强乱中文字幕av一区乱码| 精品少妇一区二区三区视频免付费 | 日韩av毛片网| 日韩精品dvd| 久久久久亚洲av片无码v| 亚洲一区在线免费观看| 婷婷视频在线观看| 国产91在线播放九色快色| 欧美肉体xxxx裸体137大胆| 在线观看免费视频高清游戏推荐| 亚洲色图丝袜美腿| 性猛交xxxx乱大交孕妇印度| 午夜免费日韩视频| 蜜桃a∨噜噜一区二区三区| 色噜噜狠狠一区二区| 亚洲精品免费在线观看| 午夜精品久久久久久久99老熟妇| 97人人模人人爽人人喊中文字| 一本久久青青| 亚洲黄色片免费看| 午夜av电影一区| caoporn国产精品免费视频| 91免费高清视频| 亚洲深夜激情| 美国美女黄色片| 欧美v日韩v国产v| 亚洲少妇视频| 亚洲小说欧美另类激情| www.日韩大片| 亚洲影视一区二区| 久久久久久综合网天天| 精品视频网站| 粗大的内捧猛烈进出视频| 欧美最猛黑人xxxxx猛交| 182tv在线播放| 欧美亚洲丝袜| 国产原创一区二区三区| 无码人妻一区二区三区免费| 操日韩av在线电影| 中文有码一区| 古装做爰无遮挡三级聊斋艳谭| 丰满岳妇乱一区二区三区| 久操免费在线| 欧美一区视久久| 本田岬高潮一区二区三区| 色婷婷久久综合中文久久蜜桃av| 欧美富婆性猛交| 天天做天天爱综合|