GenAI 技术栈与它的十件武器

GenAI 技术栈与它的十件武器

在了解通用人工智能(GenAI)架构之前,做为架构师的我们,可以从现代数据湖参考架构中借鉴到通用的 10 项重要功能,包括每个功能的相关工具与库,这可以称为AI开发者工具箱的十件武器。

现代数据湖,有时也称为数据湖屋,其一半是数据湖,一半是基于开放表格式规范 (OTF) 的数据仓库。这两者都建立在现代级对象存储上。

接下来,让我们深入思考了组织如何构建 AI 数据基础设施,以支持所有 AI/ML 需求,而不仅仅是训练集、验证集和测试集的原始存储。换句话说,它应该包含训练大型语言模型、MLOps 工具、分布式训练等所需的计算能力。

本文尝试介绍如何使用现代数据湖参考架构来支持我们的 AI/ML需求。下图展示了现代数据湖参考架构,其中重点介绍了生成 AI 所需的功能。

来源:现代数据湖中的 AI/ML

现在我们先讨论一下构建现代数据湖所需的供应商和工具。在这 10 件武器列表中,每个都是支持生成式 AI 所需的一项重要能力。

1. 数据湖


企业数据湖建立在对象存储之上。它不是以前那种使用廉价和深度存档用例的老式基于设备的对象存储,而是现代、高性能、软件定义和 Kubernetes 原生对象存储,它们是现代 GenAI 堆栈的基石。

它们可以作为服务(AWS、Google Cloud Patform (GCP)、Microsoft Azure)或本地或混合/两者使用,例如 MinIO。

这些数据湖必须支持流式工作负载,必须具有高效的加密和纠错删码,需要将元数据与对象一起原子存储,并支持 Lambda 计算等技术。

有鉴于这些现代替代方案是云原生的,它们将与其他云原生技术的整个堆栈集成,从防火墙到可观察性再到用户和访问管理,做到开箱即用。

2.基于OTF的数据仓库


对象存储是基于 OTF-B (Apache Iceberg、Apache Hudi 和 Delta Lake)的数据仓库的底层存储解决方案。


将对象存储用于数据仓库可能听起来很奇怪,但以这种方式构建的数据仓库代表了下一代数据仓库。此技术得益于 Netflix、Uber 和 Databricks 编写的 OTF 规范,这使得在数据仓库中使用对象存储变得更加平滑无缝。


OTF的诞生是因为市场上没有产品能够满足创建者的数据需求。本质上,它们所做的(以不同的方式)都是定义一个可以构建在对象存储之上的数据仓库。对象存储提供了其他存储解决方案无法提供的可扩展容量和高性能的组合。


这些产品是基于现代的全新规范,它们具有老式数据仓库所不具备的高级功能,例如分区演变、模式演变和零拷贝分支等。


两个可以在 MinIO 上运行基于 OTF 的数据仓库的 MinIO 伙伴是 Dremio 和 Starburst。


  • 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/)


3.机器学习操作(MLOps)


MLOps 之于机器学习,就如同 DevOps 之于传统软件开发。两者都是一套旨在改善工程团队 (Dev 或 ML) 和 IT 运营 (Ops) 团队之间协作的实践和原则。其目标是利用自动化简化开发生命周期,从规划和开发到部署和运营。


这些方法的主要优点之一是持续改进。


MLOps 技术和功能在不断发展,我们需要一个由主要参与者支持的工具,以确保该工具不断发展和改进并提供长期支持。


以下这些工具中的每一个工件都使用 MinIO 来存储模型生命周期:

  • MLRun(Iguazio,被麦肯锡收购。https://www.mlrun.org/)

  • MLflow(Databricks,https://mlflow.org/)

  • Kubeflow(谷歌,https://www.kubeflow.org/)


4.机器学习框架


机器学习框架是用来创建模型并编写训练模型的代码的库(通常为 Python)。这些库功能丰富,它们提供了一系列不同的损失函数、优化器、数据转换工具和用于神经网络的预构建层。这两种库提供的最重要的功能是张量,张量是可以移动到 GPU 上的多维数组。此外,它们还具有自动微分功能,可用于模型训练。


当今最流行的两个机器学习框架是 PyTorch(来自 Facebook)和 Tensorflow(来自 Google)。


  • PyTorch(https://pytorch.org/)

  • TensorFlow(https://www.tensorflow.org/)


5.分布式训练


分布式模型训练是在多个计算设备或节点上同时训练机器学习模型的过程。


这种方法可以明显加快训练过程,特别是在需要大量数据集来训练复杂模型时。分布式模型训练中,数据集被划分为较小的子集,每个子集由不同的节点并行处理。这些节点可以是集群中的单个机器、单个进程或 Kubernetes 集群中的单个 pod。


它们均可以访问 GPU。每个节点独立处理其数据子集,并相应地更新模型参数。


以下五个库可使开发人员免受分布式训练的大部分复杂性。如果没有集群,也可以在本地运行它们,但你需要一个集群,才能看到训练时间的显着减少。


  • 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)


<h2 style="outline-style: initial; outline-width: 0px; font-weight: 400; font-size: 16px; max-width: 100%; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, " system-ui",="" "helvetica="" neue",="" "pingfang="" sc",="" "hiragino="" sans="" gb",="" "microsoft="" yahei="" ui",="" yahei",="" arial,="" sans-serif;="" letter-spacing:="" 0.544px;="" text-align:="" justify;="" overflow-wrap:="" break-word=&qu

Leave a Comment