2023年11月,趨動(dòng)科技聯(lián)合創(chuàng)始人兼CTO陳飛博士,在數(shù)據(jù)中心標(biāo)準(zhǔn)大會(huì)上以《從小模型到大模型——AI時(shí)代下的數(shù)據(jù)中心建設(shè)》為題發(fā)表演講,根據(jù)演講內(nèi)容整理下文,供數(shù)據(jù)中心行業(yè)內(nèi)的廣大讀者參考。
01.?人工智能的發(fā)展和現(xiàn)狀
AI或者人工智能自1956年提出至今已有幾十年的歷史。過(guò)去的幾十年里面,人工智能的熱度經(jīng)歷了三次浪潮,第一次提出人工智能之后出現(xiàn)一些新的技術(shù),也應(yīng)用到了工業(yè)生產(chǎn)上,但是很快大家發(fā)現(xiàn)所謂的人工智能還不是那么智能,一波浪潮過(guò)去之后,大家對(duì)它的關(guān)注度也就降低了。隨著一些新技術(shù)的出現(xiàn),1979年電腦程序擊敗了當(dāng)時(shí)的世界冠軍,1997年IBM的深藍(lán)擊敗了卡斯帕羅夫,這樣標(biāo)志性事件提升了人們對(duì)人工智能的期望,人工智能迎來(lái)了一波高峰。2006年Hinton提出了深度學(xué)習(xí)的概念,標(biāo)志著第三次人工智能發(fā)展的浪潮。
第三次人工智能浪潮開始后,有很多新的算法出現(xiàn),同時(shí)有GPU這樣的硬件支撐這類算法。據(jù)統(tǒng)計(jì),2012年至今,我們對(duì)算力的需求漲了30萬(wàn)倍。這么多的算力需求都消耗在哪了?大量消耗在模型算法本身的快速發(fā)展。上圖是國(guó)外的一個(gè)網(wǎng)站,他們自動(dòng)統(tǒng)計(jì)了一些公開的模型的大小,圖左上角很小的一個(gè)點(diǎn)是BERT,它在兩三年前小模型時(shí)代還是比較重量級(jí)別的模型,到現(xiàn)在圖里幾乎已經(jīng)看不到了。2012年標(biāo)志性的深度學(xué)習(xí)模型Alexnet(百萬(wàn)參數(shù))到2023年 LLaMa,是2800倍的模型的增長(zhǎng),模型的增長(zhǎng)意味著算力的消耗增長(zhǎng)。
上圖是一個(gè)Alexnet很小的內(nèi)部結(jié)構(gòu)圖,Alexnet相對(duì)今天來(lái)說(shuō)是一個(gè)非常小的模型,它為什么叫深度學(xué)習(xí)呢?它的模型是分層的,一層一層,最左邊這層,給大家打一個(gè)比喻,它就是一幅圖片,我們都知道它是二維的像素點(diǎn),寬和高,像素點(diǎn)就是一些數(shù)值,最黑就是0,最亮就是255,這個(gè)是它的一層。一層進(jìn)來(lái)了之后,它要和一個(gè)模型的參數(shù)進(jìn)行數(shù)學(xué)運(yùn)算,從一個(gè)二維的圖象經(jīng)過(guò)數(shù)學(xué)運(yùn)算數(shù)學(xué)變換之后變成一個(gè)三維的立體,從數(shù)據(jù)的表達(dá)上是個(gè)三維的立體,一層一層的去運(yùn)算,每一層的運(yùn)算都不一樣,有做卷積的,有求最大值的,有求最小值的,一層一層下來(lái)最后得出一個(gè)結(jié)果,這個(gè)結(jié)果就是給這個(gè)圖片做一個(gè)分類,是貓還是狗,這就是一個(gè)模型。深度學(xué)習(xí)就是這個(gè)意思,一層歸一層。Alexnet是8層的小模型,后面在小模型時(shí)代還有ResNet50,具有50層,ResNet 152,有152層,每一層的增加以及每一層規(guī)模的大小背后都意味著巨大的算力的消耗。
GPT模型結(jié)構(gòu)有可能不一樣,比喻成初期的小模型,那都是千層級(jí)別,所以深度學(xué)習(xí)的模型消耗著巨大的算力,大家為什么熱衷于增大模型?,過(guò)去的時(shí)候?qū)W術(shù)界里有一個(gè)結(jié)論,他們認(rèn)為有個(gè)縮放定律,這個(gè)縮放定律就是當(dāng)這個(gè)模型的尺寸呈指數(shù)增長(zhǎng)的時(shí)候性能呈線性增長(zhǎng),性能不是指運(yùn)算的速度,在人工智能領(lǐng)域里面性能指的是模型的質(zhì)量,比如識(shí)別圖象的精確率,如果是大語(yǔ)言模型的話就是它生成的內(nèi)容的質(zhì)量,這個(gè)性能會(huì)隨之線性增長(zhǎng),這個(gè)規(guī)律其實(shí)是挺悲觀的規(guī)律,因?yàn)槟P褪侵笖?shù)性增長(zhǎng)換來(lái)的才是性能的線性增長(zhǎng),意味著我們有可能對(duì)這個(gè)模型背后算力的需求要消耗非常非常大,之前估計(jì)大到整個(gè)太陽(yáng)的能量都提供給一個(gè)模型都不足以產(chǎn)生具有人一樣的智能的模型出來(lái)。
如果落地到一些具體小的應(yīng)用,具體的場(chǎng)景里面還是有非常好的效果的,像人臉的識(shí)別,精確度非常高。
以前一般都通過(guò)精調(diào)來(lái)提高模型的性能,比如改變數(shù)據(jù)集,人工做更好的標(biāo)注,提高更高質(zhì)量的數(shù)據(jù)集,讓模型的性能越來(lái)越好,對(duì)模型做變種,比如覺得ResNet 50不夠,用ResNet 152,大模型和以前很不一樣的是大模型都是要有提示詞的,提示詞在小模型時(shí)代已經(jīng)出現(xiàn)了,但這個(gè)技術(shù)比起人工標(biāo)注數(shù)據(jù)的方式效果并不好,小模型的時(shí)候離人工精調(diào)一個(gè)模型得到的性能差別非常遠(yuǎn),所以在那個(gè)時(shí)候提示詞并沒有成為人工智能的主流,并且當(dāng)時(shí)人們認(rèn)為基于提示詞這種比較簡(jiǎn)單的模型訓(xùn)練的方法要到模型非常大的時(shí)候才能媲美一個(gè)很小的模型,比如要在100B的參數(shù)的模型下面,它的性能和0.1B的小模型相媲美,那時(shí)候不成為主流。
為什么突然大模型出現(xiàn)了?2022年一篇來(lái)自谷歌的文章向技術(shù)領(lǐng)域公開了思維鏈的技術(shù),簡(jiǎn)單的說(shuō)以前人工智能訓(xùn)練一個(gè)模型是給一個(gè)數(shù)據(jù)并且人工告訴它關(guān)于這個(gè)數(shù)據(jù)的結(jié)果。但是在思維鏈的訓(xùn)練模型下面,它會(huì)像人教學(xué)生一樣一步一步的推到這個(gè)結(jié)果是怎么得到的,這種思維鏈的產(chǎn)生出現(xiàn)了讓科學(xué)家們意料不到的現(xiàn)象,這個(gè)現(xiàn)象叫涌現(xiàn),意思就是當(dāng)模型大到一定程度之后使用思維鏈的訓(xùn)練方式會(huì)引起相變或者突變,它不再是我們以前預(yù)期的平緩的上升,而是突然有一個(gè)飛躍的發(fā)展。這種思維鏈用在小模型的時(shí)候是不生效的,但是用在模型參數(shù)大概10Billion的時(shí)候會(huì)生效,并且得到的性能比以前精調(diào)的方式有了本質(zhì)的差異。所以我們說(shuō)什么是小模型和什么是大模型,一個(gè)特征就是是否會(huì)在模型變得足夠大的時(shí)候有涌現(xiàn)的現(xiàn)象出現(xiàn),如果沒有的話,它的模型參數(shù)再大,我們還是認(rèn)為它是小模型,雖然說(shuō)它對(duì)算力的消耗也是巨大的。正因?yàn)橛辛擞楷F(xiàn)的現(xiàn)象出現(xiàn),大家對(duì)人工智能的期望再次被拔高了,現(xiàn)在大家都在討論大模型。
02.?企業(yè)人工智能的開發(fā)和生產(chǎn)
小模型和大模型在硬件方面的一些需求上的差異:小模型在V100的時(shí)候甚至更小,比V100等同算力的硬件下面已經(jīng)工作的非常好,比如早些年小模型的訓(xùn)練各個(gè)廠家打榜用1024個(gè)V100多快的時(shí)間訓(xùn)練,在時(shí)間的生產(chǎn)里面一般都在一個(gè)節(jié)點(diǎn)8個(gè)V100下面訓(xùn)練幾天就可以訓(xùn)練出來(lái),這是個(gè)小模型。當(dāng)時(shí)以比較好的硬件單個(gè)節(jié)點(diǎn)做訓(xùn)練是完全可接受的,也是實(shí)踐中比較常用的。如果在線推理的話,一個(gè)卡都用不滿,連一個(gè)只有V100幾分之一性能的T4都綽綽有余,這是小模型的時(shí)候。大模型對(duì)硬件的要求就變得高得多了,現(xiàn)在大模型還是發(fā)展的階段,大模型和大模型之間的大小差異也非常大,也有百倍的差異,有10個(gè)Billion的也有上百個(gè)Billion,對(duì)硬件的需求差異比較大。我們和比較多的公司或產(chǎn)業(yè)有過(guò)合作,我們看到的更多的是百這個(gè)量級(jí),H100或H800或者A100、A00,100還是200還是512,這是比較常見的。如果是ChatGPT的模型的話,根據(jù)爆料應(yīng)該是萬(wàn)這個(gè)級(jí)別,這是做訓(xùn)練。做推理,現(xiàn)在單個(gè)節(jié)點(diǎn)一般來(lái)說(shuō)都是夠的,不管什么模型,更常見的單個(gè)卡也已經(jīng)夠了,畢竟現(xiàn)在的硬件性能也已經(jīng)比之前有一個(gè)飛躍的發(fā)展。
大模型是不是意味著一定是幾百個(gè)卡才能完成的任務(wù)呢?不是,大模型里面訓(xùn)練也分為預(yù)訓(xùn)練和微調(diào),預(yù)訓(xùn)練用卡比較多,比如GLM130B的模型要2000多個(gè)A100,訓(xùn)練一個(gè)月到幾個(gè)月之間,不同的模型不一樣,這個(gè)預(yù)訓(xùn)練模型是消耗算力比較大的。但是對(duì)于微調(diào)來(lái)說(shuō),對(duì)于資源的消耗小很多,比如基于一個(gè)開源的LLaMa模型進(jìn)行一些微調(diào),一個(gè)配置比較高的單節(jié)點(diǎn)是可以完成的,時(shí)間長(zhǎng)一點(diǎn)而已,如果是更小的模型,單卡都是可以完成微調(diào)的?,F(xiàn)在大家也會(huì)發(fā)現(xiàn)他們會(huì)通過(guò)一些技術(shù)減少模型的大小,通過(guò)量化的手段通過(guò)剪枝的手段,不斷的把大模型裁小。對(duì)推理來(lái)說(shuō),大部分情況下一個(gè)卡是足夠的,我們收集到了模型使用的資源情況,比如剛才說(shuō)的LLaMa2,如果是7B的模型的話,它對(duì)顯存的占用也就是28個(gè)G,以現(xiàn)在的中高端的GPU來(lái)說(shuō)就算是一個(gè)不大的消耗了,單卡都能完成,半個(gè)卡都已經(jīng)足夠了。百川13B的或7B的都是單卡就可以完成了,它對(duì)顯存的占用并沒有那么高,能把顯存縮下來(lái)用了很多技術(shù)。
一個(gè)企業(yè)要開展人工智能的開發(fā)需要什么樣的條件,它要考慮哪個(gè)方面的事情,這是影響數(shù)據(jù)中心建設(shè)的一個(gè)重要因素。所以這里面講到的數(shù)據(jù)中心的建設(shè),包括一些企業(yè)部署他內(nèi)部使用的私有的環(huán)境,也有一些會(huì)把數(shù)據(jù)中心貢獻(xiàn)給到第三方貢獻(xiàn)到外部去使用的情況。對(duì)于所有數(shù)據(jù)中心建設(shè)來(lái)說(shuō)都是用戶的需求驅(qū)動(dòng)的,這是比較常見的一個(gè)企業(yè)要開展人工智能方面的開發(fā)和生產(chǎn)他們需要的一些事情,當(dāng)然首先要有硬件,其次在管理這個(gè)平臺(tái)上面因?yàn)樗鲇?xùn)練,他要做推理,而且推理的任務(wù)不是一個(gè)而是多個(gè),他一定會(huì)有一個(gè)平臺(tái)?,F(xiàn)在80%以上的客戶都是基于Kubernetes管的,和超算不一樣,超算用Slurm,人工智能用Kubernetes是比較通用的,這是一個(gè)平臺(tái)能夠讓任務(wù)分發(fā)到我們的硬件上面去運(yùn)行,在上面不同的模型不同的算法要基于一些框架,這些框架在開源界有PyTorch、TensorFlow等,隨著國(guó)產(chǎn)化的需求以及國(guó)內(nèi)科技的進(jìn)步,百度主導(dǎo)的PaddlePaddle,它是開源的,華為的MindSpore比PaddlePaddle晚一點(diǎn)。這是不管是開源、學(xué)術(shù)還是企業(yè)用的比較多的框架。
在數(shù)據(jù)中心建設(shè)里面仍然要考慮的是人工智能背后的負(fù)載究竟是什么。對(duì)于訓(xùn)練來(lái)說(shuō),一個(gè)分布式訓(xùn)練,一般說(shuō)來(lái)都是多卡,如果是大模型還是多節(jié)點(diǎn)也就是分布式,我們知道數(shù)據(jù)中心建設(shè),網(wǎng)絡(luò)是一個(gè)非常關(guān)鍵的因素,我們考慮算法或者模型在訓(xùn)練過(guò)程中對(duì)網(wǎng)絡(luò)的沖擊是怎么樣的,它分好幾層,卡和卡之間的交換如果是英偉達(dá)有NVLink,點(diǎn)對(duì)點(diǎn)的傳輸,如果對(duì)于沒有NVLink的來(lái)說(shuō),也有基于PCIE Swich的協(xié)議,可以完成卡到卡的通訊,對(duì)CPU的負(fù)載比較低,只在節(jié)點(diǎn)內(nèi)完成,只要在硬件配置或者服務(wù)器的采購(gòu)定制上面做好就行。如果是服務(wù)器和服務(wù)器之間的訓(xùn)練來(lái)說(shuō),RDMA幾乎是必備的,沒了它性能會(huì)慢到不可接受,所以每個(gè)節(jié)點(diǎn)上都會(huì)有配IDMA。而現(xiàn)在以英偉達(dá)為例的這種卡都支持GPU Direct,GPU和GPU之間的通訊不過(guò)CPU,它通過(guò)底層的硬件技術(shù)和驅(qū)動(dòng)的配置,數(shù)據(jù)可以從一個(gè)GPU卡直接通過(guò)PCIE Swich到RDMA卡到另一個(gè)節(jié)點(diǎn)的RDMA卡直接灌到GPU上去,完成數(shù)據(jù)的交換。訓(xùn)練的時(shí)候要有數(shù)據(jù),AI的數(shù)據(jù)以讀為多,寫的少,一個(gè)典型得用法就是通過(guò)網(wǎng)絡(luò)的存儲(chǔ)方案配合本地的高速緩存,當(dāng)然本地的高速緩存需要平臺(tái)需要框架支持使用,一般來(lái)說(shuō)會(huì)用高速的SSD作為緩存。
在線推理對(duì)于硬件的需求就少多了,大家會(huì)特別關(guān)心一個(gè)推理的性能嗎,不一定,一個(gè)在線的推理服務(wù)對(duì)端到端的性能有很多方面的影響,終端是手機(jī)到達(dá)數(shù)據(jù)中心或者到達(dá)企業(yè)的網(wǎng)關(guān)本身就有幾十毫秒的延遲,里面為什么寫了幾十秒呢,指的是得到一個(gè)業(yè)務(wù)的返回,以GPT為例,發(fā)一幅圖片給它,它把結(jié)果給我,人可以接受的延遲最長(zhǎng)可以長(zhǎng)到幾十秒,如果是刷人臉的話,人可以接受的延遲大概是500毫秒到1秒。落到GPU運(yùn)算或者AI運(yùn)算,這個(gè)延遲在整個(gè)通路里面占小頭,尤其在以前小模型里面它占小頭,在以前小模型的時(shí)候我們聽到的業(yè)務(wù)需求是幾百個(gè)毫秒到1秒它都可以接受,這個(gè)時(shí)候用來(lái)做推理的延遲一般才10個(gè)毫秒到小于100個(gè)毫秒,這個(gè)時(shí)候我們的算力低一點(diǎn)在小模型時(shí)代并不會(huì)影響端到端的服務(wù)質(zhì)量,如果我們要做數(shù)據(jù)中心建設(shè)的話我們一定要考慮上面的推理服務(wù)究竟是什么類型的。
一個(gè)企業(yè)開展人工智能生產(chǎn)流程有很多環(huán)節(jié),如果我們要做開發(fā)而不是采購(gòu)第三方的模型的話,我們涉及到的采購(gòu)就會(huì)比較多,我們要去采購(gòu)部署,要有相關(guān)的運(yùn)維,運(yùn)維只能解決硬件故障的問題,剛才說(shuō)的平臺(tái)層、框架層,還要由更上一層的團(tuán)隊(duì)去支持。對(duì)數(shù)據(jù)中心來(lái)說(shuō)我們要滿足很多合規(guī)的要求,我們要知道GPU卡的故障率非常高,如果是消費(fèi)級(jí)的卡甚至還有起火的案例,在整個(gè)過(guò)程中我們要考慮的是各個(gè)部門對(duì)于GPU集群使用的需求是什么,它要求有的部門做訓(xùn)練,有的是推理的,他們是否要求獨(dú)占不同的資源,這也都是我們要考慮到的。
03.?面向人工智能的數(shù)據(jù)中心建設(shè)
根據(jù)我們對(duì)行業(yè)的觀察,我們發(fā)現(xiàn)有一些數(shù)據(jù)中心在使用GPU時(shí)候的挑戰(zhàn):
一是利用率。由于各種環(huán)節(jié)它都有損耗,導(dǎo)致最后GPU的實(shí)際利用率只有20%-30%,這是Facebook公開的一個(gè)數(shù)據(jù),他們對(duì)GPU平均的實(shí)際的利用率只有10%-30%,每個(gè)環(huán)節(jié)都有可能引起它的損耗。
二、GPU碎片。這是引起損耗的一個(gè)重要因素,即使是百卡甚至千卡的分布式的大模型的訓(xùn)練,也由于算法本身的特征,它并不是每個(gè)節(jié)點(diǎn)的每個(gè)卡都被100%使用的。我們觀察到的是大概有50%在大模型的訓(xùn)練里面而且是一個(gè)不大的規(guī)模,百這個(gè)級(jí)別只有50%的GPU在100%被使用,還有50%經(jīng)常會(huì)空閑,當(dāng)然它不是靜態(tài)的,它是變化的過(guò)程。如果規(guī)模更大,比如GPT以萬(wàn)為級(jí)別的訓(xùn)練,根據(jù)他們公開的數(shù)據(jù)也只有30%的GPU利用率,以及每個(gè)節(jié)點(diǎn)也會(huì)出現(xiàn)有的卡被用滿,有的卡沒有被用上,這是GPU碎片。
三、功耗碳排放。不同模型的碳排放的指標(biāo)是非常高的,像訓(xùn)練一個(gè)BLOOM模型,30噸的二氧化碳的排放,一個(gè)GPT3 552噸的碳排放。
訓(xùn)練和推理的需求非常不一樣,小模型和大模型對(duì)硬件的需求也是非常有差異,管理異構(gòu)的硬件配置對(duì)于數(shù)據(jù)中心的運(yùn)維來(lái)說(shuō)是非常大的挑戰(zhàn)。要解決這些問題,業(yè)內(nèi)曾經(jīng)給過(guò)一個(gè)很通用的方案,像存儲(chǔ),我們之前用磁盤也遇到過(guò)類似的問題,磁盤的碎片怎么解決的呢?把磁盤變成一個(gè)分布式的存儲(chǔ),這樣的話應(yīng)用在使用存儲(chǔ)的時(shí)候從來(lái)不用關(guān)心我使用的磁盤是本地磁盤還是別的節(jié)點(diǎn)的磁盤,只要我整個(gè)機(jī)群里面的磁盤還有冗余,我的應(yīng)用就可以使用,GPU之所以有這些缺點(diǎn),因?yàn)樗F(xiàn)在還不具備這個(gè)特征,對(duì)于我們公司來(lái)說(shuō)使用的軟件就是讓GPU一個(gè)一個(gè)獨(dú)立的GPU卡就像當(dāng)初一個(gè)一個(gè)獨(dú)立的磁盤一樣,能夠把它聚合起來(lái),在數(shù)據(jù)中心里面通過(guò)網(wǎng)絡(luò),對(duì)于應(yīng)用來(lái)說(shuō)它呈現(xiàn)的是一個(gè)最基本的算力,已經(jīng)被還原成算力了,而不是一個(gè)一個(gè)的卡,這個(gè)時(shí)候只要我這個(gè)數(shù)據(jù)中心還有一張卡空閑,我的業(yè)務(wù)不管在數(shù)據(jù)中心的哪個(gè)節(jié)點(diǎn),我都仍然可以使用這個(gè)卡的算力進(jìn)行人工智能的計(jì)算,它可以解決負(fù)載不均衡、碎片等等的產(chǎn)生。
通過(guò)這個(gè)方案解決企業(yè)在AI開發(fā)和生產(chǎn)過(guò)程中各個(gè)階段的痛點(diǎn)問題,像預(yù)訓(xùn)練、最后的上線,我們都提供了不同的支撐,比如雙資源池可以讓訓(xùn)練的性能更快,最后的顯存和算力的超分支持熱遷移,支持它最后業(yè)務(wù)的上線和生產(chǎn)。
04.?思考和展望
最后有幾個(gè)思考,可以幫助我們提高GPU在數(shù)據(jù)中心中的利用率,尤其是對(duì)于一些私有化部署來(lái)說(shuō):
1、統(tǒng)一資源管理
越大的AI算力資源池效率越高 ? ? ? ?
2、開發(fā)、訓(xùn)練、推理混合部署
通過(guò)不同大小的任務(wù)調(diào)度提高利用率
通過(guò)不同延遲敏感性的任務(wù)調(diào)度提高利用率
通過(guò)不同優(yōu)先級(jí)的任務(wù)調(diào)度提高利用率 ? ? ?
3、通過(guò)提高運(yùn)維的手段,GPU出現(xiàn)故障的時(shí)候能夠快速把它隔離出去,能夠把業(yè)務(wù)遷移走,減少對(duì)業(yè)務(wù)的沖擊。
審核編輯:黃飛
?
評(píng)論
查看更多