在 Kubernetes 云平台上训练和部署生成式 AI 大模型

近年来,生成式 AI 凭借其卓越的技术在各个领域掀起了巨大的轰动。通过大模型,AI 能够创造出逼真的文本、图像、音频等作品,甚至涉足音乐、绘画等艺术领域。这项技术不仅在娱乐、创意产业中大放异彩,还在医疗、教育等领域展现出广阔的应用前景。生成式 AI 的蓬勃发展引发了人们对智能创造力、语言理解等问题的深入思考,成为人工智能领域的热门话题之一。

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

生成式 AI 备受开发者关注,他们不断探索大模型的性能和应用范围。通过开发创新的应用和解决方案,他们积极将生成式 AI 技术运用到各个领域。对于大多数开发者而言,他们期望能够利用大模型来迅速支持应用开发,而不是深入研究其训练和部署的细节。然而,也有一部分开发者可能对大模型的底层机制感兴趣,或者出于整个团队的 AI 开发需求,他们会深入学习以便进行架构设计和部署工作。

提及大模型,就不得不提到 Anthropic 的 Claude 3。一经推出,这款生成式 AI 大模型立即引起了轰动效应。在各项基准测试中,Claude 3 表现出色,超越了市面上许多同类产品。它在语言、数学、编程、知识问答、文本推理等多个领域的基准测试中都表现优异,已经达到了行业领先水平。

本文不深入讨论 Claude 3 的细节,但我想简要介绍一下它背后成功的底层支撑平台。除了其独特的算法之外,Claude 3 之所以能够获得如此出色的性能,还得益于其底层平台的支持。Anthropic 利用亚马逊云科技构建、训练和部署其拥有数十亿参数的大模型 Claude,这一过程高效可靠。Anthropic 采用了带有 Karpenter 自动伸缩功能的 Amazon EKS,并使用 Amazon S3 进行模型检查点的构建,同时还包括使用 Apache Spark 进行数据处理、模型训练和推理等应用。这一架构的效果非常明显,使得训练作业可扩展至数万个 Pod,并且通过 Karpenter 和 Spot 实例的使用,成本降低了 40%。这是 Kubernetes 支撑生成式 AI 的一个典型案例。更多的技术细节请参考下方二维码里的链接。

image.png

众所周知,机器学习面临着诸多挑战,不仅限于当前生成式 AI 阶段,过去的深度学习和机器学习也同样如此。其中一个重要挑战是依赖管理。由于机器学习训练或推理环境通常需要大量的软件包,并且这些包之间存在着复杂的依赖关系,因此良好的依赖管理至关重要,以确保机器学习环境的顺畅运行。此外,机器学习通常需要进行分布式训练,无论是模型还是数据的分布式,都需要对数据或模型进行分块,并在不同的 GPU 上进行分布式训练,因此需要考虑到计算能力的调配和扩展问题。此外,机器学习还涉及一系列安全性和合规性问题。

我们一直在努力解决这些问题。因此,早在多年前,我们就开始将容器应用于机器学习环境。通过这一做法,我们能够更好地确保环境的一致性,包括训练和推理环境中的软件包、库以及依赖关系。将它们打包到相同的独立单元中,确保具有相同的配置,这样就能够保证整个容器化的机器学习环境有更好的一致性。与此同时,容器也是一种方便的部署方式,可以轻松部署在不同的云平台、本地环境、混合环境甚至边缘环境中。容器还能够更好地帮助进行资源隔离,从而使得机器学习任务能够更好地执行。此外,容器还带来了诸如可扩展性、版本控制等优势,能够确保机器学习模型和环境更加简单和透明。因此,近年来,我们一直将容器应用于机器学习中。

Kubernetes 在机器学习领域的应用日益广泛。作为一个容器的自动化编排工具,Kubernetes 能够根据负载动态扩展和缩减资源需求,帮助我们灵活地调整计算资源,以适应不同的机器学习任务。它提供了更灵活、更便捷的资源管理和调度功能,确保底层计算资源和存储资源能够充分应用于训练或推理环境中。Kubernetes 内置了多种容错机制,保障机器学习的高可用性,并且支持多种环境,包括多云、混合云、本地甚至边缘环境。此外,Kubernetes 中的负载均衡等功能能够更方便地管理多个机器学习任务,提升通信效率。另外,Kubernetes 作为一个庞大的生态系统,提供了许多工具、服务和软件的支持,包括存储、日志、可观测性和监控等,为机器学习提供全方位的支持。这些是 Kubernetes 被广泛应用于机器学习的重要原因之一。

image.png

因此,我们不禁思考:既然我们已经进入了生成式 AI 的时代,为什么不将 Kubernetes 应用于大模型的训练和部署呢?显然,答案是肯定的。我们可以看到越来越多的开发者和企业正在使用 Kubernetes 的基础设施来进行大模型的训练和部署。

在训练传统的机器学习模型和大模型之间存在许多不同之处。首先是数据规模,训练大模型需要大量数据,而传统机器学习模型的训练集通常规模较小。当然,这并非绝对,但针对大模型的算法实现通常更加复杂,需要更多底层设施,如更多 GPU、存储和高速通信能力。因此,自动化配置和管理这些基础设施,使其顺利地应用于训练和推理工作负载,是一个非常值得考虑和研究的过程。其次,这涉及到分布式的问题:如何在节点之间进行数据和模型的分布式处理?在构建好分布式架构之后,如何让节点更好地协同,以实现模型的快速训练?在训练过程中,我们如何减少故障?由于训练大模型可能需要大量的 GPU 时间,因此如何快速发现和解决故障,或通过其他方式减少故障,也是需要考虑的重要问题。

对于亚马逊云科技而言,我们可以利用 Amazon EKS 来处理大规模的分布式训练工作负载,全面提升计算能力、存储网络和实例性能。首先,我们着眼于加速计算能力。亚马逊云科技与英伟达长期合作,提供最新的 EC2 GPU 实例。此外,我们的自研芯片也能有效加速训练和推理过程。我们还借助自动伸缩能力,实现对计算节点的快速调整,为计算提供更强大的支持。除了硬件层面,软件优化也至关重要。我们提供了专为 Kubernetes 和机器学习优化的操作系统镜像和容器镜像,以最大程度地发挥软硬件协同优势。在存储方面,通过一系列驱动程序的优化,我们实现了存储和计算节点之间更高效、更高性能的互联,使得计算存储能够协同高速运行。在网络方面,我们不断提升性能,降低延迟,提供更高效的网络互联,以确保分布式训练的性能达到最佳水平。

image.png

接下来,我想分享一个优秀实践,这是我们官方博客上的一个案例,展示了如何利用 Amazon EKS 上的 Trainium 实例来训练 Llama2 大模型。Trainium 是亚马逊云科技自研的一款面向训练工作负载的芯片。在这个架构中,我们利用 Terraform 构建了 Amazon EKS 集群和托管 EKS 节点组,其中包含 Trainium 实例,为大模型的训练提供了可扩展的计算资源。通过构建容器镜像,我们将 Neuron SDK 集成到 Docker 容器中,并在 Amazon EKS 集群中部署这些容器,作为模型训练作业的运行环境。此外,我们使用 Amazon FSx for Lustre 作为共享文件系统,用于存储数据集、tokenizer 文件、模型训练脚本、训练日志和模型检查点,确保训练作业中的数据共享和一致性。在开始训练之前,我们进行了前期准备和配置工作,包括下载 tokenizer 文件、准备数据集和修改训练脚本。通过 Kubernetes MPI Operator 协调分布式训练,每个工作 Pod 在单个 Trainium 实例上运行,并通过高速、低延迟的网络通信进行协作。我们利用 Tensorboard 和 neuron-top 等工具监控训练作业的进度和 Trainium 芯片的利用率,提供了对训练性能和资源利用的可视化。最后,我们编写了清理脚本,在完成训练后清理所有部署的资源,以节省成本并避免资源浪费。

image.png

架构的示意图如上,您可以通过扫描下方的二维码查看完整的博客。

image.png

对于大模型而言,推理阶段也面临着多种挑战,其中规模是首要挑战。与训练不同,我们更关注推理集群的自动扩展和缩减能力。确保推理集群能够根据用户需求实时扩展或缩小规模至关重要。例如,某领先的大模型提供商,用户的使用量可能会在不同时间出现差异,在去年会频繁遇到推理容量不足,无法为用户提供服务的情况。因此,如何根据后台推理的规模实现自动扩展和缩减,以提供更多有效的推理资源,是一个需要解决的核心问题。将大模型部署在云端会更便捷、更快速地解决这一问题,提供更好的响应能力。另外,性能也是至关重要的考量因素。当然,性能和响应时间本身可能存在一种妥协,需要根据实际应用场景确定。另一个同样重要的因素是成本。有研究表明,机器学习中大约 90% 的成本都用于推理阶段。因此,如何优化这一成本是非常需要考虑的问题。

我想提到的是亚马逊云科技推出的开源项目 Karpenter,这是一个针对 Kubernetes 的自动化伸缩工具。Karpenter 旨在帮助开发者和企业根据不同的工作负载实现弹性扩展和伸缩。它提供了一整套自动伸缩组和用户自定义的策略,通过这些策略的组合来自动调整集群中节点的数量,从而更有效地利用资源,确保 Kubernetes 集群具有足够的容量来运行工作负载。虽然 Karpenter 最初并不是专门为生成式 AI 或机器学习工作负载而构建的,但在实践中,我们发现它能够更好地支持生成式 AI 工作负载,特别是推理工作负载的弹性伸缩。这不仅提升了性能,降低了成本,也使我们逐渐将 Karpenter 应用于机器学习环境中。它能够自动化节点管理,相较于传统的 auto scaler 更为智能,能够进行更准确的预测和伸缩。同时,它提供了更强大的弹性展开和成本优化能力,帮助开发者更好地在容器上部署机器学习推理。

亚马逊云科技提出了名为 JARK 的综合解决方案,用于端到端的机器学习编排。JARK 堆栈包含四个核心组件:JupyterHub、Argo Workflows、Ray 和 Kubernetes。这个堆栈是在 Amazon EKS 上运行 Gen AI 模型的关键组成部分。

  • JupyterHub:JupyterHub 提供了一个共享平台,可在业务、教育和研究中运行流行的笔记本。在 Gen AI 领域,JupyterHub 加速了实验过程,特别是在反馈循环中。数据工程师可以在此平台上协作创建用于 Prompt Engineering 的模型。

  • Argo Workflows:Argo Workflows 是一个开源的容器本地工作流引擎,用于在 Kubernetes 上编排并行作业。它提供了一个结构化和自动化的流水线,专门用于模型的微调。

  • Ray:Ray 是一个开源的分布式计算框架,可以轻松扩展应用程序并使用最先进的机器学习库。Ray 用于在多个节点上分布训练生成模型,加速训练过程并处理更大的数据集。

  • Kubernetes:Kubernetes 是一个强大的容器编排平台,可自动化容器化应用程序的部署、扩展和管理。在 Amazon EKS 上运行 Gen AI 模型的基础设施建立在 Kubernetes 之上。

我再分享一个来自亚马逊云科技官方博客的案例,展示了如何在 Amazon EKS 上部署 Stable Diffusion 模型。使用 Amazon EKS 部署 Stable Diffusion 模型的步骤大致如下:首先,创建 Amazon EKS 集群,可使用 Terraform 或亚马逊云科技管理控制台完成,并确保网络和安全组设置正确。接着,配置 Kubernetes 命令行工具(kubectl),与 Amazon EKS 集群进行交互,包括应用程序部署和工作负载管理等。然后,部署必要的基础组件到 Amazon EKS 集群中,如 JupyterHub、Argo Workflows 和 Ray,这些组件构成了 Stable Diffusion 模型部署的基础设施。随后,配置 Ingress 控制器和负载均衡器,将外部流量引导到 Amazon EKS 中的服务。接下来,在 Amazon EKS 中创建 GPU 节点组,用于托管需要 GPU 加速的模型训练和推理任务。然后,在 Amazon EKS 集群中部署 Stable Diffusion 模型,可利用 Hugging Face 的 Accelerate 和 Diffusers 库来简化模型部署和优化训练过程。最后,使用工具如 Ray Serve 配置模型服务,实现模型的在线推理功能,并对模型服务进行验证和优化。

架构的示意图如上,您可通过扫描下方的二维码获取完整博客,进一步了解细节。

总结来说,在 Kubernetes 平台上,尤其是在亚马逊云科技的 Amazon EKS 上,我们已经建立了完善的数据和生成式 AI 生态系统,快速支持生成式 AI 的训练和推理。我们提供了示例代码、优秀实践和基础设施即代码(IAC)模板等资源,欢迎大家学习和探索。同时,我们也欢迎大家就我们的代码提出更多修改和改进意见:https://github.com/awslabs/data-on-eks?trk=cndc-detail

文章来源:https://dev.amazoncloud.cn/column/article/666251c20c2e76418f991846?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=bokey

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/721244.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win 11取消锁屏的弹出的广告設置

【问题】:安装了WIN 11后,在屏保时,默认会看到天气和其他的无关信息。如下图所示 如果是家用电脑没有太多影响,但办公电脑的话,让别人看到这些与工作无关的信息,避免同事误会,最好能取消这些设置。 【解决方法】:通过电脑配置,可取消显示这些与工作无关的信息,具体的…

2. 第二型曲面积分

掌握曲面侧的概念。掌握第二型曲面积分的定义和计算公式(特别要注意参数方程给出的光滑曲面的计算公式中正负号的选择)。了解两种曲面积分的关系。 重点习题:例1、例2 难点:将第二型曲面积分化为重积分时如何确定正负号。 显性形式时,法线方向与坐标轴正向成锐角时取正号,…

【译】通过出色的开发人员体验,将乐趣最大化,将痛苦最小化

有一条通往开发者幸福的道路——开发者可以更多地专注于编码,而不是运维;在那里他们可以以创造力的速度进行创新;他们可以快速发展,而不必担心管理他们的应用程序所依赖的基础设施。未来总是由开发者开始。他们决定了创新的速度,在今天这个生成式人工智能的时代,这一点从…

C#/.NET/.NET Core优秀项目和框架2024年5月简报

前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项…

读AI未来进行式笔记05元宇宙与XR

读AI未来进行式笔记05元宇宙与XR1. 元宇宙 1.1. 元宇宙(Metaverse)的概念起源于美国作家尼尔斯蒂芬森于1992年出版的科幻小说《雪崩》 1.1.1. 书中描述的是一个和现实世界平行但又紧密联系的超现实主义的三维数字虚拟空间,在现实世界中地理位置彼此…

NPU技术基础杂谈

NPU技术基础杂谈 NPU 基础 近年来,随着人工智能技术的飞速发展,AI 专用处理器如 NPU(Neural Processing Unit)和 TPU(Tensor Processing Unit)也应运而生。这些处理器旨在加速深度学习和机器学习任务,相比传统的 CPU 和 GPU,它们在处理 AI 任务时表现出更高的效率和性能…

解决历理 win11延迟系统更新时间

Win11系统更新中,暂停更新是有时间限制的,默认最多只能暂停 5 周更新,之后需要暂停更新就要先更新,因此有些用户觉得暂停更新的时间太短了,这篇文章是本站给大家分享的Win11增加系统暂停更新时间教程。1、首先,按键盘上的【 Win + X 】组合键,或右键点击任务栏上的【Win…

PHP历理 PhpStorm的代码换行

打开 文件 -> 设置 -> 编辑器 -> 常规 -> 自动换行,勾选中“对这些文件进行软换行” *.php;*.js;*.html效果图:

Linux下实现简易Shell

转载:https://blog.csdn.net/dxyt2002/article/details/129800496文章目录 简易Shell实现简易shell功能实现shell1. 循环接收用户命令2. 创建子进程执行命令分割字符串 3. 回收子进程4. 优化不足5. 自建命令添加 简易shell代码 简易Shell实现 我们在Linux中使用的shell, 一般…

详析进程控制进程替换

转载:https://blog.csdn.net/dxyt2002/article/details/129745548文章目录 再识fork()为什么子进程只运行fork()之后代码写时拷贝为什么要用写时拷贝? fork()也可能创建子进程失败 再识进程终止正确认识进程终止查看进程的退出码 exit() 和 _exit() 退出进程 进程等待等待方法…

Android studio增删改查尚未全部完成时如何查看数据库

Android studio相当体贴的内嵌了,点击App Inspection(一般在Android studio左下角附近) 然后不需要操作了,稍等一下数据库表格就会刷新出来