导读:从现代数据湖参考架构中找到的顶级 10 件武器和功能,以及每个功能的供应商工具和扩展库。
在了解通用人工智能(GenAI)架构之前,做为架构师的我们,可以从现代数据湖参考架构中借鉴到通用的 10 项重要功能,包括每个功能的相关工具与库,这可以称为AI开发者工具箱的十件武器。
现代数据湖,有时也称为数据湖屋,其一半是数据湖,一半是基于开放表格式规范 (OTF) 的数据仓库。这两者都建立在现代级对象存储上。
接下来,让我们深入思考了组织如何构建 AI 数据基础设施,以支持所有 AI/ML 需求,而不仅仅是训练集、验证集和测试集的原始存储。换句话说,它应该包含训练大型语言模型、MLOps 工具、分布式训练等所需的计算能力。
本文尝试介绍如何使用现代数据湖参考架构来支持我们的 AI/ML需求。下图展示了现代数据湖参考架构,其中重点介绍了生成 AI 所需的功能。
来源:现代数据湖中的 AI/ML
现在我们先讨论一下构建现代数据湖所需的供应商和工具。在这 10 件武器列表中,每个都是支持生成式 AI 所需的一项重要能力。
企业数据湖建立在对象存储之上。它不是以前那种使用廉价和深度存档用例的老式基于设备的对象存储,而是现代、高性能、软件定义和 Kubernetes 原生对象存储,它们是现代 GenAI 堆栈的基石。
它们可以作为服务(AWS、Google Cloud Patform (GCP)、Microsoft Azure)或本地或混合/两者使用,例如 MinIO。
这些数据湖必须支持流式工作负载,必须具有高效的加密和纠错删码,需要将元数据与对象一起原子存储,并支持 Lambda 计算等技术。
有鉴于这些现代替代方案是云原生的,它们将与其他云原生技术的整个堆栈集成,从防火墙到可观察性再到用户和访问管理,做到开箱即用。
Dremio Sonar(数据仓库处理引擎,https://docs.dremio.com/current/sonar/)
Dremio Arctic(数据仓库目录,https://docs.dremio.com/cloud/arctic/)
Open Data Lakehouse | Starburst(目录和处理引擎,https://www.starburst.io/solutions/open-data-lakehouse/)
MLRun(Iguazio,被麦肯锡收购。https://www.mlrun.org/)
MLflow(Databricks,https://mlflow.org/)
Kubeflow(谷歌,https://www.kubeflow.org/)
PyTorch(https://pytorch.org/)
TensorFlow(https://www.tensorflow.org/)
DeepSpeed(来自微软,https://www.deepspeed.ai/)
Horovod(来自 Uber,https://horovod.ai/)
Ray(来自 Anyscale,https://www.ray.io/)
Spark PyTorch 分发器(来自 Databricks,https://www.databricks.com/blog/2023/04/20/pytorch-databricks-introducing-spark-pytorch-distributor.html)
Spark TensorFlow 分发器(来自 Databricks,https://docs.databricks.com/en/_extras/notebooks/source/deep-learning/spark-tensorflow-distributor.html)
Hugging Face(https://huggingface.co/)
LangChain(https://www.langchain.com/)
AgentGPT(https://agentgpt.reworkd.ai/)
AutoGPT(https://autogpt.net/)
babyAGI(https://github.com/yoheinakajima/babyagi)
Flowiseai(https://flowiseai.com/)
GradientJ(https://www.gradientj.com/)
LamaIndex(https://docs.llamaindex.ai/en/latest/)
LangDock(https://www.langdock.com/)
TensorFlow(Keras API,https://www.tensorflow.org/)
文档管道将文档转换为文本,对文档进行分块,并通过嵌入模型运行分块后的文本,以便将其向量表示保存到向量数据库中。
幸运的是,一些开源库可以为许多常见的文档格式执行此操作。下面列出了一些库。这些库可以与 LangChain 一起使用,以构建完整的文档处理管道。
非结构化(https://github.com/Unstructured-IO/unstructured)
开放式解析(https://github.com/Filimoa/open-parse)
向量数据库(也会称作矢量数据库)有助于进行语义搜索。
理解如何做到这一点需要一些比较多的数学背景,而且比较复杂。但是也不用着急,语义搜索在概念上很容易理解。假设你想找到所有讨论与“人工智能”相关的文档。
要在传统数据库中执行此操作,你需要搜索“人工智能”的所有可能的缩写、同义词和相关术语。我们的查询将类似如下所示:
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(https://milvus.io/)
PgVector(https://github.com/pgvector/pgvector)
Pinecone(https://www.pinecone.io/)
Weaviate(https://weaviate.io/)
Pandas(https://pandas.pydata.org/)
Matplotlib(https://matplotlib.org/)
SeaBorn(https://seaborn.pydata.org/)
Streamlit(https://streamlit.io/)
数据湖 | MinIO,AWS,GCP,Azure |
基于OTF的数据仓库 | Dremio(https://www.dremio.com/)Dremio sonar(https://docs.dremio.com/current/sonar/)Dremio Arctic(https://docs.dremio.com/cloud/arctic/)Starburst(https://www.starburst.io/)Opendata Lakehouse | Starburst(https://www.starburst.io/solutions/open-data-lakehouse/) |
机器学习框架 | PyTorch(https://pytorch.org/)TensorFlow(https://www.tensorflow.org/) |
机器学习操作 | MLRun(麦肯锡,https://www.mlrun.org/)MLflow(Databricks,https://mlflow.org/)Kubeflow(谷歌,https://www.kubeflow.org/) |
分布式训练 | DeepSpeed(微软,https://www.deepspeed.ai/)Horovod(来自 Uber,https://horovod.ai/)Ray(来自 Anyscale,https://www.ray.io/)Spark PyTorch 分布器(https://www.databricks.com/blog/2023/04/20/pytorch-databricks-introducing-spark-pytorch-distributor.html)Spark Tensoflow 分布器(https://docs.databricks.com/en/_extras/notebooks/source/deep-learning/spark-tensorflow-distributor.html) |
模型中心 | HuggingFace(https://huggingface.co/) |
应用程序框架 | LangChain(https://www.langchain.com/)AgentGPT(https://agentgpt.reworkd.ai/)Auto-GPT(https://autogpt.net/)BabyAGI(https://github.com/yoheinakajima/babyagi)Flowise(https://flowiseai.com/)GradientJ(https://www.gradientj.com/)LlamaIndex(https://docs.llamaindex.ai/en/latest/)Langdock(https://www.langdock.com/)TensorFlow (Keras API,https://www.tensorflow.org/) |
文件处理 | 非结构化(https://github.com/Unstructured-IO/unstructured)开放式解析(https://github.com/Filimoa/open-parse) |
矢量数据库 | Milvus(https://milvus.io/)Pgvector(https://github.com/pgvector/pgvector)Pinecone(https://www.pinecone.io/)Weaviate(https://weaviate.io/) |
数据探索和可视化 | Pandas(https://pandas.pydata.org/)Matplotlib(https://matplotlib.org/)Seaborn(https://seaborn.pydata.org/)Streamlit(https://streamlit.io/) |
希望本文为各位的AI 事业增加一点调料。
作者:校长
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。