close

公眾號關注「GitHubDaily」

設為「星標」,每天帶你逛 GitHub!

大家好,我是小 G。

提起大模型,除了各種驚艷的性能表現,還伴隨着高昂的硬件要求和運行成本,將絕大多數 AI 社區成員都拒之門外。

得益於開源社區的蓬勃發展,現在情況大有不同:

無需註冊,就可以免費白嫖 1750 億參數的 OPT 模型!

還不快打開下方鏈接,自己上手在線體驗一下?

雲服務體驗地址:https://service.colossalai.org/

快速體驗

基於 1750 億參數 OPT 大模型,該網站支持多種文本生成任務,包括事實問答、聊天機器人、翻譯、文章創作等。

只需點擊對應的子任務名,如文章創作,輸入需要的對應內容,點擊右下方的藍色生成按鈕,稍等就能得到結果。

背後技術

OPT-175B

要想了解剛剛體驗的大模型推理的技術原理,首先,讓我們先回顧一下剛才所用到的大模型。

OPT 的全稱為 Open Pretrained Transformer,是 Meta (Facebook) AI 實驗室發布的對標 GPT-3 的大規模 Transformer 模型,共有 1750 億個參數。

與 OpenAI 尚未公開模型權重的 GPT-3 相比,Meta AI 慷慨地開源了所有的代碼以及模型權重,極大推動了 AI 大模型落地與應用,每一位開發者都能以此為基礎開發個性化的下游任務。

然而 GPT-3、OPT-175B、AlphaFold 等前沿 AI 大模型遠超現有硬件容納能力,訓練和部署推理服務都必須使用複雜專業的分布式技術。現有系統大都存在上手門檻高、運行效率不高、通用性差、部署困難、缺乏維護等問題。

面對這一痛點,面向大模型時代的通用深度學習系統 Colossal-AI,僅需幾行代碼,便能高效快速部署 AI 大模型訓練和推理,促進 AI 大模型低成本應用和落地。

使用開源 Colossal-AI 快速部署 AI 大模型雲服務

OPT 雲服務

此次 OPT-175B 超大模型部署的快速上線,依託 AI 大模型開源解決方案 Colossal-AI 生態,只需少量改動,即可完成大模型雲端並行部署。

從無法運行到快速啟動:

運行超大模型首當其衝的問題是單個 GPU 顯存無法容納巨量的模型參數,而推理問題不僅僅要考慮吞吐量還要考慮時延,因此使用並行來解決這個問題是一種直觀的思路,藉助 Colossal-AI 生態可以輕鬆將一個單機模型轉換成並行運行。Colossal-AI 生態提供眾多可以參考應用實例,如 GPT、OPT、BERT、PaLM、AlphaFold 等。

獲得並行 OPT 模型之後,下一步要處理的是參數加載。Colossal-AI 生態也提供了並行模型參數加載的解決方案,用戶只需要參考樣例簡單提供參數名映射關係即可完成模型參數的加載,最後將模型投入到 Colossal-AI 生態提供的推理引擎中,設置相應的超參數。截至此刻,大模型 OPT 主幹網絡的推理服務就可以上線並能輸出有意義的結果。

從成功啟動到高效部署:

在跨越了內存牆問題、並行參數加載等重重阻礙,成功運行了並行主幹網絡後,為了進一步提高推理性能,Colossal-AI 還提供了多個面向生成式任務的優化,可實現數十倍推理吞吐量的提升。

由於 OPT 面向的是生成式任務,而生成式任務需要不斷循環模型的輸出結果。這使得推理中常見的 batching 策略無法直接應用,而單 batch 運行效率低下。此外,在生成階段還存在大量的重複計算。

為了全面釋放生成式任務運行中高性能硬件的潛力,此次推理部署增加了 left padding 技術使得 batching 成為可能,還增加了 past cache 技術來消除在生成階段的重複計算問題,以及引入 bucket batching 技術減少無意義的計算。

先來講講為什麼生成式任務無法直接使用常見的 batching 方法。如下圖所示,由於輸入語句的長度通常參差不齊,而且多數語言的書寫習慣都是從左至右,如果用常規的 right padding,那麼對於較短的句子就難以生成有意義的結果或者需要複雜的處理才能生成結果,繼而導致無法使用 batching 方法。而當我們使用 left padding 對句子進行填充時,每一個句子的生成側(右側)都是對齊的,可以同時生成新的單詞。

Right padding 不適合生成式任務

Left padding

由於模型的一次推理僅能生成一個新詞,於是在生成式任務中每生成一個新詞後都會加到輸入序列的尾部再次投入模型進行計算,生成下一個新的單詞,由於每一次推理都需要針對新的完整序列進行計算,就會存在大量重複計算的問題,尤其是對於占絕大多數計算量的 Linear 層來說。

因此 Colossal-AI 開發人員在模型內部加入 past cache 技術,會暫存同一次生成任務中 Linear 層的輸出結果,每次只有新的一個單詞會進入 Linear 層進行計算,並把該詞的計算結果加入到暫存結果中避免重複計算。Past cache 技術可以極大的降低實際計算量。

生成式任務計算過程。Past cache 將同一次任務的 Linear 層計算結果保留,新的一次推理只需要計算新增的一個單詞,與 cache 拼接進入後續計算。

此外,Colossal-AI 開發人員注意到不同於其他任務,生成式任務計算量的參差不齊,不僅僅來自於輸入句長的不同,還來自於輸出目標句長的不同,且輸出句長和輸出目標句長都將在一個較大的範圍內取值。

簡單的 batching 方案將兩者相差很大的推理放在同一個批次中將造成大量冗餘計算,因此 Colossal-AI 開發人員加入了 bucket batching 技術,即按照輸入句長以及輸出目標句長進行桶排序,同一個桶內的序列作為一個 batching,極大的降低了冗餘計算量。

Bucket batching。將具有相近輸入與輸出長度的任務放在同一個批次。

面向大模型時代的 Colossal-AI

Colossal-AI 不僅針對 AI 大模型提供了諸多優秀的解決方案,更為重要的是完全開源!

每一位開發者都可以基於它低成本訓練自己的大模型,並部署為雲服務。例如,在 1 張 10GB 的 RTX 3080 上,便可訓練 120 億參數的模型,相比原生 PyTorch 可提升 120 倍的模型容量。

Colossal-AI 自開源以來便廣受關注,已經多次在 GitHub 及 Papers With Code 熱榜位列世界第一,相關解決方案已成功在自動駕駛、雲計算、零售、醫藥、芯片等行業知名廠商落地應用,可快速高效完成 AI 大模型的雲服務部署。

Colossal-AI 團隊近期還連續入選和受邀全球超級計算機大會、國際數據科學會議、世界人工智能大會、亞馬遜雲科技中國峰會等多項國際專業盛會,並發表主題演講,展示不斷革新的高性能計算與人工智能前沿發展,及其在全面推動 AI 大模型民主化中的創新實踐,敬請關注!

GitHub 地址:https://github.com/hpcaitech/ColossalAI

雲服務體驗地址:https://service.colossalai.org/

參考鏈接:

https://arxiv.org/abs/2205.01068
https://sc22.supercomputing.org/

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()