Genai技術棧架構指南—十個工具,你知道哪個?
現代數據湖參考架構中可以找到的這 10 項功能,以及每個功能的供應商工具和庫。
譯自The Architect’s Guide to the GenAI Tech Stack — 10 Tools,作者 Keith Pijanowski。
我之前寫過關于現代數據湖參考架構,解決了每個企業面臨的挑戰 — 更多數據、老化的 Hadoop 工具(特別是 HDFS)以及對 RESTful API(S3)和性能的更大需求 — 但我想填補一些空白。
現代數據湖,有時稱為數據湖倉,一半是數據湖,一半是基于開放表格式規范 (OTF) 的數據倉庫。兩者都建立在現代對象存儲之上。
同時,我們深入思考了組織如何構建 AI 數據基礎設施,以支持所有 AI/ML 需求 — 不僅僅是訓練集、驗證集和測試集的原始存儲。換句話說,它應該包含訓練大型語言模型、MLOps 工具、分布式訓練等所需的計算能力。
基于這一思路,我們撰寫了另一篇關于如何使用現代數據湖參考架構來支持 AI/ML需求的論文。下圖展示了現代數據湖參考架構,其中突出了生成式 AI 所需的功能。
來源:現代數據湖中的 AI/ML
這兩篇論文都沒有提到特定的供應商或工具。我現在想討論構建現代數據湖所需的供應商和工具。在這個前 10 名單中,每個條目都是支持生成式 AI 所需的功能。
1. 數據湖
企業數據湖建立在對象存儲之上。不是你老式的基于設備的對象存儲,它服務于廉價且深入的歸檔用例,而是現代的、高性能的、軟件定義的和 Kubernetes 原生的對象存儲,這是現代 GenAI 堆棧的基石。它們可用作服務(AWS,MicrosoftAzure)或本地或混合/兩者,例如 MinIO。
這些數據湖必須支持流式工作負載,必須具有高效的加密和糾刪碼,需要以原子方式將元數據與對象一起存儲,并支持 Lambda 計算等技術。鑒于這些現代替代方案是云原生的,它們將與其他云原生技術的整個堆棧集成 — 從防火墻到可觀察性再到用戶和訪問管理 — 開箱即用。
2. 基于 OTF 的數據倉庫
對象存儲也是基于 OTF 的數據倉庫的基礎存儲解決方案。將對象存儲用于數據倉庫聽起來可能很奇怪,但以這種方式構建的數據倉庫代表了下一代數據倉庫。這得益于 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 對傳統軟件開發一樣。兩者都是旨在改善工程團隊(開發或機器學習)和 IT 運維(運維)團隊之間協作的一組實踐和原則。目標是使用自動化簡化開發生命周期,從規劃和開發到部署和運維。這些方法的主要好處之一是持續改進。
MLOps 技術和功能不斷發展。您需要一個由主要參與者支持的工具,以確保該工具不斷開發和改進,并提供長期支持。這些工具中的每一個都在底層使用 MinIO 來存儲模型生命周期中使用的工件。
- MLRun (Iguazio, acquired by McKinsey & Company)
- MLflow (Databricks)
- Kubeflow (Google)
4. 機器學習框架
您的機器學習框架是您用來創建模型并編寫訓練它們代碼的庫(通常用于 Python)。這些庫功能豐富,因為它們提供了一系列不同的損失函數、優化器、數據轉換工具和神經網絡的預構建層。這兩個庫提供的最重要的功能是張量。張量是可以移動到 GPU 上的多維數組。它們還具有自動微分,用于模型訓練。
當今最流行的兩個機器學習框架是 PyTorch(來自 Facebook)和 Tensorflow(來自 Google)。
- PyTorch
- TensorFlow
5. 分布式訓練
分布式模型訓練是在多個計算設備或節點上同時訓練機器學習模型的過程。這種方法可以加快訓練過程,尤其是在需要大型數據集來訓練復雜模型時。
在分布式模型訓練中,數據集被分成較小的子集,每個子集由不同的節點并行處理。這些節點可以是集群中的各個機器、各個進程或 Kubernetes 集群中的各個 Pod。它們可能可以訪問 GPU。每個節點獨立處理其數據子集并相應地更新模型參數。以下五個庫使開發人員免受分布式訓練的大部分復雜性影響。如果您沒有集群,可以在本地運行它們,但您需要一個集群才能看到訓練時間顯著減少。
- DeepSpeed(來自 Microsoft)
- Horovod(來自 Uber)
- Ray(來自 Anyscale)
- Spark PyTorch Distributor(來自 Databricks)
- Spark TensorFlow Distributor(來自 Databricks)
6. 模型中心
模型中心實際上并不是現代數據湖參考架構的一部分,但我還是將其包括在內,因為它對于快速入門生成式 AI 非常重要。Hugging Face 已成為獲取大型語言模型的去處。Hugging Face 托管著一個模型中心,工程師可以在其中下載預訓練模型并分享他們自己創建的模型。Hugging Face 也是 Transformers 和 Datasets 庫的作者,這些庫與大型語言模型 (LLM) 及用于訓練和微調它們的數據配合使用。
還有其他模型中心。所有主要的云供應商都有一些上傳和共享模型的方法,但 Hugging Face 憑借其模型和庫集合已成為該領域的領導者。
- Hugging Face
7. 應用程序框架
應用程序框架有助于將 LLM 納入應用程序。使用 LLM 與使用標準 API 不同。必須做大量工作才能將用戶請求轉換為 LLM 可以理解和處理的內容。例如,如果您構建了一個聊天應用程序,并且您想使用檢索增強生成 (RAG),那么您需要對請求進行標記化,將標記轉換為向量,與向量數據庫(如下所述)集成,創建一個提示,然后調用您的 LLM。生成式 AI 的應用程序框架將允許您將這些操作鏈接在一起。
當今使用最廣泛的應用程序框架是 LangChain。它與其他技術集成,例如 Hugging Face Transformer 庫和 Unstructured 的文檔處理庫。它功能豐富,使用起來可能有點復雜,因此下面列出了一些替代方案,供那些沒有復雜要求且希望比 LangChain 更簡單的東西的人使用。
- LangChain
- AgentGPT
- Auto-GPT
- BabyAGI
- Flowise
- GradientJ
- LlamaIndex
- Langdock
- TensorFlow (Keras API)
8. 文檔處理
大多數組織沒有一個包含干凈準確文檔的單一存儲庫。相反,文檔分散在組織的各個團隊門戶中,采用多種格式。為生成式 AI 做準備時的第一步是構建一個流水線,該流水線僅獲取已批準與生成式 AI 一起使用的文檔,并將它們放入您的向量數據庫中。對于大型全球組織來說,這可能是生成式 AI 解決方案最困難的任務。
圖片
文檔流水線應將文檔轉換為文本,對文檔進行分塊,并將分塊文本通過嵌入模型運行,以便可以將它的向量表示保存到向量數據庫中。幸運的是,一些開源庫可以針對許多常見文檔格式執行此操作。下面列出了一些庫。這些庫可以與 LangChain 一起使用來構建完整的文檔處理流水線。
- Unstructured
- Open-Parse
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 ...
這種手動相似性搜索不僅艱巨且容易出錯,而且搜索本身也非常緩慢。向量數據庫可以接受如下請求,并更快、更準確地運行查詢。如果您希望使用檢索增強生成,那么快速準確地運行語義查詢的能力非常重要。
{
Get {
MyCorpusTable(nearText: {concepts: ["artificial intelligence"]})
{snippet}
}
}
下面列出了四個流行的向量數據庫:
- Milvus
- Pgvector
- Pinecone
- Weaviate
10. 數據探索和可視化
擁有允許您整理數據并以不同方式對其進行可視化的工具始終是一個好主意。下面列出的 Python 庫提供了數據處理和可視化功能。這些看起來像是您僅在傳統 AI 中需要的工具,但它們在生成式 AI 中也很有用。例如,如果您正在進行情緒分析或情感檢測,那么您應該檢查您的訓練、驗證和測試集,以確保您在所有類別中都有適當的分布。
- Pandas
- Matplotlib
- Seaborn
- Streamlit
結論
您已經了解了十種功能,這些功能可以在現代數據湖參考架構中找到,以及針對每種功能的具體供應商產品和庫。下面是一個總結這些工具的表格:
技術領域 | 工具 |
數據湖 | MinIO, AWS, GCP, Azure |
基于 OTF 的數據倉庫 | Dremio |
Dremio Sonar | |
Dremio Arctic | |
Starburst | |
開放式數據倉庫 | Starburst |
機器學習框架 | PyTorch |
TensorFlow | |
機器學習運維 | MLRun (麥肯錫公司) |
MLflow (Databricks) | |
Kubeflow (谷歌) | |
分布式訓練 | DeepSpeed (微軟) |
Horovod (優步) | |
Ray (Anyscale) | |
Spark PyTorch Distributor (Databricks) | |
Spark Tensoflow Distributor (Databricks) | |
模型倉庫 | Hugging Face |
應用框架 | LangChain |
AgentGPT | |
Auto-GPT | |
BabyAGI | |
Flowise | |
GradientJ | |
LlamaIndex | |
Langdock | |
TensorFlow (Keras API) | |
文檔處理 | 非結構化 |
Open-Parse | |
向量數據庫 | Milvus |
Pgvector | |
Pinecone | |
Weaviate | |
數據探索和可視化 | Pandas |
Matplotlib | |
Seaborn | |
Streamlit |