AI大模型時代的存儲發展趨勢
從2022年下半年,大模型和AIGC這兩個詞變得極其火熱,而GPU的市場也是一卡難求。對于這種迷亂和火熱,讓我想起了當年的比特幣挖礦和IPFS。似乎世界一年一個新風口,比特幣、元宇宙、NFT、AIGC,金錢永不眠,IT炒作永不停歇。
其實,每一個新的風口出現,總有兩撥勢力在沖突,保守派不斷探索業務的真實價值,通過價值投資試圖證明這又是一個新的龐氏騙局;另一波則是來勢洶洶,集結一切可團結的力量,證明新時代已經來臨。
對于這一個個的風口,AIGC和大模型似乎與前幾年的風口不一樣,讓我們看到了一絲真正的未來科技,在這篇文章,主要分享我對大模型&AIGC的看法,以及從存儲的視角思索,在大模型時代存儲的發展趨勢。
一、大模型和AIGC到底指的什么
AIGC:繼專業生產內容(PGC,professional-generated content)、用戶生產內容(UGC,User-generated content)之后的新型內容創作方式,主要是基于生成對抗網絡GAN、大型預訓練模型等人工智能技術,自動生成圖像、視頻、文本 、音頻等作品。
AIGC的炒作來自于2022年9月,太空歌劇院獲得美國科羅拉多州舉辦藝術博覽會一等獎,熟悉的套路,熟悉的配方,是不是跟NFT炒作一模一樣(據佳士得拍賣行官方報道,數碼藝術家Beeple的NFT作品《每一天:前5000天》以約合人民幣4.51億元的高價成交,刷新了數碼藝術拍品的最高成交價等紀錄。)。
AIGC與以前的不同在于,在AI領域有ANI弱人工智能(Artificial Narrow Intelligence)、AGI強人工智能(Artificial General Intelligence)、ASI超人工智能(Super Artificial Intelligence),大模型的出現,讓人興奮的是看到了AGI的希望,而不是所謂的生成一句話或者問答機器人或者AI作畫;因為AI初步具備了理解和創造的能力,為了將這種能力通俗的展示給業界和投資界,大家才轟轟烈烈的創造了各種AIGC的應用。
2021年8月份,李飛飛和100多位學者聯名發表一份200多頁的研究報告《On the Opportunities and Risk of Foundation Models》,在文章中,AI專家將大模型統一命名為Foundation Models,可以翻譯為基礎模型或者是基石模型,論文肯定了Foundation Models對智能體基本認知能力的推動作用,同時也指出大模型呈現出「涌現」與「同質化」的特性。人工智能-》機器學習-》深度學習-》大模型這條演進之路反映了我們人工智能的發展歷史。
從人工智能到機器學習,將計算解耦交給了機器;從機器學習到深度學習,我們把函數架構同質化到了神經網絡,只需要提取模型特征;從深度學習到基礎模型,我們連特征也放棄了,世界的知識模型走了同質化,相應的也獲取了泛化能力。
而涌現能力則是另一個在生物學和自然領域常見的能力,在大模型領域也出現了對應的特征。比如說,上下文學習(In-Context Learning)、思維鏈(Chain of Thought,CoT)等,基于現有僅有的幾個大模型架構來說,業界認知:>100B 出現涌現能力。
最近幾年大語言模型(LLM) 獲得了越來越多的關注,其中最知名的當屬 GPT-3[6] 模型。GPT-3 模型展現了一些大模型才具備的突現能力(就是模型規模必須得增大到一定程度才會顯現的能力,比如至少百億級),其中一項能力就是上下文學習(In-Context Learning)。該能力簡單來說就是,對于一個預訓練好的大語言模型,遷移到新任務上的時候,只需要給模型輸入幾個示例(示例輸入和示例輸出對),模型就能為新輸入生成正確輸出而不需要對模型做 fine-tuning。
上下文學習(In-Context Learning)CoT本質上是一種特殊的few shot prompt,就是說對于某個復雜的比如推理問題,用戶把一步一步的推導過程寫出來,并提供給大語言模型(如下圖藍色文字內容所示),這樣大語言模型就能做一些相對復雜的推理任務。
思維鏈(Chain of Thought,CoT)
二、大模型產業鏈的一些影響
大模型不僅僅改變了AI研發模式,也對整個AI的商業鏈條做了重構,以前每個公司根據自己的業務都會發展自己的模型,公安的人臉識別、淘寶的推薦系統、字節的內容推薦等等,但是在大模型出現后,業界出現了分化:
1、基礎層(模型服務)基礎層為采用預訓練大模型搭建的基礎設施。由于開發預訓練大模型技術門檻高、投入成本高,因此,該層主要由少數頭部企業或研發機構主導。如谷歌、微軟、Meta、OpenAI、DeepMind、Stability.ai等。基礎層的產品形態主要包括兩種:一種為通過受控的api接口收取調用費;另一種為基于基礎設施開發專業的軟件平臺收取費用。
2、中間層(2B)該層與基礎層的最主要區別在于,中間層不具備開發大模型的能力,但是可基于開源大模型等開源技術進行改進、抽取或模型二次開發。該層為在大模型的基礎上開發的場景化、垂直化、定制化的應用模型或工具。在AIGC的應用場景中基于大模型抽取出個性化、定制化的應用模型或工具滿足行業需求。如基于開源的Stable Diffusion大模型所開發的二次元風格圖像生成器,滿足特定行業場景需求。中間層的產品形態、商業模式與基礎層保持一致,分別為接口調用費與平臺軟件費。
3、應用層(2C)應用層主要基于基礎層與中間層開發,面向C端的場景化工具或軟件產品。應用層更加關注用戶的需求,將AIGC技術切實融入用戶需求,實現不同形態、不同功能的產品落地。可以通過網頁、小程序、群聊、app等不同的載體呈現。以數據流的視角看,大模型的業務研發和業務流程也發生了不同的變化:
三、大模型的主要技術門檻
回顧ChatGPT的發展歷程,我們可以總結出大語言模型(LLM)取得驚艷效果的要點(重要性從高到低排序):
? 愿意燒錢,且接受“燒錢 != 好模型”的現實
? 高質量的訓練語料
? 高效的分布式訓練框架和充沛優質的硬件資源
? 算法的迭代創新
大模型的技術門檻很高,但是從IT的視角來看,還是因為模型太大帶來了不可解決的一些問題。以GPT-3訓練為例,我們可以看到,訓練過程中基礎模型的加載和存儲GPT3模型訓練內存需求= 參數+梯度+優化器+其他 >2800GB >> 80GB(A100顯存大小)。大概需要35張A100卡才能完整加載模型訓練過程中的數據,還不包括其他的冗余等信息。
因此,大模型的訓練從原來的單卡演進到了多機多卡,多機多卡必然帶來資源利用率的下降,GPT-3的計算資源利用率至于大概21.3%。所以這幾年大家努力的方向主要是如何提升資源利用率。片上內存(on-chip memory)、芯片間互連的帶寬(英偉達的NVlink)、多機多卡的調度是主要的努力方向。
其中片上內存(on-chip memory)、芯片間互連的帶寬(英偉達的NVlink)主要是GPU廠商提供的,作為云基礎設施廠商主要努力只能發力集群的多機多卡調度。
大部分的大模型訓練都走向了并行化,業界幾種經典的分布式并行范式,包括流水線并行(Pipeline Parallelism),數據并行(Data Parallelism)和張量并行(Tensor Parallesim)。在并行訓練中,主要要解決如下的問題:
? 大模型內存墻:以GPT3為例,模型參數+梯度參數+優化器需要內存2.8TB(175B參數)
? 訓練效率:多機并行訓練情況下,訓練效率下降;單個模型的訓練時長可控
? 訓練穩定性:訓練時長較長,經常出現硬件錯誤或者網絡錯誤;收斂失敗,遇到bug
解決的方式是融合了網絡、并行框架、存儲。在這篇文章中,我們重點關注存儲的需求。
四、大模型訓練的數據流以及IO瓶頸
先介紹幾個訓練相關的概念:單個epoch的階段:全量樣本訓練一次, shuffle、讀 batch、存checkpoint等。
整個訓練數據流如下:
- 數據打散:遍歷樣本數據,進行文件的shuffle
- 數據加載:海量小文件元數據操作(ImageNet 1~100KB,螞蟻 500KB,文件數量1100億),定長的文件數據讀取(128K256K)
- Checkpoint存儲(原子操作):順序大 I/O寫(模型checkpoint),單個GPU狀態checkpoint(單卡一路大塊順序寫),時間敏感(30S~5分鐘)
根據一些統計的結果,可以發現很多訓練的樣本集面臨的情況是,樣本數量非常大,但樣本的平均大小又很小。以 ImageNet 數據集為例,整個數據集包含幾百萬(ImageNet 1K)、上千萬(ImageNet 22k)的圖片,平均一個圖片大小僅為一百多 KB。這個大小對存儲系統來說是非常小的。訓練存儲的IO特征主要是海量小文件管理及元數據高QPS,總結來說:
- 小IO時延敏感、元數據QPS密集(大量小文件讀)
- 線程固定(硬件相關),單流性能對帶寬影響較大
- 高QPS(定長讀取,QPS放大)
- 預取友好(定長讀取,全量單次讀LRU緩存無效)
我們以估算值估計一下,OSS讀取512KB數據通常30~80ms,Nas讀取512K 20ms。在一個32核CPU的機器,加載一個100W的文件時,以32個線程執行reader。對于深度學習訓練任務,在模型計算前,一般會對數據集做shuffle,打亂數據之間的順序,讓數據隨機化,這樣可以避免過擬合。數據的shuffle使得一個任務多個epoch間亂序訪問數據,造成傳統基于LRU替換策略的緩存方式失效。需要下+decode+標準化都完成后才會下載下一個文件。低時延、高QPS能力的文件存儲是AI訓練場景的優選。
五、存儲數據流在云上云下的區別
在傳統的架構里,大容量的冷數據存儲和高性能存儲是分別維護的,對于 AI 訓練的部分,數據的存儲、生產、消費都發生在高性能存儲中,自成體系,只有轉冷的數據才會考慮轉移到大容量存儲中去。比例較小的反向數據流轉(從大容量存儲到高性能存儲)通過工具來解決。
但到了數據湖里,數據湖存儲才是最全量、最權威的數據來源,大部分情況下,數據的第一個落腳點是數據湖,然后才會到高性能的加速層。在存算分離架構中,加速層本身都只是臨時的存在,其中的數據生命周期和計算資源同步,略早于計算資源的創建而生成,計算資源銷毀時同步刪除。這就導致數據湖到加速層的數據同步成為一個高頻、核心的需求,需要花大力氣解決。
傳統AI架構
- 高性能存儲和大容量存儲分離部署和維護
- 所有訓練數據在高性能存儲中清洗、訓練、試用數據轉冷后流轉到冷存儲(手動&工具)
云AI架構
- 數據入湖后第一時間進入對象存儲(數據湖存儲底座)
- 數據訓練過程需要從對象存儲加載需要的數據(自動化)
- 部分廠商推薦客戶使用手動加載(跳板機映射或者開源主機緩存軟件)
湖倉一體是實現海量多模態數據統一管理的必要手段。企業在數字化轉型過程中更加關心利用數據和信息來創造自身競爭優勢,因此,實現底層數據的統一管理是進行上層資產管理和業務決策分析的關鍵。
湖倉一體與AI大模型的融合表現在兩個方面:一是湖倉一體賦能AI大模型,即創新湖倉一體架構來滿足大模型生成式AI,如ChatGPT,對于海量數據存儲、訓練和實時推理的需求,將通用大模型在湖倉一體中的數據進行遷移學習,生成行業/企業專屬大模型;二是AI大模型賦能湖倉一體,即企業更希望湖倉一體解決方案融合ChatGPT來實現開發側的新業務與應用的敏捷開發、數據智能分析、資源統一管理,以及上層業務側的數據快速查詢分析和總結,并創建一個‘所想即所得’的即席交互頁面。
盡管湖倉概念提供了很多希望,但仍然面臨技術挑戰。市場上的大多數供應商都在優化單個 SQL 引擎來處理一系列工作負載,但這通常是不夠的,因為某些應用程序需要更高的性能,而另一些應用程序則需要更大的語言靈活性。
湖倉一體正在受到廣泛關注,用戶希望優化對其業務最關鍵的組件。湖倉一體架構可以帶來現代數據工程、數據科學和分析用例所需的靈活性、模塊化和經濟高效的可擴展性,并且可以簡化對未來增強功能的利用。然而,為了進一步優化并提供更大的開放性和靈活性,仍有很多工作要做—業界正在尋找開放式數據湖倉最佳實踐。