跳转到主要内容

热门内容

今日:


总体:


最近浏览:


Chinese, Simplified

category

本文描述了如何在Azure Kubernetes Service(AKS)集群上高效运行使用GPU节点的工作负载。学习如何选择正确的SKU,使用GPU节点训练机器学习模型,并使用GPU节点在AKS上运行推理。

情节


GPU工作负载的运行成本可能很高。为了避免不必要的成本,请知道何时在您的AKS集群中部署基于GPU的节点。

GPU是专为图形、人工智能和机器学习以及专门任务而构建的,这使其成为计算密集型工作负载的理想选择。CPU有效地管理复杂的逻辑和分支。GPU针对吞吐量进行了优化。它们可以有效地处理简单的算术和向量运算。

要确定何时将GPU用于AKS工作负载,您必须了解GPU优化和计算强度,但还应考虑其他因素。为了更好地了解AKS工作负载的GPU使用情况,请考虑以下受益于AKS集群中GPU节点的工作负载示例。

数据科学和分析


您可以使用GPU来加速数据科学工作流程中的数据预处理、特征工程和模型训练。为了高效地使用GPU,RAPIDSDask GPU等框架扩展了流行的数据处理库,如pandas和scikit-learn。

开源软件(OSS)加速的SQL查询引擎和BlazingSQLHeavyDB等列式数据库使用GPU对大型数据集快速执行查询和分析。

机器学习和深度学习


TensorFlow和PyTorch等流行的机器学习和深度学习框架受益于GPU,因为它们可以加速训练和推理任务。

深度学习模型具有复杂的神经网络。GPU上的并行处理加快了模型的计算速度。GPU提供高效的矩阵乘法和卷积,这是深度学习的核心操作。

您还可以使用GPU来加速图像分类、对象检测、自然语言处理和语音识别等任务。

计算机视觉与图像处理


计算机视觉任务解释视觉数据以提取有意义的信息。这些任务在人工智能驱动的应用程序、自动驾驶汽车、医学成像、监控系统和增强现实中越来越常见。GPU使用并行处理,因此它们可以有效地处理大规模图像数据和复杂的计算,用于对象检测、图像分类和特征提取等任务。

视频处理和流媒体


视频在商业中越来越普遍,因此组织需要GPU驱动的硬件而不是CPU。视频处理工作负载,包括转码、编码和流媒体,是计算密集型的,特别是如果它们有高清内容或4K内容。GPU提供了一个高效的平台,可在各种应用程序中提供高性能、低延迟的视频体验,如流媒体体育赛事或企业视频。

启用GPU的代理节点在虚拟桌面环境中提供了丰富的客户体验,因为它们将图形密集型任务卸载到GPU上。GPU加速的视频编码和解码功能有助于改善实时视频流、视频转码和视频分析。

为了加速计算机视觉任务,如对象检测、对象跟踪以及图像或视频处理,您可以使用OpenCV、OpenCL、NVIDIA CUDA和NVIDIA cuDNN等框架。

游戏平台和云游戏服务依赖GPU来提供高质量的图形和流畅的游戏体验。

高性能计算


高性能计算(HPC)应用程序通常需要复杂的模拟、数值分析和科学计算。为了快速运行这些任务,您可以使用GPU跨多个内核并行化工作负载。需要大量并行处理能力的HPC应用程序的示例包括科学模拟、天气预报、计算流体动力学和分子建模。GPU是并行计算的理想选择,可显著加速HPC工作负载。科学和研究驱动的努力受益于GPU。

为了加速HPC应用程序,NVIDIA CUDA、OpenCL和OpenACC等框架提供了支持GPU的API和库。

基因组分析和生物信息学


健康和生命科学的工作量,如基因组分析和生物信息学应用,越来越普遍。这些工作负载涉及处理遗传数据,如DNA序列和蛋白质结构,并需要复杂的算法进行序列比对、变体调用和基因组数据挖掘。GPU加快了基因组分析工作流程,使研究人员能够更快地处理数据并发现见解。

在AKS集群中部署GPU节点之前,请考虑成本影响。了解计算密集型任务的GPU优化,如计算机视觉、视频处理、HPC和基因组分析任务。在比较AKS集群中的GPU资源和CPU资源时,请考虑这些因素。

生成式人工智能模型


大型语言模型(LLM),如OpenAI GPT, Meta Llama, Falcon, or Mistral,可以利用GPU的并行处理能力。将GPU与这些模型结合使用以提高性能。

GPU可以加速涉及复杂计算和大量数据的训练和推理任务。GPU具有并行处理能力,可以将给定模型的大型计算任务划分为并发运行的较小子任务。此过程可提供快速结果并提高性能。

语言模型通常具有多个层和参数的复杂神经网络,这会增加计算需求。GPU加速了语言处理中的关键操作,如矩阵乘法和卷积,从而加快了训练和推理时间。

GPU提供足够的内存容量、带宽和处理能力,以处理具有会话界面和文本生成的基于LLM的应用程序。例如,GPU增强功能为与聊天机器人和人工智能助手交互的用户提供了快速的响应时间。

并非所有工作负载都能从启用GPU的代理节点中受益,在某些情况下,CPU就足够了。例如,主要受输入和输出限制或不需要大量计算的工作负载可能无法通过GPU得到改善。

客户案例


许多微软客户利用GPU工作负载为客户进行创新。考虑以下示例:

GPU工作负载部署最佳实践


AKS提供了各种选项来部署支持GPU的Linux和Windows节点池和工作负载。为了确保GPU工作负载的平稳运行,请遵循以下最佳实践。

Linux工作负载部署

  • 使用支持GPU的虚拟机(VM)创建节点池,并手动安装NVIDIA设备插件以部署支持GPU的Linux节点池。此方法不支持更新现有节点池以添加GPU。
  • 查看Azure中支持GPU的虚拟机。我们建议您对AKS节点池使用最小大小的Standard_NC6s_v3。AKS不支持基于AMD GPU的NVv4系列。
  • 了解使用启用了Azure Linux GPU的节点池时的限制。未应用自动安全补丁,群集的默认行为不受管理。
  • 当您在启用GPU的节点池上安排工作负载时,请使用Kubernetes节点选择器、节点相关性、污染和容忍度。

Windows工作负载部署

  • 使用支持GPU的VM创建节点池,以部署支持GPU的Windows节点池。AKS会自动安装驱动程序和必要的NVIDIA组件。此方法不支持更新现有节点池以添加GPU。
  • 当您选择支持GPU的虚拟机时,AKS会自动安装相应的NVIDIA CUDA或GRID驱动程序。某些工作负载依赖于特定的驱动程序,这可能会影响您的部署。对于NC系列和ND系列VM尺寸,AKS安装CUDA驱动程序。对于NV系列VM大小,AKS会安装GRID驱动程序。
  • 查看Azure中支持GPU的虚拟机。我们建议您对AKS节点池使用最小大小的Standard_NC6s_v3。AKS不支持基于AMD GPU的NVv4系列。
  • 了解使用Windows节点池时的限制。Kubernetes 1.28及以下版本不支持Windows GPU。
  • 当您在启用GPU的节点池上安排工作负载时,请使用Kubernetes节点选择器、节点相关性、污染和容忍度。

注:

Windows GPU是一个预览功能。您需要注册WindowsGPUP审核功能标志。

NVIDIA GPU操作员


NVIDIA GPU Operator是一个工具,可用于在Kubernetes集群内高效部署和管理GPU资源。您可以使用操作员自动安装、配置和维护软件组件。这种方法确保了NVIDIA GPU在高要求的工作负载(如AI和机器学习工作负载)中的最佳使用。

NVIDIA GPU操作员会自动管理部署GPU所需的所有NVIDIA软件组件,如Kubernetes的NVIDIA设备插件和NVIDIA容器运行时。操作员自动安装驱动程序。有关更多信息,请参阅NVIDIA概述。

如果您希望增强对高级GPU工作负载的控制和灵活性,可以将NVIDIA GPU Operator与AKS上启用GPU的节点一起使用。NVIDIA GPU运营商不支持Windows GPU。

考虑以下最佳实践:

  • 使用NVIDIA GPU Operator进行高级GPU配置,如驱动程序版本选择和时间切片。
  • 在使用GPU运算符之前,跳过自动驱动程序安装。
  • 将GPU运算符与群集自动缩放器一起使用时,将最小计数设置为1。

注:

当您使用GPU运算符时,Microsoft不支持或管理作为节点映像部署一部分的NVIDIA驱动程序的维护和兼容性。

LLM的GPU工作负载部署


Kubernetes AI工具链操作符(KAITO)[Kubernetes AI toolchain operator (KAITO)]是一个Kubernetes操作符,它简化了如何在Kubernetes集群上运行开源LLM,如Falcon和Llama2。您可以将KAITO部署在您的AKS集群上,作为AKS的托管插件。KAITO使用Karpenter根据所选模型的工作区自定义资源定义中的规范自动配置和部署GPU节点。KAITO将推理服务器创建为LLM的端点,并缩短了整体入职时间,以便您可以进行机器学习操作,而不是基础设施的设置和维护。

为了改进机器学习操作,KAITO提供了以下功能:

  • 容器映像管理:使用容器映像来管理LLM。KAITO提供了一个HTTP服务器,以便您可以使用支持的模型库来执行推理调用。
  • GPU硬件配置:KAITO提供预设配置,可根据型号要求自动应用。您不必手动调整部署参数以适应GPU硬件。
  • 自动GPU节点配置:KAITO根据模型要求自动配置GPU节点,并建议使用成本较低的GPU VM大小来配置分布式推理。
  • 与Microsoft Artifact Registry集成:如果您的LLM许可证允许,KAITO可以在公共Artifact注册表中托管模型映像。此方法简化了对受支持模型的访问和部署。对于KAITO存储库不支持的MIT或Apache2许可证的开源模型,您可以提交新模型入职请求。

有关KAITO的更多信息,请参阅以下资源:


工作负载和集群扩展


对于人工智能和机器学习场景,您必须区分训练工作负载和使用预训练模型进行推理。为了构建和训练你的机器学习模型,可以考虑使用专为深度学习和并行化AI计算而设计的GPU计算。训练通常需要逐步扩展和在GPU上分布大量数据,以实现数据并行的高精度。

模型分片是一种常见的高级技术,可用于划分模型训练的阶段。您可以将GPU分配给不同的任务,并最大限度地利用它们。GPU可以扩展和向外扩展HPC工作负载,例如Azure上的NV系列或ND系列VM。这种能力有助于保持高资源使用率,并减少用户对漫长而昂贵的机器学习训练过程的干预。

或者,您可以使用预训练的开源AI和机器学习模型进行推理。与从头开始构建和训练LLM相比,使用Llama、Falcon或Mistral等流行型号是一种更快、更具成本效益的选择。有关更多信息,请参阅AKS上的语言模型。

当您使用预训练模型进行推理时,您可能会遇到动态和波动的资源使用情况,具体取决于您处理的数据量。当您通过所选模型运行实时数据时,根据模型大小和要求,有时会出现流量峰值。在整个推理过程中,您必须保持可接受的低延迟水平。为了有效地利用GPU实现高性能和低延迟,您可以使用KAITO支持的模型进行分布式推理。这种方法扩展了您的计算选项,包括每个具有一个或两个GPU的GPU数量较低的SKU,在Azure区域之间提供高可用性,并降低维护成本。

GPU工作负载成本管理


GPU可能会增加成本。正确监控工作负载,以帮助了解GPU成本的驱动因素,并确定优化机会。为了提高成本可见性,您可以使用AKS成本分析插件。

以下场景受益于成本可见性。

支持GPU的VM大小成本


选择正确的启用GPU的VM大小,以优化运行GPU的成本。每日费用可能因您选择的VM大小而异。A100 GPU价格昂贵。除非你的工作负载有特定的要求,否则你应该避免使用它们。AKS成本分析显示了每个VM的每日成本,并细分了在启用GPU的VM上运行的每个工作负载的相关成本。使用此数据来评估您是否有合适的VM大小,或者您是否需要更具成本效益的选项。

闲置成本


创建启用GPU的节点池后,即使不运行GPU工作负载,也会在Azure资源上产生成本。空闲成本表示工作负载不使用的可用资源容量的成本。如果您有几个未使用的节点,则此成本会很快增加。为了避免高闲置成本,只在运行工作负载时创建节点池,并在不运行工作负载的情况下使用集群停止功能等方法。AKS成本分析显示了每个节点的空闲成本。

供应过剩和使用不足


过度配置是指您分配的资源超过了pod所需的资源。过度供应会导致资源浪费和利用不足。即使不使用,多余的资源也会保留给节点。为了减少过度配置,使用垂直pod自动缩放器根据以前的使用模式设置准确的请求和限制。

当你的工作负载没有完全使用GPU时,可能会出现使用不足的情况。考虑先进的GPU共享和分区技术。您可以使用带有分区的单个节点来最大限度地提高GPU的使用率,而不是使用多个节点。这些技术可以帮助您为每个工作负载分配适当的GPU加速量,从而提高使用率并降低部署的运营成本。

AKS上的Linux GPU工作负载部署支持多实例GPU。使用此功能将NVIDIA A100 GPU划分为最多七个独立实例。每个实例都有自己的内存和流多处理器。

NVIDIA支持其他分区技术,如时间切片和多进程服务实现。要手动应用这些配置,请使用NVIDIA GPU运算符。

对于高级场景,您可以改进节点上的资源箱打包。您可以设置调度程序配置,并运行第二个调度程序。配置和维护辅助调度器,以使用不同于默认AKS调度器的工作负载放置策略。有关更多信息,请参阅在Kubernetes上配置多个调度器。

Next steps

本文地址
最后修改
星期六, 九月 21, 2024 - 19:22
Article