Big Data for AI實踐:面向AI大模型開發和應用的大規模數據處理套件

作者:夕陌,臨在,熊兮,道轅,得水,施晨

隨著人工智能技術的快速發展,大模型在各個領域的應用日益廣泛。大模型能夠更好地模擬人類的認知能力,大幅提升機器在復雜任務上的表現。然而,不斷增長的模型參數規模使得數據集的復雜度也不斷上升,數據質量更直接影響模型的準確性和可靠性。本文敘述的 Big Data for AI 最佳實踐,基于阿里云人工智能平臺PAI、MaxCompute自研分布式計算框架MaxFrame、Data-Juicer等產品和工具,實現了大模型數據采集、清洗、增強及合成大模型數據的全鏈路,解決企業級大模型開發應用場景的數據處理難題。

Data-Juicer是通義實驗室和PAI共建的開源數據處理工具。它提供了豐富的數據處理算子、高效并行化的數據處理流水線,支持數據預處理、可視化、數據評估等各項能力。還為不同背景的用戶提供了開箱即用的組件和豐富的數據配方。此外,Data-Juicer與MLLM和分布式計算生態系統無縫集成,以實現高效且可擴展的數據處理。

MaxFrameMaxCompute自研的分布式計算框架,為MaxCompute提供了一套完整的Python開發生態,為大規模數據分析和機器學習任務提供了極佳的靈活性。數據科學家和數據工程師可利用MaxCompute的海量計算資源對數據進行大規模處理分析、可視化探索、科學計算,以及傳統ML開發等工作。

阿里云人工智能平臺PAI是是面向開發者和企業的機器學習/深度學習工程平臺,提供AI開發全鏈路服務,為用戶提供低門檻、高性能的云原生AI工程化能力。PAI的數據處理工具提供了一套全方位、覆蓋多領域的解決方案。充分利用深度學習集群(DLC)和MaxCompute的分布式能力和資源,結合Ray、UDF和MaxFrame等底層框架,基于DataJuicer豐富的算子,為用戶提供了開箱即用的組件和豐富的數據配方,能夠高效且靈活地處理復雜數據任務,使得快速上手和簡化流程成為可能。

PAI大模型數據處理套件架構概覽:


image.png

自底向上:

  • 云資源:資源層是整個架構的基礎,PAI大模型數據處理套件同時支持DLC(深度學習集群)和MaxCompute集群,為上層應用提供強大的計算和存儲能力。
  • 引擎框架:
    • DLC集群:支持Ray自動化部署,可以進行大規模數據的并行處理,提升數據處理效率。
    • MaxCompute集群:利用UDF算子和MaxFrame框架,依托MaxCompute的強大計算和存儲能力,滿足特定業務需求。
  • 算子底座:DataJuicer提供了豐富的數據處理算子和高效的并行處理流水線,提供了全面的數據處理能力。我們以DataJuicer作為基石,進行算子改造,適配DLC和MaxCompute的分布式能力,進一步加速處理效率。
  • 產品:PAI-Designer 提供了用戶友好的工具和界面,用戶可以自定義工作流對數據安全、數據脫敏、數據增強等組件進行任意編排。我們同時與百煉合作,這些組件也作為百煉數據處理的底層工具為用戶提供數據處理服務。
  • 解決方案:利用PAI的產品工具集,提供涵蓋多個應用場景的解決方案,如文生圖/視頻、圖片/視頻理解、CT、SFT和RAG等。旨在簡化整個數據處理流程。幫助用戶快速上手。每個解決方案都是為特定領域的應用需求而設計的,用戶可以根據自身需求選擇適合的解決方案,滿足多樣化的業務需求。

Data-Juicer

image.png

Data-Juicer 是一個由通義實驗室主導,PAI深度參與共建的一站式開源數據處理系統,旨在為多模態大語言模型(MLLMs)提供更高質量、更豐富、更易“消化”的數據,提供超過 100 個內置多功能算子和可插拔工具。通過模塊化協同、靈活組合和彈性擴展,Data-Juicer 可以應對 MLLM 數據處理的異質需求,包括但不限于分析、清洗、合成和混合。 Data-Juicer 為各種背景的用戶優化了可用性,包括提供開箱即用的底層組件,支持數據菜譜可配置,以及為 MLLM 預訓練和后調優預置豐富的、效果證明過的數據菜譜。經過了多方面的系統性能優化, Data-Juicer 與 MLLM 和分布式計算的大量生態基建無縫集成,以支持高效且可規模化擴展的大模型數據處理。


image.png

此外, Data-Juicer 提供了一個定制化的中間層套件,“沙盒實驗室”,來支持便捷的多模態大模型 “數據-模型協同開發”。它提供了靈活的實驗平臺,在 Data-Juicer 已有的數據處理能力之上,沙盒實驗室持續集成多模態大模型的先進開源基建,提供數據和模型多維度的反饋循環。通過該套件,研發人員能在端到端工作流、典型開發行為、底層開發能力之間便捷組合,快速迭代小規模洞察,提高數據處理和模型開發的可衡量性和科學實踐性,以便在更大規模場景下“有的放矢”。通過該實驗室沉淀的數據開發工作流和實踐洞察,也將持續集成到PAI中,幫助提升用戶體驗。

相關參考

MaxCompute - MaxFrame

MaxFrame是有阿里云計算平臺事業部MaxCompute團隊研發的大數據處理框架,支持用戶直接引用NumPy、SciPy、Matplotlib等三方庫進行科學計算、數據分析、可視化等操作,并提供了兼容Pandas接口的分布式數據處理算子。使用MaxFrame框架編寫的作業可直連存儲在MaxCompute中的數據,利用MaxCompute的海量彈性計算資源對數據進行大規模分布式處理。傳統基于Pandas編寫的數據處理腳本經過一定的適配改寫即可使用MaxFrame框架在MaxCompute中分布式運行,大幅提高了數據處理的規模及計算效率。


image.png

MaxFrame 特點優勢:

  • 更熟悉的開發習慣

MaxFrame提供Python編程接口,兼容Pandas算子,且算子提交至MaxCompute自動分布式執行,不再受本地資源大小限制。

  • 更高效的數據處理能力

MaxFrame直接在MaxCompute集群中進行數據分布式計算,運行時無需將數據拉取至本地處理,消除了不必要的本地數據傳輸,提高作業執行效率。

  • 更便捷的開發體驗

MaxFrame已與MaxCompute Notebook、DataWorks集成,提供開箱即用的交互式開發環境及離線調度能力;MaxFrame支持在代碼開發中直接引用MaxCompute內置鏡像(Pandas、Numpy、XGBoost等)及用戶自定義鏡像,且支持Python3.7和Python3.11版本,無需考慮復雜的環境準備以及兼容問題。

MaxFrame在24年7月開始了公共云公測,目前已經有掌閱、通義、餓了么等內外部客戶的作業使用MaxFrame大幅提升了數據處理的開發效率和體驗。

MaxFrame官網文檔:MaxFrame概述_云原生大數據計算服務 MaxCompute(MaxCompute)-阿里云幫助中心 (aliyun.com)

PAI大模型數據處理套件

我們已將DataJuicer豐富的數據處理算子和MaxCompute的強大數據處理能力進行結合,封裝成PAI-Designer產品中的算子,以簡單易用的產品形態提供給廣大大模型開發人員。

使用文檔請參考:大模型數據處理

算子列表:

image.png

在DataJuicer的基礎功能之上,我們做了如下適配和優化:

支持MaxCompute-MaxFrame

我們將DataJuicer的算子封裝成UDF函數,重新開發了一套UDF算子,并使用SQL腳本運行。可以充分利用MaxCompute海量數據存儲和強大的彈性計算能力。同時,我們陸續將目前UDF+SQL的方式切換到MaxFrame框架,在保證性能的同時,MaxFrame友好的Python開發生態可以為開發者提供更好的白盒化支持。

支持PAI-DLC&RAY的分布式處理

  • 支持Ray自動化部署

用戶啟動多節點作業時,自動啟動Ray集群,并監聽多節點的狀態,防止集群意外退出。

  • Ray的性能優化

我們和DataJuicer團隊也在持續優化Ray的性能,會根據算子本身的特性適配Task或Actor模式。在不同的使用方式上做了大量的性能測試。目前會適配batch模式并自適應分配并行度,以最大程度利用Ray的優勢。

  • 支持數據自動切分

除了支持Ray的分布式處理,我們還支持了將數據均勻切分到多個節點獨立處理的功能。一方面可以減少節點間的通信時間,另一方面是因為我們發現當節點的內存占用達到某個臨界點時,Ray的性能會打折扣。

算子迭代和創新

為了提升數據處理算子的性能與準確性,我們依據終端用戶在日常操作中的反饋,對幾個算法模塊進行了優化和擴展。

  • 敏感詞過濾算子

在原有的DataJuicer算子中,采用語種對應的分詞模型對文本進行分詞處理,并對切分后的結果進行遍歷。這一方式在處理含有混合語言文本的情況時會出現識別精度下降的問題。為了解決這一點,我們改進了策略,取消了分詞步驟,改用貪心算法對文本進行遍歷,在一定程度提升了敏感詞識別的準確率。此外,我們還對敏感詞庫進行了補充和擴展,解決了原有庫存量不足的問題,同時確保了性能與先前版本相當。

  • 質量打分算子(DLC)

使用DataJuicer訓練出的pyspark模型,質量打分算子(DLC)能夠充分利用pyspark的分布式計算能力,實現了多節點協同處理。鑒于pyspark算子對MaxCompute的適配存在一定難度,MaxCompute的質量打分算子是另一套模型,支持了batch推理。后續我們計劃推出DataJuicer非pyspark模型來取代當前的MaxCompute質量打分算子。

  • 敏感信息打碼

    對文本數據中的敏感信息進行打碼,例如電話號碼、郵箱地址、身份證號等。
    
  • 毒性過濾算子

與綠網協作,構建了一套精準識別網絡中毒性言論的機制。這個算子能夠檢測與過濾出侮辱性、歧視性、煽動性等不當言論,并能進行自我學習來適應新的表達形式,大幅提高網絡環境的健康性,以保障網上環境的健康和用戶體驗。

  • 數據增強算子

數據增強算子可以生成更多樣化且具有挑戰性的訓練樣本。我們通過指令擴充來增加命令和請求的多樣性,同時采用指令優化策略提升現有數據集的質量。高質量的指令集對于訓練出能夠理解語言多樣性與復雜性的模型至關重要。我們自己訓練了指令優化和指令擴充模型,以提高自然語言處理的廣泛性和準確性。
指令優化模型:alibaba-pai/Qwen2-7B-Instruct-Refinealibaba-pai/Qwen2-1.5B-Instruct-Refine
指令擴充模型:alibaba-pai/Qwen2-7B-Instruct-Expalibaba-pai/Qwen2-1.5B-Instruct-Exp

  • QA提取算子(RAG應用)

在文檔理解和問答領域中,高效從大量文本中提取和生成準確的問答對至關重要。我們新引入的RAG算子專門為這一需求而設計,為了更好地應對問答(QA)場景,我們自行采集數據,訓練了模型。
模型列表:alibaba-pai/pai-llama3-8b-doc2qaalibaba-pai/pai-baichuan2-7b-doc2qa
alibaba-pai/pai-qwen1_5-4b-doc2qaalibaba-pai/pai-qwen1_5-7b-doc2qa
alibaba-pai/pai-qwen1_5-1b8-doc2qaalibaba-pai/pai-qwen1_5-0b5-doc2qa

數據轉換組件

在處理需要大量CPU計算資源的任務方面,MaxCompute算子有較大優勢。然而,對于圖像、音頻、視頻的數據存儲和處理,及一些依賴于GPU加速的算子,MaxCompute則無法提供相應支持。鑒于此,這部分算子我們優先支持DLC資源,數據存儲支持OSS(對象存儲服務)。

另外,對于DLC算子我們測試pyodps sdk直接讀取MaxCompute表中的數據時,性能較慢,無法達到預期,所以DLC組件暫不支持直讀表數據。這一限制使得在實際的數據處理中可能會出現兩種算子的混合使用情況。

為了支持算子混用,提升數據傳輸效率,我們開發了數據轉換組件。該組件支持OSS與MaxCompute表之間的數據轉換,且在處理千萬量級的數據時能實現秒級的轉換速度。可以大幅提升數據處理的靈活性和效率。

對接QuickStart

我們將PAI快速開始(QuickStart)的部分LLM模型遷移到PAI-Designer。支持數據處理+LLM模型訓練+LLM模型推理端到端的工作流鏈路,在Designer中實現閉環。

訓練和推理同時支持DLC和MaxCompute兩套處理算子。


image.png

算子的串聯

image.png

當前,PAI-Designer各組件操作均相互獨立。每個組件完成處理任務后,會將結果持久化保存至OSS或表中。這一處理流程不可避免地伴隨著一些額外時間消耗,包括機器調度、容器的重新初始化及數據保存所需時間。為了解決這一問題,我們正計劃支持組件之間的無縫串聯,無需進行數據落盤操作,每個數據處理算子的輸出結果將直接在內存中保留,直至所有算子均順利執行完畢后再進行一次性落盤。這能夠顯著降低因機器調度、容器啟動、以及反復執行數據落盤操作而產生的時間開銷,從而提高整個處理流程的效率和性能。

處理模板

為了幫助用戶快速上手,我們基于數據處理組件列表,預置了多個領域的數據處理模板,包括LLM相關的SFT數據處理模板、CT數據處理模板 ,LVM相關的文圖處理模板和文視頻處理模板。還有端到端的數據處理+訓練+推理模板,用戶可以一鍵導入運行。

預置工作流模板請參考:LLM大語言模型數據處理 - github codeLLM大語言模型端到端鏈路:數據處理+模型訓練+模型推理LLM大語言模型數據處理-Alpaca-Cot(sft數據)視頻數據過濾打標

image.png

image.png
image.png

image.png

數據增強模型的單獨部署

數據增強技術能夠生成更具多樣性和挑戰性的訓練樣本。我們通過擴展指令集的方式增加命令和請求的多樣性,并采用指令優化策略來提升現有數據集的質量。高質量的指令集對于訓練能夠理解復雜語言多樣性的模型是至關重要的。為此,我們開發了自有的指令優化和指令擴充模型如下:alibaba-pai/Qwen2-7B-Instruct-Refinealibaba-pai/Qwen2-1.5B-Instruct-Refinealibaba-pai/Qwen2-7B-Instruct-Expalibaba-pai/Qwen2-1.5B-Instruct-Exp

除了在數據處理的產品中作為算子串接使用,在其他應用場景(例如線上應用的自動指令改寫),許多企業和開發者也有單獨部署上述模型的需求。我們在QuickStart中上架了這四個自研模型的model card,并且支持用戶以零代碼方式單獨部署這些模型至PAI-EAS。模型的model card示例如下所示:

image.png

image.png

典型案例

百煉

阿里云百煉是基于通義大模型、行業大模型以及三方大模型的一站式大模型開發平臺。面向企業客戶和個人開發者,提供完整的模型服務工具和全鏈路應用開發套件,預置豐富的能力插件,提供API及SDK等便捷的集成方式,高效完成大模型應用構建。

PAI的數據處理算子能力已接入百煉的數據處理模塊中,我們為百煉支持了算子串聯的不落盤功能,降低了數據處理時延,并優化了整個數據處理鏈路的性能。

在算子層面與數據層面,我們支持了容錯。在單個數據處理算子出現問題的情況下,整個數據處理流也能夠穩定運行,不會影響到后續算子的處理過程。數據層面的容錯則保證了輸入到系統中的數據,即使部分有損壞或格式錯誤,也能夠被識別和自動修正或隔離,確保數據處理流程的魯棒性。共同保障了數據處理的穩定性。


image.png

餓了么

本地生活集團-餓了么團隊,已在阿里云PAI-Designer平臺上構建了一套全面且精細的大型語言模型(LLM)數據處理流程,已成功實現部分關鍵業務的遷移與優化。為驅動其自主研發的E-GPT系列模型,該團隊精心篩選并處理了源自20個不同源頭的數據集,總數據量2TB,最終提煉出1T token的優質數據,專用于餓了么垂直領域的基座模型訓練。團隊每約一個月便進行一次數據迭代,以此不斷更新與優化其基模型,確保模型的時效性和競爭力,至今已在PAI-Designer上穩定運行超過三個月

餓了么團隊基于 Qwen-Base 模型進行繼續預訓練。他們使用了開源網頁和域內自建兩部分數據。從互聯網收集高質量中、英、代碼、數學等語料,涵蓋網絡數據、圖書、論文、百科、知識學科題目和社交媒體等通用知識語料,同時本地構造清洗大量垂類語料。對原始數據進行精細的預處理工作,包括質量評估、冗余去除、隱私消除等步驟。

借助PAI-Designer平臺提供的工具鏈,餓了么團隊得以快速穩定的構建一套高度定制化的Post-Training流程,這一系列復雜的數據處理流程被簡化,顯著提升了研發效率,確保了模型迭代的順利進行與穩定發布,為餓了么的業務創新與技術升級注入了強勁動力。

餓了么工作流:

image.png

未來工作

PAI將繼續與Data-Juicer、MaxCompute緊密合作,持續推動大模型數據處理易用性、產品豐富度、性能的提升。

短期規劃:

  • 組件擴充:不斷豐富和優化處理算子,擴展MLLM、MLVM等領域的處理功能。
  • 用戶體驗改進:根據客戶反饋,優化組件易用性,減少用戶的學習成本。
  • 數據可視化工具:開發用戶友好的數據處理可視化工具,增強數據流程的透明度。
  • 組件白盒化:我們計劃支持組件的白盒化,將代碼全部開放給用戶,用戶可以基于自己業務領域的特性對代碼進行修改。修改后的組件代碼也可以和其他組件正常串聯運行。不影響已有的功能。
  • 領域垂直解決方案:根據不同行業的數據特性,開發和推出更多的領域特定的預置工作流模板和算子,針對性解決各個垂直行業的數據挑戰。
  • 性能優化:繼續深化對現有數據處理框架進行性能調優,旨在降低延遲,提高數據處理速度和吞吐量。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,238評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,430評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,134評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,893評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,653評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,136評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,212評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,372評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,888評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,738評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,482評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,179評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,588評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,829評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,610評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,916評論 2 372

推薦閱讀更多精彩內容