国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化

這篇具有很好參考價值的文章主要介紹了字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

深度學(xué)習(xí)的模型規(guī)模越來越龐大,其訓(xùn)練數(shù)據(jù)量級也成倍增長,這對海量訓(xùn)練數(shù)據(jù)的存儲方案也提出了更高的要求:怎樣更高性能地讀取訓(xùn)練樣本、不使數(shù)據(jù)讀取成為模型訓(xùn)練的瓶頸,怎樣更高效地支持特征工程、更便捷地增刪和回填特征。本文將介紹字節(jié)跳動如何通過 Iceberg 數(shù)據(jù)湖支持 EB 級機器學(xué)習(xí)樣本存儲,實現(xiàn)高性能特征讀取和高效特征調(diào)研、特征工程加速模型迭代。

機器學(xué)習(xí)樣本存儲:背景與趨勢

在字節(jié)跳動,機器學(xué)習(xí)模型的應(yīng)用范圍非常廣泛。為了支持模型的訓(xùn)練,我們建立了兩大訓(xùn)練平臺:推薦廣告訓(xùn)練平臺和通用的 CV/NLP 訓(xùn)練平臺。推薦廣告平臺每周訓(xùn)練規(guī)模達到上萬個模型,而 CV/NLP 平臺的訓(xùn)練規(guī)模更是每周高達 20 萬個模型。如此龐大的模型訓(xùn)練規(guī)模背后離不開海量的訓(xùn)練樣本支持。目前,在字節(jié)跳動的離線訓(xùn)練樣本存儲中,數(shù)據(jù)總量已經(jīng)達到了 EB 級,每日還在以 PB 級的速度增長。這些數(shù)據(jù)被用于支持廣告、搜索、推薦等模型的訓(xùn)練,覆蓋了多個業(yè)務(wù)領(lǐng)域;這些數(shù)據(jù)還支持算法團隊的特征調(diào)研、特征工程,并為模型的迭代和優(yōu)化提供基礎(chǔ)。目前字節(jié)跳動以及整個業(yè)界在機器學(xué)習(xí)和訓(xùn)練樣本領(lǐng)域的一些趨勢如下:

首先,模型/樣本越來越大。隨著模型參數(shù)的增多,為了訓(xùn)練這些龐大的模型需要更多、更豐富的訓(xùn)練數(shù)據(jù)來確保模型的準(zhǔn)確性和泛化能力。

其次,訓(xùn)練算力越來越強。在過去,訓(xùn)練一個機器學(xué)習(xí)模型可能需要數(shù)周甚至數(shù)月的時間。然而,如今基于更好的模型架構(gòu)和高速顯卡,我們可以在相對較短的時間內(nèi)完成訓(xùn)練過程并進行 A/B 測試驗證。

另外,特征工程越來越自動化、端到端。在傳統(tǒng)的機器學(xué)習(xí)中,特征工程是非常重要的一環(huán),通常需要大量的人工、時間和精力來處理數(shù)據(jù)和特征。而隨著深度學(xué)習(xí)的發(fā)展,我們可以利用深度學(xué)習(xí)的特征提取能力,通過簡單的數(shù)據(jù)處理步驟自動學(xué)習(xí)特征,甚至可以將過程簡化為在待調(diào)研的原始特征中往一張樣本表格里加列的操作后利用深度學(xué)習(xí)框架自動學(xué)習(xí)和提取信息。

總體來說字節(jié)跳動的機器學(xué)習(xí)和訓(xùn)練樣本在其業(yè)務(wù)中發(fā)揮著重要作用。通過建立強大的訓(xùn)練平臺、積累海量的訓(xùn)練樣本,字節(jié)跳動能夠支持大規(guī)模的模型訓(xùn)練和優(yōu)化。此外,當(dāng)前業(yè)界的趨勢表明模型和樣本規(guī)模的增長,以及訓(xùn)練算力的提升正推動著機器學(xué)習(xí)的發(fā)展,同時特征工程的自動化和端到端化也為模型訓(xùn)練帶來了便利和效率。

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化,機器學(xué)習(xí),人工智能,大數(shù)據(jù)

機器學(xué)習(xí)與訓(xùn)練樣本-語言模型趨勢?

以語言模型為例看一下參數(shù)和樣本量的趨勢。首先是 BERT,這是一種在 2018 年首次亮相的語言模型。BERT 基于 Transformer 架構(gòu),僅有 3.4 億個模型參數(shù)。當(dāng)時,這已經(jīng)被認(rèn)為是一項重大突破。然而隨著時間的推移,語言模型的規(guī)模和能力不斷增長。引人注目的是 GPT-3,這是一種由 OpenAI 開發(fā)的強大語言模型。相比于 BERT 的 3.4 億個參數(shù),GPT-3 的模型參數(shù)數(shù)量飆升至 1750 億個。這一巨大的增長引發(fā)了廣泛的關(guān)注,并且使得 GPT-3 在自然語言處理任務(wù)中取得了令人矚目的成就。

然而隨著模型參數(shù)的增長,模型的大小也成為一個問題。為了解決這個問題,人們開始嘗試模型小型化的方法。Chinchilla 就是一種模型小型化的嘗試,相較于其前代模型,將模型參數(shù)縮小了 4 倍,但樣本量卻增大了 4 倍,這種方法試圖在保持相對較小的模型規(guī)模的同時利用更多的數(shù)據(jù)提升模型的性能。最近最新推出的 GPT-4 模型以及 Google 最近發(fā)布的第二代 PaLM 沒有公布具體的模型細節(jié)。但可以猜測的是,這些模型的規(guī)??赡芤呀?jīng)達到了萬億級的參數(shù),這些進展為自然語言處理和其他相關(guān)領(lǐng)域的研究者們帶來了新的機遇和挑戰(zhàn)。

通過前面提到的這些趨勢,我們也可以看出當(dāng)前需要解決的一些問題及為實現(xiàn)降本增效目標(biāo)需要調(diào)整的地方。

首先,需要優(yōu)化訓(xùn)練樣本的存儲大小,減少存儲成本。隨著數(shù)據(jù)集的規(guī)模增長,存儲需求、成本也會相應(yīng)增加,這對于大規(guī)模的訓(xùn)練模型來說是一個挑戰(zhàn)。

其次,還需要優(yōu)化訓(xùn)練樣本的讀取速度。隨著芯片技術(shù)的迭代和算力的增長,訓(xùn)練模型所需的計算資源也在不斷提升。然而如果樣本的讀取速度無法跟上算力的增長就會成為訓(xùn)練過程中的瓶頸,限制算力資源的有效利用率。所以我們需要尋找方法來提高樣本的讀取吞吐量,確??梢猿浞掷矛F(xiàn)有的算力資源。

最后,在深度學(xué)習(xí)的加持下特征工程已經(jīng)變得更加自動化和簡化,我們可以順應(yīng)趨勢進一步提高特征調(diào)研和工程的效率。通過加速特征工程和調(diào)研過程縮短模型迭代周期、提高算法的開發(fā)效率。

存儲樣本方案演進

傳統(tǒng)存儲樣本方案

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化,機器學(xué)習(xí),人工智能,大數(shù)據(jù)

首先,傳統(tǒng)樣本存儲是將樣本直接存放在 HDFS、對象存儲或者 Hive 上的方案。這種方案在處理海量樣本時會遇到性能瓶頸。由于采用了單點 List 操作,掃描海量樣本時會變得非常緩慢。另外,當(dāng)需要添加列或加特征時使用寫時復(fù)制(Copy-On-Write)的方式會導(dǎo)致存儲量翻倍,大幅增加成本負擔(dān)的同時也會因為讀寫放大的本質(zhì)導(dǎo)致不必要的計算資源開銷。

其次是通過傳統(tǒng)數(shù)據(jù)庫方案存放樣本,這種方案更多適用于處理少量樣本的場景,當(dāng)海量數(shù)據(jù)達到 PB、EB 級時會遇到困難。此外由于訓(xùn)練代碼無法直接讀取數(shù)據(jù)庫底層文件,讀取吞吐量可能受限制,即使在實時拼接特征、標(biāo)簽的應(yīng)用場景也會導(dǎo)致訓(xùn)練吞吐速度的下降。

數(shù)據(jù)湖存儲樣本方案

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化,機器學(xué)習(xí),人工智能,大數(shù)據(jù)

基于數(shù)據(jù)湖的新興樣本存儲方案中,兩個備受關(guān)注的方案是 Apache Hudi 和 Apache Iceberg。

  • Apache Hudi 提供了 MOR(Merge-On-Read)的方式更新、加列,相比于傳統(tǒng)的 COW 方式大大降低了特征調(diào)研導(dǎo)入的開銷。然而 Hudi 在讀取時的合并性能不太理想,涉及多種格式的轉(zhuǎn)換、溢出磁盤引起額外 IO 等。此外 Hudi 不支持原生 Python API,只能通過 PySpark 的方式對于算法工程師來說不太友好。

  • Apache Iceberg 是一種開放的表格式,記錄了一張表的元數(shù)據(jù):包括表的 Schema、文件、分區(qū)、統(tǒng)計信息等。這種元數(shù)據(jù)計算具備高拓展性,為數(shù)據(jù)湖管理提供了更好的支持、更快的文件掃描。然而 Iceberg 的 MOR 方式也存在一些問題,比如社區(qū)版不支持只更新部分列(Partial Update)等。值得一提的是,Iceberg 提供了對 Python API 的支持,這對于算法工程師來說是一個很重要的優(yōu)勢。

綜上,Apache Hudi 和 Apache Iceberg 都是基于數(shù)據(jù)湖的新興樣本存儲方案,各自有著不同的特點和優(yōu)勢。雖然 Hudi 在某些方面存在一些性能上的問題并且不支持 Python,但它的 MOR 方式在加調(diào)研特征方面表現(xiàn)出色。而 Iceberg 則提供了開放的表格式和高度可擴展的元數(shù)據(jù)計算,同時還支持 Python API,為算法工程師提供了更友好的環(huán)境,但其 MOR 能力還有待加強。到這我們可以了解到,常見一些方案都存在些許不足之處,不夠理想。最終我們經(jīng)過多維度的考察,決定基于 Iceberg 數(shù)據(jù)湖來自研、強化,填補不足、滿足業(yè)務(wù)的樣本存儲和特征工程等需求。

字節(jié)強化版 Iceberg 數(shù)據(jù)湖:Magnus 猛犸

整體架構(gòu)

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化,機器學(xué)習(xí),人工智能,大數(shù)據(jù)

猛犸湖(Magnus)基于 Apache Iceberg 自研、強化的整體架構(gòu)如下:

最上層的是計算層,延續(xù)了計算存儲分離的設(shè)計理念。天然支持 Flink 和 Spark 引擎進行數(shù)據(jù)分析和 ETL 數(shù)據(jù)處理,同時還支持多種訓(xùn)練框架,包括我們團隊近期開源的分布式訓(xùn)練調(diào)度框架 Primus,以及傳統(tǒng)的 PyTorch 和 TensorFlow 等,用戶可以根據(jù)需求選擇適合的計算、訓(xùn)練框架。

第二層即猛犸湖的核心層。對外為用戶提供了 SDK 自助和元數(shù)據(jù)服務(wù),平臺能力上支持多種運維作業(yè),如數(shù)據(jù)導(dǎo)入、維護等任務(wù)。值得一提的是,該層引入了基于 Arrow 的高速向量化讀時合并引擎,能夠高效合并數(shù)據(jù)、提高讀取性能。猛犸湖的底座是基于強化版的 Iceberg 元數(shù)據(jù),元數(shù)據(jù)支持版本管理、文件掃描等功能,為用戶提供更加全面的數(shù)據(jù)管理能力。

底下的存儲層是整個架構(gòu)的基礎(chǔ),負責(zé)實際的數(shù)據(jù)存儲,支持多種文件格式,包括開源的列式存儲格式 Parquet、行存格式 TFRecord 及其他自研格式。平臺鼓勵業(yè)務(wù)遷移到列存格式,可以平均節(jié)省存儲成本約 30%~50%,并提升讀取性能。最終這些文件會被存儲在 HDFS 或?qū)ο蟠鎯χ校源_保數(shù)據(jù)的安全可靠。

核心特性優(yōu)化與實踐

核心特性一:支持?jǐn)?shù)據(jù)更新和寫入分支

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化,機器學(xué)習(xí),人工智能,大數(shù)據(jù)

經(jīng)過前文了解到基于 MOR 讀時合并的輕量級更新操作是加速特征調(diào)研和工程迭代周期的關(guān)鍵。所以我們首先開發(fā)、引入了第一個核心特性:Iceberg 上的輕量級數(shù)據(jù)更新和分支管理。

Iceberg 數(shù)據(jù)湖管理了以下文件類型:Data File 數(shù)據(jù)文件—表達新增的行記錄、Delete File 刪除文件—表達行刪除信息,在此基礎(chǔ)上增加 Update File 更新文件—表達列更新信息。在寫入數(shù)據(jù)、更新或者加列時,用戶只需要提供行號、主鍵和回填列數(shù)據(jù)信息即可,極大避免了讀寫放大問題,實現(xiàn)輕量級更新。讀的時候數(shù)據(jù)文件和更新文件可以一并讀出,并進行讀時合并、共同應(yīng)用到更新和加列中。

Iceberg 的樹狀元數(shù)據(jù)表達力強,能夠很好的支持?jǐn)?shù)據(jù)分支表達。通過利用這一點在特征調(diào)研\(zhòng)寫更新文件時寫入到分支上進行調(diào)研,就可以直接引用主干上的數(shù)據(jù)文件,使各分支之間能夠保持隔離,不影響主干上的基線模型訓(xùn)練,同時還避免了不必要的數(shù)據(jù)復(fù)制。也開發(fā)了對應(yīng)的分支操作,可以像 Git 一樣便捷的操作數(shù)據(jù):合并、刪除、Rebase(將分支重新以主干為根基),這些分支操作都是基于 Iceberg 元數(shù)據(jù)的,相比操作數(shù)據(jù)更加的輕量級。

該特性在縮短特征調(diào)研迭代周期和多個訓(xùn)練目標(biāo)共享特征方向均有廣泛應(yīng)用。

  • 應(yīng)用一大規(guī)模特征調(diào)研與工程

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化,機器學(xué)習(xí),人工智能,大數(shù)據(jù)

基于更新和分支的核心能力,為了提速特征調(diào)研迭代周期我們已經(jīng)廣泛將其應(yīng)用于特征工程的流程中。在一些業(yè)務(wù)中含有多個高潛力的特征集,算法同學(xué)可以在各自的分支上進行并行回填、調(diào)研、訓(xùn)練。當(dāng)調(diào)研模型指標(biāo)滿足預(yù)期后,用戶可以提交工單進行分支合并審核及追新寫入特征,分支合并與追新之間如果有缺失可以從離線回填到主干上。

對于成熟度高的模型大部分調(diào)研特征可能效果不明顯,這時刪除分支后數(shù)據(jù)維護任務(wù)會把這個分支的文件刪除節(jié)省空間。當(dāng)然算法工程師也可以繼續(xù)對分支進行 Rebase 操作進行驗證、調(diào)研。該應(yīng)用也存在一些難點比如大量更新合并后帶來的小文件問題,所以在分支上部署文件數(shù)量監(jiān)控,只有在必要時才進行 Compact 合并小文件操作。

  • 應(yīng)用二多個訓(xùn)練目標(biāo),共享特征

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化,機器學(xué)習(xí),人工智能,大數(shù)據(jù)

另一個應(yīng)用場景是通過數(shù)據(jù)分支支持多個訓(xùn)練目標(biāo)復(fù)用同一份特征。在推進新的推薦項目時,如果有一個新的推薦目標(biāo),算法工程師只需要回填該推薦目標(biāo)的標(biāo)簽 Label 就可以直接復(fù)用主干已有的特征,訓(xùn)練幾個小時后就可以開始 AB 實驗、檢驗?zāi)P托Ч?,在主干上調(diào)研成功的新特征也可以盡快在所有推薦目標(biāo)上復(fù)用、零數(shù)據(jù)復(fù)制,最終我們通過分支、復(fù)用特征數(shù)據(jù)的能力在一些推薦項目上節(jié)省約 90% 的樣本存儲空間,極大的提速了推薦目標(biāo)的調(diào)研周期。

核心特性二:高速讀時合并引擎

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化,機器學(xué)習(xí),人工智能,大數(shù)據(jù)

猛犸數(shù)據(jù)集(Magnus Dataset)是一個基于 Apache Arrow 開發(fā)的讀時合并引擎。Apache Arrow 是一個開源的列式內(nèi)存結(jié)構(gòu),支持多種語言、同進程零復(fù)制、極低序列化開銷、向量化計算等能力。Iceberg 社區(qū)也擁有對 Arrow 向量化讀取的支持,但是不支持復(fù)雜嵌套類型,這對包含嵌套類型數(shù)據(jù)的訓(xùn)練樣本極不友好,而猛犸數(shù)據(jù)集則能夠很好的支持。

在字節(jié)開源的訓(xùn)練調(diào)度框架 Primus 上,相比一般的向量化讀能夠?qū)崿F(xiàn)約 2 倍的讀吞吐提升。所以我們不依賴 Compaction 合并文件也能支持高性能樣本讀時合并、讀取,在 GPU 訓(xùn)練中讓數(shù)據(jù)讀取不再是瓶頸。輸出的結(jié)果是 Arrow 格式,能夠很方便的以零復(fù)制的方式對接 Spark Dataset、Pandas 等接口。

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化,機器學(xué)習(xí),人工智能,大數(shù)據(jù)

其中讀時合并和下推過濾在一些訓(xùn)練模型/數(shù)據(jù)處理中有很多樣本是可以跳過和采樣的,我們也通過下推過濾減少訓(xùn)練的樣本計算量來提速。在支持高速讀時合并中支持了內(nèi)存統(tǒng)一化和海量樣本 Shuffle 的優(yōu)化,具體可見下兩部分詳細介紹。

  • 應(yīng)用一內(nèi)存統(tǒng)一化 Arrow

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化,機器學(xué)習(xí),人工智能,大數(shù)據(jù)

這個特性在業(yè)務(wù)的落地上我們和內(nèi)部其他團隊將離線訓(xùn)練端到端的內(nèi)存格式在頭部模型中全部切換成了 Arrow 格式,極大減少了內(nèi)存、計算資源的使用,避免了很多不必要的內(nèi)存格式轉(zhuǎn)換和序列化開銷,取得了很大的收益。在數(shù)據(jù)分析、處理常用的 Spark 引擎中也做了部分 Arrow 化改造。需要注意的是,我們也在在線流式訓(xùn)練中嘗試切換 Arrow,但開銷還是很大,可能的原因是流式的樣本是每條通過的,不適合 Arrow 這種批式的形式從而導(dǎo)致額外的開銷。

  • 應(yīng)用二海量樣本 Shuffle 優(yōu)化

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化,機器學(xué)習(xí),人工智能,大數(shù)據(jù)

在海量樣本的處理上,算法工程師為使模型表現(xiàn)更好會花費大量時間在數(shù)據(jù)的清洗上。而清洗數(shù)據(jù)往往需要使用 Shuffle 操作,常碰到的問題是 Shuffle 失敗、慢。我們在這個部分基于更新和下推過濾做了 Shuffle 優(yōu)化的響應(yīng)工作。

比如用戶需要將 PB 級樣本表和某中型表拼接,他們的分桶方式不同-用不了常見的 Bucket Join,內(nèi)存不足-也用不了常用的 Broadcast Join,這時我們可以通過 Update 更新操作,將小的表更新到大表的臨時分支中、將其變成和大表一樣的布局,再通過下推過濾將拼接上的樣本高吞吐讀出。

如果用戶需要通過將 PB 級樣本打散、去重來優(yōu)化模型的性能效果,那么也可以按照類似的思路通過 Update Shuffle 小的數(shù)據(jù)將其更新到大表上再下推過濾、撈出即可。

核心特性三:Upsert 與全局索引

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化,機器學(xué)習(xí),人工智能,大數(shù)據(jù)

擁有更新、高速讀時合并并不夠,我們還需要有一些業(yè)務(wù)場景使多條樣本的數(shù)據(jù)流能夠直接并發(fā)入湖、拼接和回填,這就依賴于接下來介紹的第三個核心特性-全局索引。通過全局索引可以知道一條寫進記錄是否已經(jīng)寫入,沒寫入的可以 Insert 插入;寫入的可以采用 Update 更新操作。這部分我們參考了 Apache Hudi 的設(shè)計,除了支持 HBase 全局索引,還支持 HFile 文件索引、即直接使用 HBase 底層的數(shù)據(jù)格式作為索引并托管在 Iceberg 元數(shù)據(jù)中,優(yōu)化了性能和并發(fā)性等。

相比其他索引,使用 HFile 文件索引能夠減少運維組件、復(fù)用存儲資源,并且能夠避免脈沖流量讀寫問題。整個寫入流程上看,在寫入數(shù)據(jù)的時候框架會查寫全局索引定位一條記錄應(yīng)該寫到哪個分區(qū)、桶,讀取的時候會根據(jù)桶進行讀時合并,最終還原出結(jié)果樣本。具體應(yīng)用上主要在大開窗特征、標(biāo)簽拼接等場景使用。

  • 應(yīng)用大開窗特征與標(biāo)簽湖上拼接

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化,機器學(xué)習(xí),人工智能,大數(shù)據(jù)

風(fēng)控等業(yè)務(wù)場景更適用大開窗(大于等于一個月的開窗)特性拼接特征和標(biāo)簽。線上拼接采用大開窗的形式需要耗費大量機器資源,所以我們采用并發(fā) Upsert 支持,允許樣本追新、標(biāo)簽回填、特征調(diào)研同時進行,可以直接在成本較低的離線猛犸湖上進行特征和標(biāo)簽的拼接。

其核心在于將容忍并發(fā)寫沖突的選擇權(quán)交給用戶,提供多種 MOR 策略滿足業(yè)務(wù)需求:First-write-win 最先寫入的留下、Last-write-win 最后寫入的留下、拼接到列表、自定義讀時合并容忍并發(fā) Upsert 沖突。對于業(yè)務(wù)無法容忍并發(fā)的場景也支持分區(qū)級、桶級的樂觀沖突檢測。同時對于 Upsert 回流到早前分區(qū)的數(shù)據(jù)按數(shù)據(jù)冷熱進行 Compact,避免小文件帶來的性能損耗。

介紹完核心特性,我們也針對海量樣本為 Iceberg 數(shù)據(jù)湖做了不少優(yōu)化,也逐漸在將一些效果不錯的包貢獻給社區(qū)。這里我們挑重點的內(nèi)容簡單介紹一下。

其他優(yōu)化與實踐

字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化,機器學(xué)習(xí),人工智能,大數(shù)據(jù)

  • 特征淘汰

某些情況下對于合并到主干上的特征直接物理刪除后可能會有遺漏,或者對下游任務(wù)產(chǎn)生影響。針對這種情況可以通過對特征列重命名實現(xiàn)邏輯刪除。由于訓(xùn)練側(cè)是基于特征名字來讀,重命名后就讀不到了。如果有算法同學(xué)發(fā)現(xiàn)對模型有影響,將其重命名回來就好,過了一段時間沒有影響后就可以穩(wěn)妥地物理刪除該特征。

  • 回滾 & 撤銷

當(dāng)數(shù)據(jù)源/流水線出現(xiàn)問題時,如果入湖的特征存在問題就會影響訓(xùn)練模型效果導(dǎo)致線上數(shù)據(jù)流故障。針對這種情況,常見的做法是回滾,將有問題的寫入快照版本回滾,如此做法也會把后面正常寫入的快照版本一起回滾了,可能會影響后續(xù)下游的一些訓(xùn)練/樣本處理。所以我們開發(fā)了撤銷功能,可以針對某個快照的操作在元數(shù)據(jù)層面進行撤銷,不影響后續(xù)正常寫入的特征,對下游任務(wù)更友好。

  • 臟數(shù)據(jù)跳過

面對海量樣本,經(jīng)常會出現(xiàn)臟數(shù)據(jù)如數(shù)據(jù)丟塊、損壞等,這是數(shù)據(jù)量級增大后必然出現(xiàn)的現(xiàn)象。因此我們支持針對臟數(shù)據(jù)的重試,比如支持切換節(jié)點重試、支持只跳過一定比例等。

  • 大元數(shù)據(jù)優(yōu)化

面對海量樣本,元數(shù)據(jù)也變成了 Big Metadata,即大元數(shù)據(jù)。它也需要像大數(shù)據(jù)那樣去對待、瘦身和優(yōu)化。如在機器學(xué)習(xí)場景下,絕大部分的讀數(shù)據(jù)方式是 Scan 掃描,這時我們可以把 Iceberg 元數(shù)據(jù)中記錄的大量列統(tǒng)計信息去掉,有效減少元數(shù)據(jù)大小、特別是大寬表場景,只留一些必要的比如分區(qū)、主鍵 Min-max 等。從而大大減少任務(wù) Plan 計劃耗時,避免 AM、Driver OOM 超內(nèi)存。

  • 大元數(shù)據(jù)提速

對于大元數(shù)據(jù)的提速,傳統(tǒng)上往往都是用單點處理元數(shù)據(jù)的計算方式,這種處理方式在面對大元數(shù)據(jù)時也會力不從心。這時我們可以通過裁剪 IO、分布式處理大元數(shù)據(jù)來提速。對于依賴全表掃描的作業(yè)如 Compaction,也采用分布式 Planning 提速、避免超內(nèi)存問題。

總結(jié)與展望

本文總結(jié)

本次分享介紹了強化版 Iceberg 的整體架構(gòu)、核心特性及優(yōu)化與實踐,簡單總結(jié)前面分享的內(nèi)容主要包括:

  1. 通過推動業(yè)務(wù)切換列存格式、復(fù)用特征數(shù)據(jù)大幅減少樣本存儲空間,減少存儲成本;

  2. 通過向量化讀時合并引擎提速特征讀吞吐,使 GPU 訓(xùn)練中的數(shù)據(jù)讀取可以不成為瓶頸,充分利用好算力;

  3. 基于更新、Upsert 和分支的能力進行大規(guī)模特征工程和調(diào)研,使模型迭代效率更快。

近期對于 LLM 大語言模型的思考

我們前面提到了很多特征調(diào)研、特征工程相關(guān)的技術(shù),那未來會不會不需要特征工程了呢?這里結(jié)合最近比較火的 LLM 大語言模型,也基于一些公開的信息還有論文知識分享下我的一些想法:

目前大語言模型基本都沿用了 Transformer 架構(gòu)實現(xiàn),雖然學(xué)習(xí)特征的能力已經(jīng)很強了,但目前還需要分詞組件輔助將文字轉(zhuǎn)換為模型理解的形式,并且分詞的好壞也會一定程度影響模型的效果。而現(xiàn)階段各個大語言模型的分詞算法還不一樣,距離完全的端到端還有一定距離,基本都是能實現(xiàn)自動化的。當(dāng)然也有新的研究和論文比如 Megabyte 嘗試完全端到端的方式做分詞和訓(xùn)練架構(gòu),也取得了不錯的效果,但是還需要期待更大規(guī)模的效果驗證。所以說當(dāng)前短時間內(nèi)如果需要重新研發(fā)一個大語言模型,分詞、特征工程還是必經(jīng)之路。

當(dāng)然出于成本考慮很多公司和機構(gòu)不會從頭開始重新研發(fā)一個大語言模型,一般會基于某個已有的大語言模型進行微調(diào),針對下游、垂直任務(wù)進行優(yōu)化,所以特征工程也還是值得考慮的。比如:利用人工反饋給 AI 問答排序、打分讓它對齊人類的喜好還有社會法律規(guī)范;添加一些額外的特征輔助 AI 理解當(dāng)前上下文并做出更恰當(dāng)?shù)幕卮鸬取,F(xiàn)在也出現(xiàn)了一些新的技術(shù)比如 Low-Rank Adaptation(LoRA)把需要微調(diào)的參數(shù)量大幅減少,不需要更新基礎(chǔ)大模型的參數(shù),讓微調(diào)訓(xùn)練更快完成、也讓輸入的 Token 更少來大大減少計算成本。

對于提示詞工程和上下文學(xué)習(xí)確實不太需要關(guān)注底層的特征工程了,也都不需要訓(xùn)練了、可以直接讓 AI 結(jié)合上下文信息來習(xí)得知識并作答。目前業(yè)界已經(jīng)出現(xiàn)不少應(yīng)用,結(jié)合詞向量搜索、把 AI 需要的上下文信息提供出來回答之前沒訓(xùn)練過的內(nèi)容。這是一個全新的方向,很多正確性要求不高的場景都適用,極大的降低了 AI 模型的研發(fā)門檻、潛力十足。但因為每次接口調(diào)用都要提供上下文信息、而現(xiàn)在的一些大語言模型計費標(biāo)準(zhǔn)是按輸入輸出 Token 數(shù)計費的,使用成本較高,如果能微調(diào)的一下的話可以節(jié)省不少成本的、效果也可以更好。其次提示詞工程會更適用于參數(shù)千億級的大模型,它的思維鏈、涌現(xiàn)能力更好;對于參數(shù)少的還可以通過微調(diào)來達到持平、甚至更好的表現(xiàn)。而目前需要微調(diào)的話,特征工程還有機會進入提升效果。總體來說會像開頭提到趨勢一樣:特征工程會越來越簡化,將來它的存在也不再需要投入很多時間精力去手工操作了。

未來展望與規(guī)劃

最后分享未來對數(shù)據(jù)湖、樣本存儲的一些展望。

  • “湖流一體”

首先是湖流一體化。在“湖流一體”的架構(gòu)中,數(shù)據(jù)湖和消息隊列、流式計算可以相互連接,可以通過計算框架提供統(tǒng)一的歷史批式、追新流式的管理和接口,同時服務(wù)于低延遲的在線流式訓(xùn)練、高吞吐的離線批式訓(xùn)練;并且將消息隊列閑置的計算資源用來滿足數(shù)據(jù)湖的數(shù)據(jù)管理,節(jié)省資源成本。

  • 下一代數(shù)據(jù)格式

常見的列存文件格式編碼算法較少、而且多為支持 Primitive 原始類型。而訓(xùn)練樣本里邊的數(shù)據(jù)類型多是嵌套、Tensor 向量類的,我們可以探索更豐富的編碼算法來更好的優(yōu)化機器學(xué)習(xí)特征的存儲和成本,同時采用更豐富的索引支持來為訓(xùn)練提速。

  • 云原生

最后一點,對于企業(yè)來說采用云原生架構(gòu)已經(jīng)成為一種趨勢和必要選擇,可以幫助企業(yè)更好地應(yīng)對業(yè)務(wù)變化和市場挑戰(zhàn),提高業(yè)務(wù)競爭力和創(chuàng)新能力。強化版 Iceberg 也具備企業(yè)級能力,能為用戶帶來計算和存儲收益,降本增效。文章來源地址http://www.zghlxwxcb.cn/news/detail-611345.html

到了這里,關(guān)于字節(jié)跳動 EB 級 Iceberg 數(shù)據(jù)湖的機器學(xué)習(xí)應(yīng)用與優(yōu)化的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 字節(jié)跳動大數(shù)據(jù)容器化構(gòu)建與落地實踐

    字節(jié)跳動大數(shù)據(jù)容器化構(gòu)建與落地實踐

    動手點關(guān)注 干貨不迷路 隨著字節(jié)跳動旗下業(yè)務(wù)的快速發(fā)展,數(shù)據(jù)急劇膨脹,原有的大數(shù)據(jù)架構(gòu)在面臨日趨復(fù)雜的業(yè)務(wù)需求時逐漸顯現(xiàn)疲態(tài)。而伴隨著大數(shù)據(jù)架構(gòu)向云原生演進的行業(yè)趨勢,字節(jié)跳動也對大數(shù)據(jù)體系進行了云原生改造。本文將詳細介紹字節(jié)跳動大數(shù)據(jù)容器化的

    2024年02月13日
    瀏覽(20)
  • 字節(jié)跳動開源!超好用的視頻摳圖工具;GitHub開源項目維護協(xié)作指南;自動化數(shù)據(jù)清洗工具包;強化學(xué)習(xí)入門教程;前沿論文 | ShowMeAI資訊日報

    字節(jié)跳動開源!超好用的視頻摳圖工具;GitHub開源項目維護協(xié)作指南;自動化數(shù)據(jù)清洗工具包;強化學(xué)習(xí)入門教程;前沿論文 | ShowMeAI資訊日報

    ?? 日報合輯 | ?? 電子月刊 | ?? 公眾號下載資料 | ?? @韓信子 https://github.com/HelixNGC7293/DeforumStableDiffusionLocal https://space.bilibili.com/176003 文本提示作畫工具。本代碼庫實現(xiàn)是本地版本的Deforum Stable Diffusion V0.4,支持txt設(shè)置文件輸入和動畫功能! https://github.com/PeterL1n/RobustVideoMat

    2023年04月08日
    瀏覽(30)
  • 字節(jié)跳動開源其云原生數(shù)據(jù)倉庫 ByConity

    字節(jié)跳動開源其云原生數(shù)據(jù)倉庫 ByConity

    動手點關(guān)注 干貨不迷路 ? ByConity 是字節(jié)跳動開源的云原生數(shù)據(jù)倉庫,它采用計算-存儲分離的架構(gòu),支持多個關(guān)鍵功能特性,如計算存儲分離、彈性擴縮容、租戶資源隔離和數(shù)據(jù)讀寫的強一致性等。通過利用主流的 OLAP 引擎優(yōu)化,如列存儲、向量化執(zhí)行、MPP 執(zhí)行、查詢優(yōu)化

    2024年02月10日
    瀏覽(20)
  • 字節(jié)跳動云原生大數(shù)據(jù)平臺運維管理實踐

    字節(jié)跳動云原生大數(shù)據(jù)平臺運維管理實踐

    云原生大數(shù)據(jù)是大數(shù)據(jù)平臺新一代架構(gòu)和運行形態(tài)。隨著字節(jié)跳動內(nèi)部業(yè)務(wù)的快速增長,傳統(tǒng)大數(shù)據(jù)運維平臺的劣勢開始逐漸暴露,如組件繁多,安裝運維復(fù)雜,與底層環(huán)境過度耦合;對業(yè)務(wù)方來說缺少開箱即用的日志、監(jiān)控、告警功能等。在此背景下,我們進行了一系列云

    2024年02月11日
    瀏覽(22)
  • 螞蟻金服的面試流程,【微信小程序?qū)W習(xí)(1),字節(jié)跳動面試必問

    螞蟻金服的面試流程,【微信小程序?qū)W習(xí)(1),字節(jié)跳動面試必問

    (1)協(xié)議必須是https協(xié)議 (2)一個接口最多配置20個域名 (3)并發(fā)限制上限時10個 (4)開發(fā)過程中設(shè)置不校驗合法域名:開發(fā)工具—右上角詳情—本地設(shè)置—不校驗 3、發(fā)送ajax請求 (1)封裝功能函數(shù) 功能點要明確 函數(shù)內(nèi)部應(yīng)該保留固定代碼(靜態(tài)的) 將動態(tài)的數(shù)據(jù)抽取

    2024年04月23日
    瀏覽(37)
  • 字節(jié)跳動AB實驗經(jīng)驗分享:企業(yè)如何構(gòu)建數(shù)據(jù)驅(qū)動的實驗文化?

    更多技術(shù)交流、求職機會,歡迎關(guān)注字節(jié)跳動數(shù)據(jù)平臺微信公眾號,回復(fù)【1】進入官方交流群 近日,CCF TF 舉辦了第 123 期分享活動,本期主題為“用戶體驗工程”。 CCF TF 是中國計算機學(xué)會為企業(yè)界計算機專業(yè)人士創(chuàng)建的企業(yè)間常態(tài)化合作交流平臺,本期分享邀請到了來自火

    2024年02月05日
    瀏覽(13)
  • 火山引擎 DataLeap:揭秘字節(jié)跳動業(yè)務(wù)背后的分布式數(shù)據(jù)治理思路

    火山引擎 DataLeap:揭秘字節(jié)跳動業(yè)務(wù)背后的分布式數(shù)據(jù)治理思路

    動手點關(guān)注 干貨不迷路 導(dǎo)讀:經(jīng)過十多年的發(fā)展, 數(shù)據(jù)治理 在傳統(tǒng)行業(yè)以及新興互聯(lián)網(wǎng)公司都已經(jīng)產(chǎn)生落地實踐。字節(jié)跳動也在探索一種分布式的數(shù)據(jù)治理方式。本篇內(nèi)容來源于 火山引擎 超話數(shù)據(jù)直播活動的回顧,將從以下四個部分展開分享: 字節(jié)的挑戰(zhàn)與實踐 數(shù)據(jù)治

    2023年04月10日
    瀏覽(16)
  • 字節(jié)跳動音視頻面試一面掛??!,狂刷200道數(shù)據(jù)結(jié)構(gòu)與算法

    字節(jié)跳動音視頻面試一面掛?。?,狂刷200道數(shù)據(jù)結(jié)構(gòu)與算法

    線程執(zhí)行結(jié)束,我們怎么知道他結(jié)束了,其實是ipc的問題… tcp和http區(qū)別 然后讓我手算255.255.250.0子網(wǎng)掩碼的IP可以有多少個,應(yīng)該是8+2,所以是2的10次方個 剛開始記錯了,32/4是8,記成了6,面試官一直問我確認(rèn)嗎,還好后來反應(yīng)過來了… ndk了解嗎 音視頻為什么編碼,常見的

    2024年04月28日
    瀏覽(44)
  • 演講預(yù)告|字節(jié)跳動云原生大數(shù)據(jù)發(fā)展、AIGC 新引擎、運維管理實踐

    演講預(yù)告|字節(jié)跳動云原生大數(shù)據(jù)發(fā)展、AIGC 新引擎、運維管理實踐

    出品人:李亞坤|火山引擎云原生計算技術(shù)負責(zé)人 專題簡介: 大數(shù)據(jù)已成為企業(yè)數(shù)字化轉(zhuǎn)型中, 支撐企業(yè)經(jīng)營和業(yè)績增長的主要手段之一。通過升級云原生架構(gòu),可以為大數(shù)據(jù)在彈性、多租戶、敏捷開發(fā)、降本增效、安全合規(guī)、容災(zāi)和資源調(diào)度等方向上帶來優(yōu)勢。傳統(tǒng)的大數(shù)

    2024年02月11日
    瀏覽(56)
  • 如何通過pynput與日志記錄實現(xiàn)鍵盤、鼠標(biāo)的監(jiān)聽行為?,字節(jié)跳動Python內(nèi)部學(xué)習(xí)資料泄露

    如何通過pynput與日志記錄實現(xiàn)鍵盤、鼠標(biāo)的監(jiān)聽行為?,字節(jié)跳動Python內(nèi)部學(xué)習(xí)資料泄露

    先自我介紹一下,小編浙江大學(xué)畢業(yè),去過華為、字節(jié)跳動等大廠,目前阿里P7 深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長,但自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前! 因此收集整理了一份《2024年最新Python全套學(xué)習(xí)資料》,初

    2024年04月26日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包