
這篇文章于 2024 年 6 月 3 日首次出現在 The New Stack 上。
我之前寫過關于現代數據湖參考架構的文章,解決了每個企業面臨的挑戰——更多的數據、老化的Hadoop工具(特別是HDFS)以及對RESTful API(S3)和性能的更大需求——但我想填補一些空白。
現代數據湖(有時稱為數據湖倉一體)是基于一半數據湖和一半開放表格式規范 (OTF) 的數據倉庫。兩者都建立在現代對象存儲之上。
同時,我們深入思考了組織如何構建能夠支持您所有 AI/ML 需求的 AI 數據基礎設施,而不僅僅是訓練集、驗證集和測試集的原始存儲。換句話說,它應該包含訓練大型語言模型、MLOps 工具、分布式訓練等所需的計算。基于這一思路,我們整理了另一篇關于如何使用現代數據湖參考架構來支持您的 AI/ML 需求的論文。下圖展示了現代數據湖參考架構,并突出顯示了生成式 AI 所需的功能。

來源:現代數據湖中的 AI/ML
1. 數據湖
企業數據湖建立在對象存儲之上。不是老式的、基于設備的對象存儲,它服務于廉價和深入的存檔用例,而是現代的、高性能的、軟件定義的和 Kubernetes 原生對象存儲,它們是現代 GenAI 堆棧的基石,它們可以作為服務(AWS、GCP、Azure)或本地或混合/兩者提供,例如 MinIO。這些數據湖必須支持流式工作負載,必須具有高效的加密和糾刪碼,需要以原子方式存儲對象的元數據,并支持 Lambda 計算等技術。鑒于這些現代替代方案是云原生的,它們將與其他云原生技術的整個堆棧集成 - 從防火墻到可觀測性再到用戶和訪問管理 - 開箱即用。
2. 基于OTF的數據倉庫
對象存儲也是基于 OTP 的數據倉庫的底層存儲解決方案。將對象存儲用于數據倉庫可能聽起來很奇怪,但以這種方式構建的數據倉庫代表了下一代數據倉庫。這是由 Netflix、Uber 和 Databricks 編寫的 OTF 規范實現的,這些規范使得在數據倉庫中無縫使用對象存儲成為可能。
OTF——Apache Iceberg、Apache Hudi 和 Delta Lake——之所以被編寫,是因為市場上沒有可以處理創作者數據需求的產品。 從本質上講,它們(以不同的方式)所做的是定義一個可以構建在對象存儲之上的數據倉庫。對象存儲提供了可擴展容量和高性能的組合,這是其他存儲解決方案無法做到的。由于這些是現代規范,因此它們具有老式數據倉庫所不具備的高級功能,例如分區演變、模式演變和零拷貝分支。
兩個可以在 MinIO 之上運行基于 OTF 的數據倉庫的 MinIO 合作伙伴是 Dremio 和 Starburst。
Dremio Sonar(數據倉庫處理引擎)
Dremio Arctic(數據倉庫目錄)
開放數據湖倉一體 |Starburst(目錄和處理引擎)
3. 機器學習操作 (MLOps)
MLOps 之于機器學習,就像 DevOps 之于傳統軟件開發一樣。兩者都是一組旨在改善工程團隊(開發或 ML)和 IT 運營 (Ops) 團隊之間協作的實踐和原則。目標是使用自動化來簡化開發生命周期,從規劃和開發到部署和運營。這些方法的主要好處之一是持續改進。
MLOps 技術和功能在不斷發展。您需要一個由主要參與者支持的工具,確保該工具不斷開發和改進,并將提供長期支持。這些工具中的每一個都在后臺使用 MinIO 來存儲模型生命周期中使用的工件。
MLRun(Iguazio,被麥肯錫公司收購)
MLflow (Databricks)
Kubeflow (谷歌)
4. 機器學習框架
機器學習框架是用于創建模型并編寫訓練模型的代碼的庫(通常用于 Python)。這些庫具有豐富的功能,因為它們為神經網絡提供了不同的損失函數、優化器、數據轉換工具和預構建層的集合。這兩個庫提供的最重要的功能是張量。張量是可以移動到 GPU 上的多維數組。它們還具有自動微分功能,可在模型訓練期間使用。
當今最流行的兩個機器學習框架是 PyTorch(來自 Facebook)和 Tensorflow(來自 Google)。
5. 分布式訓練
分布式模型訓練是跨多個計算設備或節點同時訓練機器學習模型的過程。這種方法加快了訓練過程,特別是當需要大型數據集來訓練復雜模型時。
在分布式模型訓練中,數據集被劃分為更小的子集,每個子集由不同的節點并行處理。這些節點可以是集群中的單個計算機、單個進程或 Kubernetes 集群中的單個 Pod。他們可能有權訪問 GPU。每個節點獨立處理其數據子集,并相應地更新模型參數。下面的五個庫使開發人員免受分布式訓練的大部分復雜性的影響。如果您沒有集群,您可以在本地運行它們,但您需要一個集群才能看到訓練時間的顯著減少。
6. 模型中心
模型中心并不是現代數據湖參考架構的真正組成部分,但我還是將其包括在內,因為它對于快速開始使用生成式 AI 非常重要。Hugging Face 已成為大型語言模型的去處。Hugging Face 擁有一個模型中心,工程師可以在其中下載預先訓練的模型并共享他們自己創建的模型。Hugging Face 還是 Transformers 和 Datasets 庫的作者,這些庫使用大型語言模型 (LLMs) 以及用于訓練和微調它們的數據。
還有其他模型中心。所有主要的云供應商都有某種方式上傳和共享模型,但 Hugging Face 憑借其模型和庫集合,已成為該領域的領導者。
7. 應用框架
應用程序框架有助于將 合并LLM到應用程序中。使用 an LLM 與使用標準 API 不同。必須做很多工作才能將用戶請求轉化為LLM可以理解和處理的內容。例如,如果您構建了一個聊天應用程序,并且想要使用 Retrieval Augmented Generation (RAG),則需要對請求進行標記化,將標記轉換為向量,與向量數據庫集成(如下所述),創建提示,然后調用 LLM.生成式 AI 的應用程序框架將允許您將這些操作鏈接在一起。當今使用最廣泛的應用程序框架是LangChain。它與其他技術集成,例如,Hugging Face Transformer 庫和用于文檔處理的 Unstructured 庫。它功能豐富,使用起來可能有點復雜,所以下面列出了一些替代方案,適合那些沒有復雜要求并想要比LangChain更簡單的東西的人。
8. 文件處理
大多數組織沒有一個包含干凈和準確文檔的存儲庫。相反,文檔以多種格式分布在組織中的各種團隊門戶中。為生成式 AI 做好準備的第一步是構建一個管道,該管道僅獲取已批準用于生成式 AI 的文檔,并將它們放置在矢量數據庫中。對于大型全球組織來說,這可能是生成式人工智能解決方案中最艱巨的任務。

文檔管道應將文檔轉換為文本,對文檔進行分塊,并通過嵌入模型運行分塊文本,以便將其向量表示形式保存到向量數據庫中。幸運的是,一些開源庫可以對許多常見的文檔格式做到這一點。下面列出了一些庫。這些庫可以與LangChain一起使用,以構建完整的文檔處理管道。
9. 向量數據庫
向量數據庫有助于語義搜索。了解這是如何完成的需要大量的數學背景,而且很復雜。但是,語義搜索在概念上很容易理解。假設您想找到所有討論與“人工智能”相關的任何內容的文檔。要在傳統數據庫上執行此操作,您需要搜索“人工智能”的所有可能的縮寫、同義詞和相關術語。
看起來像這樣:
SELECT?snippet
FROM?MyCorpusTable
WHERE?(text?like?'%artificial?intelligence%'?OR
?text?like?'%ai%'?OR
?text?like?'%machine?learning%'?OR
?text?like?'%ml%'?OR
??...?and?on?and?on?...
????
這種手動相似性搜索不僅費力且容易出錯,而且搜索本身也非常緩慢。向量數據庫可以接受如下所示的請求,并更快、更準確地運行查詢。如果您希望使用 Retrieval Augmented Generation,那么快速準確地運行語義查詢的能力非常重要。
{
Get?{
?MyCorpusTable(nearText:?{concepts:?["artificial?intelligence"]})?
??????{snippet}
????}
}?
下面列出了四種流行的向量數據庫。Milvus
Pgvector
Pinecone
Weaviate
10. 數據探索和可視化
擁有允許您整理數據并以不同的方式可視化數據的工具始終是一個好主意。下面列出的 Python 庫提供數據操作和可視化功能。這些似乎是傳統 AI 才需要的工具,但它們在生成式 AI 中也派上用場。例如,如果你正在做情緒分析或情緒檢測,那么你應該檢查你的訓練、驗證和測試集,以確保你在所有類中都有適當的分布。
結論
這就是:可以在現代數據湖參考架構中找到的 10 項功能,以及每種功能的具體供應商產品和庫。下表總結了這些工具。
1 . Data Lake - MinIO, AWS, GCP, Azure
2 . OTF-based data warehouse - Dremio, Dremio Sonar, Dremio Arctic, Starburst, Open Data Lakehouse | Starburst
3 . Machine learning framework - PyTorch, TensorFlow
4 . Machine learning operations - MLRun (McKinsey & Company), MLflow (Databricks), Kubeflow (Google)
5 . Distributed training - DeepSpeed (from Microsoft), Horovod (from Uber), Ray (from Anyscale), Spark PyTorch Distributor (from Databricks), Spark Tensoflow Distributor (from Databricks)
6 . Model hub - Hugging Face
7 . Application framework - LangChain, AgentGPT, Auto-GPT, BabyAGI, Flowise, GradientJ, LlamaIndex, Langdock, TensorFlow (Keras API)
8 . Document processing - Unstructured, Open-Parse
9 . Vector database - Milvus, Pgvector, Pinecone, Weaviate
10 . Data exploration and visualization - Pandas, Matplotlib, Seaborn, Streamlit