AI生态中的云原生组件
1.核心云原生组件
容器化技术是云原生的核心,它通过将应用及其依赖项打包到一个轻量级、独立的容器中,确保了应用在不同环境中的一致运行。
作为两种主流的容器引擎,Docker和containerd广泛应用于AI模型的开发和部署。Docker提供了简便的容器化工具链,而containerd则作为一个高效、专注的容器运行时,为Kubernetes等平台提供底层支持。容器化AI模型可以在本地开发环境与云端无缝切换,减少环境差异带来的问题。
AI应用通常由多个容器化服务组成,这些服务需要协调和管理,以确保它们能够有效地协同工作。容器编排工具在这一过程中扮演着至关重要的角色,其中主流的编排工具有KUbernetes和Kubeflow。
作为当前最流行的容器编排平台,Kubernetes提供了自动化部署、扩展和管理容器化应用的功能。对于AI工作负载,Kubernetes可以调度和管理计算资源,确保AI模型训练和推理任务的高效执行。
Kubeflow是一个基于Kubernetes的开源机器学习平台,专为简化AI模型的开发、训练和部署而设计。它集成了TensorFlow、PyTorch等主流深度学习框架,并提供了流水线管理、超参数调优等功能,帮助开发者构建和管理复杂的AI工作流。
2.模型分布式训练
AI模型的训练通常需要处理海量数据和复杂的计算任务,单台机器难以承担这一过程。分布式训练通过在多台机器上并行处理数据和计算任务,大大缩短了模型训练的时间,业界常用的训练框架主要有PyTorch、Megatron-Deepspeed和MindSpore等。
PyTorch是一个开源的深度学习框架,它采用动态计算图(Dynamic Computation Graph),允许用户在模型训练过程中动态构建计算图,提供了高度的灵活性和易用性。PyTorch 的核心组件包括张量计算、自动微分、神经网络模块以及数据加载工具,这些组件集成在一个框架中,用以支持 GPU 加速和分布式训练。PyTorch的动态计算图使得模型调试和开发更加直观,尤其适合研究和开发阶段的实验,而且它的API 设计符合 Python 的编程习惯,使用起来非常直观,容易上手。
Megatron-Deepspeed通过模型并行、数据并行、流水线并行以及混合精度训练等技术,实现了对超大规模模型的高效 分布式训练。它针对超大规模模型训练进行了深入优化,能够有效利用多 GPU 和多节点的计算资源。并且结合 Megatron 和 DeepSpeed 的优势,实现了极高的计算效率和资源利用率,特别适合训练庞大的语言模型。并且通过 ZeRO (Zero Redundancy Optimizer) 技术,极大减少了模型参数、优化器状态和梯度的内存占用,使得在有限的硬件资源上训练更大的模型成为可能。
MindSpore 是华为开发的全场景 AI 计算框架,设计用于端、边、云的全场景部署。它支持动态图和静态图模式,采用了深度优化的计算图和分布式训练技术,能够适应各种硬件环境,包括 Ascend AI 处理器、GPU 和 CPU。并且它针对华为 Ascend 芯片进行了深度优化,在 Ascend 平台上具有显著的性能优势。还提供了模型切片和差分隐私等功能,增强了模型的安全性和数据隐私保护。
3.AI 推理服务
在模型训练完成后,如何高效地将模型应用于实际推理任务,是AI系统落地的关键。云原生架构为推理服务的部署、扩展和管理提供了高效的解决方案。
vLLM是一个高性能的分布式推理引擎,专为LLM设计,能够在推理任务中显著提升效率和吞吐量,它通过一种新的注意力算法,有效地管理注意力键和值,极大提升了实时场景下语言模型服务的吞吐量和内存使用效率。同时,vLLM也支持分布式推理,可以跨多个GPU和节点分配推理任务。它通过一种名为PipelineParallelism的技术,在多个GPU之间分解和流水线化推理任务,进而提升推理吞吐量。
除了分布式推理,vLLM还支持多种硬件平台,包括NVIDIA GPU、AMD CPU和GPU、IntelCPU和GPU、PowerPC CPU、TPU和AWS Neuron,并且与提供了与HuggingFace模型的无缝集成,用户无需对模型架构或者现有代码进行修改即可在vLLM上部署基于Transformers的模型。
KServe是一个专为机器学习模型推理而设计的框架,能够在云原生环境中高效管理、部署机器学习模型。它通过自定义资源(CRD)来管理模型推理服务,这些CRD使得用户可以通过声明方式来定义模型的部署和服务配置。
在云原生环境中,协同与调度是确保应用程序高效运行的关键要素。随着应用负载的动态变化以及多样化的工作负载类型的增加,传统的静态资源分配方式已无法满足现代应用的需求。云原生架构下,出现了一些专门用于协同与调度的组件,如KEDA、Kueue和Volcano,它们为应用程序提供了更加灵活和智能的调度能力。
4.协同和调度
KEDA(KubernetesEvent-DrivenAutoscaling)是一个开源的Kubernetes扩展组件,专为事件驱动的自动扩展而设计。它使Kubernetes工作负载能够根据外部事件源的指标(如消息队列长度、数据库查询量、HTTP请求数量等)自动进行扩展。KEDA的核心优势在于:
(1)事件驱动的扩展:KEDA支持多种事件源,包括Kafka、Azure Service Bus、AWS SQS等,这使得应用程序可以基于实时数据自动调整其资源。
(2)精细化的扩展控制:KEDA允许开发者为每个应用定义自定义的扩展规则,从而实现更精确的资源管理。
(3)无缝集成Kubernetes:KEDA作为Kubernetes的控制器运行,可以与现有的Kubernetes生态系统无缝集成,使得用户无需更改现有的部署方式。
通过KEDA,用户可以在事件驱动的场景中高效地管理资源,确保应用的性能和稳定性。
Kueue可以根据任务的优先级、资源需求和调度策略,优化任务调度的顺序,确保资源得到最大化利用。并且还支持任务队列管理,通过将任务分配到不同的队列中,根据策略动态调整任务的调度顺序,实现对资源的精细控制。
Volcano是一个为高性能计算(HPC)和大数据工作负载优化的Kubernetes调度器。它为需要并行计算和批处理的应用提供了增强的调度功能。Volcano支持多种调度策略,如优先级调度、公平调度、抢占式调度等,能够根据任务的特性和需求进行优化调度。值得一提的是,通过Volcano的公平调度策略,不同的工作负载可以获得相对公平的资源分配,避免资源争用导致的性能问题。此外,Volcano还提供了任务依赖管理功能,支持DAG(有向无环图)调度,确保任务按依赖关系顺序执行,从而提高任务调度的整体效率。
5.总结与展望
随着互联网技术的发展,未来的云原生AI生态将更加智能、灵活和安全,诸多如边缘计算、联邦学习、AIOps、等技术也将在AI生态中占据更加重要的地位,云原生架构将在AI时代继续引领技术创新和产业变革。这些趋势不仅会提升AI应用的效率和性能,还将帮助企业在全球化和数字化的浪潮中保持竞争优势。
随着云原生和ML技术的发展,未来的AI将更加智能和灵活,也有望在以下几个领域取得更进一步的突破:
边缘 AI 部署:未来,边缘计算设备将具备更强的计算能力和 AI 模型推理能力。y也会涌现更灵活的云原生工具和框架,支持在边缘设备上部署和管理 AI 模型。这将使得实时数据处理和本地推理成为可能,特别是在智能制造、自动驾驶和智能城市等场景中。
联邦学习的应用:为了保护数据隐私并提高模型的泛化能力,联邦学习将在云原生 AI 平台中扮演重要角色。联邦学习允许在多个边缘设备上协同训练 AI 模型,而无需将数据集中到云端。云原生平台将为联邦学习提供更好的支持,确保不同设备间的安全通信和高效模型同步。
AI 运维:随着 AI 应用规模的扩大和复杂度的提升,传统的运维方案已有些捉襟见肘。AI 运维(AIOps)将在云原生环境中得到更广泛的应用,自动化和智能化的运维将成为主流。未来的运维系统不仅能够在问题发生时自动修复,还可以通过预测分析提前发现并解决问题,确保系统的高可用性和稳定性;并且能够根据实时负载情况动态调整计算资源的分配,确保资源利用率最大化,并减少成本。
参考文献
https://mp.weixin.qq.com/s/EeZDvMkE8tbeDtgaPeHeYg
https://www.kubeflow.org/docs/concepts/multi-tenancy/
https://docs.vllm.ai/en/latest/models/supported_models.html
https://www.deepspeed.ai/tutorials/automatic-tensor-parallelism/
https://kserve.github.io/website/latest/modelserving/mms/modelmesh/overview/
https://volcano.sh/zh/docs/vcjob/
https://blog.csdn.net/zhangfeng1133/article/details/141561030
https://pytorch.org/docs/master/compile/technical-overview.html
本文转载自 AI遇见云,作者: 吴中坚