5月23日,36氪舉辦「顛覆·AIGC」產業發展峯會。本次峯會匯聚產業力量,共同探討企業、行業在面臨變革時的應對策略,分享思考,探索和發現產業中最具潛力的企業與最具價值的技術,在激盪的環境中探尋前行的方向。

大會上,潞晨科技創始人 、新加坡國立大學校長青年教授尤洋發表了題爲《大模型訓練的關鍵技術》的主題演講。尤洋指出,龐大的AI模型規模對模型訓練提出了挑戰,現有的硬件設備已無法滿足訓練所需的大量計算資源和儲存空間需求。爲解決上述問題,分佈式訓練技術是可用方案之一。

關於分佈式優化技術在企業級大型模型的訓練和部署中的應用,尤洋提出了三個關鍵點:高質量的數據集、計算網絡存儲的分佈式系統,以及合適的基座模型。

具體來說,尤洋認爲,企業在選擇基座模型時,如果只需考慮業務應用,則可選擇對現有的優秀開源模型進行少量的參數調整,無需過多創新;在訓練技術的選擇上,分佈式訓練面臨通信和同步兩大重要挑戰。爲此,企業可以使用分佈式存儲系統;在企業級大型模型的部署方面,保證模型的高效運行和可擴展性,以及大模型的管理和維護,例如模型更新、性能監控和故障處理等,均是企業需要關注的重點。

以下爲尤洋演講實錄(經36氪整理編輯):

大家好,很榮幸能在今天的36kr活動上與大家交流。我將在本次演講中分享關於大模型訓練過程中的關鍵技術,以及分享我們創業公司的項目。我希望通過這次演講,爲大家科普一些相關知識,並介紹企業級大模型的解決方案。

我將按照以下目錄結構進行演講。首先,我們將探討大模型時代所帶來的機遇和挑戰;其次,我們將討論由於大模型的規模龐大,我們在訓練、微調和部署過程中需要採用分佈式訓練技術;最後,我將介紹一些企業級大模型的解決方案。

讓我們先來看一下當前大規模預訓練自然語言處理(NLP)中常見的模型和結構。大多數模型的核心結構是基於Transformer的變體。Transformer主要有三種模式,即編碼器(encoder)、解碼器(decoder)以及同時包含編碼器和解碼器的Transformer模型。以將漢語翻譯成法語爲例,編碼器將輸入的每個單詞進行編碼,並提供每個單詞的語義理解。這一過程實際上是一個簡單的語義理解過程。解碼器則負責生成法語翻譯結果,編碼器和解碼器之間起到良好的隔離作用。目前最流行的模型是純解碼器模型,例如GPT,而在四五年前,最流行的是純編碼器模型,而T5則是一個同時包含編碼器和解碼器的模型。在短短几年內,各大公司和科研機構紛紛發佈了自己的大規模模型。

大模型引起了廣泛的關注,谷歌和OpenAI等公司做出了很多貢獻。國內的一些單位,如智源,也進行了一些嘗試。根據目前的規模來看,大模型的參數量已接近萬億級別,有人認爲OpenAI的GPT-4已經超過了萬億參數,儘管具體情況尚不明確。未來是否會出現千萬億參數模型還不清楚,這可能需要我們在訓練過程中使用更好的技術來提取整個模型的能力。

接下來,讓我們來看一下過去六年內的模型發展情況。橫座標表示時間,縱座標表示AI模型的參數量。從圖中可以看出,在過去的六年裏,我們的模型規模增長了數千倍。2016年,微軟的模型只有2千萬個參數,而今天的GPT-4模型參數量大約在1萬億到100萬億之間。具體而言,每18個月,這個模型的規模至少增長了40倍。從2019年到現在,每18個月模型的規模大約增長了340倍。

然而,目前的問題是我們的硬件跟不上模型的發展。以目前最流行的AI訓練軟件GPU內存增長來看,每18個月增長1.7倍。我將解釋爲什麼訓練大模型需要成這種增長速度遠遠趕不上大模型的需求。大模型的訓練需要大量的計算資源和存儲空間,而現有的硬件設備往往無法滿足這些需求。爲了解決這個問題,我們需要採用分佈式訓練技術。分佈式訓練是指將一個大模型的訓練任務劃分爲多個小任務,並在多臺計算機上同時進行訓練。通過將計算任務分佈到多個計算節點上,我們可以充分利用集羣中的計算資源,加快訓練速度。

首先,讓我們來討論訓練大型模型的第一步,即尋找適合的數據集。假設我是一名普通工程師,沒有任何資源,那麼我是否有可能訓練自己的大模型呢?答案是肯定的。在互聯網上有一些公開免費的數據集,我們可以將它們進行融合,從而幫助我們訓練一個不錯的大型模型。例如,C4、GitHub和Books等數據集都是公開的,C4包含了互聯網上的內容,GitHub是代碼數據集,Books包含各種知識類的數據,而百科則是百科類的數據。將這些公開數據集整合起來,可以爲我們自己訓練大型模型提供良好的基礎,如果我們將這些數據集訓練好,我們的模型效果至少可以達到Facebook的水平。

接下來,我們需要選擇一個基準模型,或者說我們需要有一個參照物來訓練自己的模型。我總結了國內一些大廠的大型模型,很多都受到了GPT-3的啓發,因此目前我們相對容易找到一個參照物。簡單來說,我們可以基於GPT-3的思想設計自己的模型,只要我們對這個思想比較熟悉,就可以迅速設計出自己的模型。至於訓練環節需要多少GPU、需要購買多少GPU,我們可以查閱OpenAI的公開數據。根據數據,至少需要1000個GPU。爲什麼需要這麼多GPU呢?我來做一個簡單的高中數學解釋。假設一個GPU擁有4000億個模型參數,每個參數佔用4個字節,那麼總共需要400乘以10的9次方的參數,即需要1600 GB的內存。同樣,模型的T度(Transformer的數量)和參數的大小相同,所以T度也需要1600 GB的內存。在目前的主流優化算法中,一級矩和二級矩的存儲也需要1600 GB的內存,總計6400 GB的內存。此外,我們還需要存儲許多中間結果。假設我們每次處理一個數據點,將bgst(中間結果)設爲1,假設我們將中間結果的內存最小化,那麼大約需要1600 GB的內存。因此,即使只訓練一個數據點,理論上至少需要1600 GB乘以5,即8 TB的內存。然而,這是不可能的,我們不能將bgst設爲1,也不能沒有數據,所以實際上需要海量的內存。但是每個GPU只有80 GB的內存,這就是爲什麼我們需要成百上千個GPU的原因,這是內存不足的第一個原因。

另一個重要的原因是計算能力。即使我們使用一些內存優化的方案,將模型參數和梯度存儲在服務器的磁盤內存中,這種情況下訓練速度也會非常慢。讓我們來舉一個簡單的例子,暫時不考慮GPT-3.5,假設我們使用一個非常小的模型,只有2000萬個參數,這是一個非常小的AI模型。假設我們要訓練這個模型,我們需要進行高中數學的操作次數是多少?首先,我們需要訓練模型90個epoch(遍),這意味着我們需要將數據集訓練90次。大家可以想象一下,爲了使AI學習一個東西,我們需要讓它觀察這個東西90次才能學會,這一點說明了AI未來仍然有很大的優化空間,因爲人類學習一般只需要看三四五次就可以了。每個epoch中,我們處理了130萬張圖片,每張圖片需要進行770億次操作。因此,訓練一個ResNet-50這樣的玩具級模型,我們需要進行90乘以130萬乘以770億次操作,總共需要10的18次方的操作。然後,讓我們來看一下訓練GPT-3的情況,即使是訓練一個非常小的模型,我們現在需要8個A100 GPU,大約需要100個小時。如果我們有能力將GPT-3的所有參數和梯度優化狀態都裝入一個服務器,那麼現在可能需要幾百年甚至上千年才能完成訓練。這也是爲什麼我們需要成百上千個GPU才能完成訓練的原因。

所以,爲了訓練大型模型,我們不僅需要解決內存不足的問題,還需要強大的計算基礎設施。在我的演講中,我將介紹一些關鍵的技術,這些技術是訓練和部署企業級大型模型所必需的。

在訓練大型模型時,我們需要依靠分佈式優化技術。這個流程包括四個層次:高質量的數據集、計算網絡存儲的分佈式系統,以及在更高層次上,我們需要選擇一個合適的基座模型。

在選擇模型時,如果我們只是想在自己的業務中應用它,我認爲並不需要過於創新。目前AI領域有許多開源解決方案,如LLaMA、BERT和Transformer,我們可以稍作修改,大多數情況下效果還是相當不錯的。去年10月,我有幸與OpenAI的兩位創始人進行了面對面的交流,他們使用了Transformer作爲GPT-3的基座模型,並且沒有對許多參數進行改動。谷歌也使用了Transformer作爲BERT模型的基礎,他們也沒有進行太多的參數調整。因爲Transformer的魯棒性非常好,所以在特定場景中使用它已經足夠。目前還有一些更好的模型,如GPT-3和T5,我們也可以嘗試使用它們。谷歌在2020年提出的Palm模型在提升其聊天服務方面取得了顯著的效果,這個模型有許多創新點,大家可以對它進行研究,我認爲它也是一個不錯的基座方案。

在選擇基座模型之後,我們需要考慮如何進行訓練技術的選擇。這個領域有着簡要的發展歷史。人們曾經使用參數服務器和異步優化方法進行訓練,這種方法的好處是可以隨意增加機器數量,例如100臺機器也沒有什麼問題。但是,異步優化的收斂速度較慢。現在,包括英偉達、微軟和谷歌在內的許多公司都在採用以高性能計算(HPC)爲核心的數據並行和張量並行技術。數據並行是將大量數據點分配到不同的機器上進行計算,因爲目前神經網絡的發展趨勢是向寬度發展,例如ResNet只有50層,GPT只有100層,因此更準確地說,我們現在不是在進行深度學習,而是在進行寬度學習。在數據並行和張量並行的方法中,不同的方案有不同的優勢和適用場景。

在分佈式訓練中,通信和同步是兩個重要的挑戰。由於計算節點之間需要頻繁地進行參數傳遞和同步,網絡通信的效率對於整個訓練過程至關重要。高效的通信機制可以減少訓練時間,並提高分佈式訓練的可擴展性。另一個挑戰是數據的並行化和分佈式存儲。在大規模數據集上訓練大模型時,數據的加載和傳輸可能成爲訓練的瓶頸。解決這個問題的一種方法是使用分佈式存儲系統,將數據分佈式地存儲在多個節點上,並通過高速網絡進行數據訪問。這樣可以加快數據加載的速度,提高整體的訓練效率。

除了分佈式訓練技術,企業級大模型的解決方案也是一個重要的話題。企業級大模型需要考慮模型的部署、管理和應用。如何將訓練好的大模型快速部署到生產環境中,並保證模型的高效運行和可擴展性是一個關鍵問題。此外,對於大模型的管理和維護也需要一套完整的解決方案,包括模型更新、性能監控和故障處理等。

在潞晨科技,我們專注於解決大模型訓練和應用中的挑戰。我們的公司推出了一系列的服務,其中包括完全開源的Colossal-AI技術。我們的生態系統主要包括三個方面:異構管理系統、並行技術和系統部署,可以幫助用戶快速、無縫地部署他們自己的AI模型。我們的願景是通過以幾萬美元完成GPT模型的訓練,並將微調過程降低到幾百人民幣的水平。

我們致力於爲企業提供無縫的部署和訓練體驗。根據我們公司的生態圖,ColossalAI的增長速度超過了傳統軟件,因此我們在全球擁有上千個用戶,並且星數已經達到了3萬,我們的用戶遍佈中國、美國、歐洲、印度和東南亞等地區。

在大模型時代,機遇和挑戰並存。通過合理利用分佈式訓練技術和企業級大模型解決方案,我們可以實現更快、更強大的訓練,並將大模型的應用推向新的高度。讓我們共同努力,推動大模型技術的發展,爲科學、商業和社會帶來更大的益處。

再次感謝36kr組織這次活動,謝謝大家!

整理|沈筱

相關文章