NVIDIA:如何构建世界级的AI Factory
核心内容
- 基于Kubernetes的训练平台
- 用于管理预训练模型和定制模型的模型管理
- 支持GPU Operator和RAG Operator的推理平台
AI Factory软件堆栈由基础的NVIDIA Base Command组件和上层的NVIDIA AI Enterprise组成。Base Command包括:
- 操作系统
- 加速库
- 集群管理器
其中集群管理器负责安装操作系统、驱动程序、作业调度器及MLOps工具。NVIDIA AI Enterprise作为工作流管理工具,构建在Base Command之上,提供全面的管理和自动化功能,以支持AI和HPC工作负载。
Base Command Manager是软件堆栈中的关键组件,基于NVIDIA收购的Bright Computing技术。它是一个企业级集群管理工具,提供以下特点:
- 易于安装、管理和交互
- 通过安装向导简化设置过程
- 支持Kubernetes、Docker、分布式存储等组件的配置
- 允许用户通过ISO文件快速安装并在头节点上进行集群监控
- 提供图形用户界面和命令行界面
- 强大的监控和自愈能力
- 支持多代硬件,包括异构配置
- 具备自动缩放器功能,能够根据工作负载动态调整集群规模
- 支持云扩展和边缘计算
NVIDIA AI Enterprise是一个综合性平台,旨在简化企业在构建AI Factory或AI卓越中心时的开发、训练和推理工作。它结合了开源工具和NVIDIA的技术,支持以下功能:
- 从原始数据获取、清洗、转换到模型训练、优化和部署的整个AI工作流程
- 基础设施管理和Base Command Manager
- 支持异构硬件环境,包括CPU和GPU节点
- 能够处理安全扫描和CVE跟踪,确保部署的安全性
- 整合了RAPIDS库、DALI工具、TensorRT和Triton推理服务器等
- 提供微服务以增强这些开源工具的易用性和可靠性
- 提供丰富的示例工作流程,帮助企业快速启动和调整AI项目
Adam Tetelman, Principal Engineering Architect, Product Architecture, NVIDIA
David Dean, Senior Solutions Architect, NVIDIA
时间:2024年3月(GTC 2024)
-----
Adam Tetelman
今天的主题主要关注生成式AI,因为这一领域目前备受瞩目。过去,我们或许更多地涉足机器学习和深度学习,利用预测模型和XGBoost等工具。但近一两年间,行业格局发生了显著变化,特别是生成式AI的崛起。因此,我将探讨使用生成式AI和LLM时,与过去的小型模型有何本质区别。
那么,究竟什么是AI Factory?其核心组成部分又是什么?首先,AI Factory不仅可用于开发,还能提供服务。这两大功能都能让你轻松、快速地实现。我们期望AI应用的开发者和AI模型的训练者能够充分发挥他们的才华。因为训练速度越快,开发者的访问效率越高,我们在产品开发上也就越能高效运作。然后,当我们拥有了这些模型,我们期望能够对外提供服务。这包括进行推理,以及在生成式AI的场景下,生成token和图像。我们做得越多,为客户创造的价值就越大,我们所有人的生产力也就随之提升。
我们希望尽快生成token和图像。但同样重要的是,我们希望能在大规模上进行这样的操作。很多人在从单一DGX工作站或小型IT集群扩展到数百个节点甚至大型AI中心时,都会遇到不少问题。从开发到生产,扩展过程中往往会出现各种挑战,如权限问题等。
我们的目标是找到一种既简单又安全,同时高效的扩展方式。我们不希望看到100个GPU只运行一个10GB显存的模型而造成资源浪费。所以,如何将模型和工作负载合理地打包到基础设施中,对AI Factory来说至关重要。如果操作得当,首先,你会获得经济收益,应用运行更加频繁;同时,你也能节省成本、时间和运营开销,因为资源得到了更紧密的整合。所有操作都在一致的安全和操作模型下进行,你无需管理分散在各地的20个集群。只需一个统一的平台,你就可以通过增减节点或在训练和推理之间移动工作负载来实现扩展。
今天,我们的讨论重点是如何构建AI Factory,以便我们能够开发通用的AI应用以及提供其它所需的服务功能。
首先,我们聊聊AI Factory的训练部分。我相信大家对此已经比较熟悉。很多人都有过训练经验,比如在Kubernetes上进行Slurm或批处理调度。因此,在这部分演示中,我不会过多展开。这里有一张关于Slurm部署的截图,我们会简要探讨Base Command Manager及其在AI Factory中的应用。
最简单的训练方式是为Slurm或Kubernetes训练集群分配一部分节点。这些节点通常是多租户或多用户的,并且你会在所有节点间共享数据,运行训练任务。
这为我们带来了一些新的挑战。训练完成后,就会得到许多模型。对于生成式AI的工作负载,它们更多地依赖于基础模型。两三年前,你可能会选择现成的模型架构,或者用自己的模型架构在数据集上进行训练。但现在,我们看到很多AI Factory和AI整体都在利用开源或已发布的庞大基础模型,如LLaMA、Mistral或Stable Diffusion XL等。你可以直接使用这些模型,也可以进行微调或定制,只需稍微调整适应层,以适应你的特定工作负载。
这与两年前的情形大相径庭,但结果是,你拥有了一个丰富的模型库。可能包括十几个图像生成模型,它们都非常相似;还有十几个LLM模型,以及一些用于推荐系统的模型。
那么,如何有效地利用这些模型呢?最终,你的目标是利用这些模型来构建应用程序。我们真正关心的不仅仅是训练模型的过程,更多的是如何利用这些模型来创造有价值的东西。这正是AI Factory的核心价值所在——它利用数据,结合模型,生成能够提供token服务、图像生成的AI应用程序。
我们在Kubernetes上执行这些操作。当在Kubernetes上进行推理时,你需要GPU Operator来启用GPU,需要Network Operator来支持多节点操作,同时还需要诸如Prometheus等大量SRE工具,以确保整个技术栈的顺利运作,并能在各种规模上动态地进行推理。我接下来要展示的工具,基本上都包含在NVIDIA AI Enterprise套件中,我们稍后会详细讨论。而且,我刚才提到的很多内容也都可以通过开源方式获得。
一旦你配置好Kubernetes和推理平台,就可以部署工作负载了。这里展示的示例工作负载不仅包括推理,还涵盖了RAG。几周前,我们在开源平台上发布了一个RAG LLM Operator,它运用了部分NVIDIA AI Enterprise组件。此工具能够将运行在AI Factory中的Kubernetes集群转换成一个允许你部署工作负载的平台。这仅仅是一个例子,你并非一定要使用RAG Operator,可以选择使用你内部开发的任何工具来实现这一功能。
关于其安装方法,安装完成后,它会将一系列NVIDIA微服务部署到你的集群中,并从NGC或你自己的私有模型库中下载模型。
此外,还包括一个LLM Playground,这是一个用户友好的界面,让你能够轻松访问聊天机器人。通过安装这些基础Operator并使用这样的平台,你可以轻松部署模型。配置中有一个选项,让你可以在LLaMA 7B、LLaMA 70B、Mistral等不同模型之间自由切换,并进行A/B测试。选定一个或多个模型后,你可以在Kubernetes中为每个模型运行一个Pod,并根据使用情况自动扩展。前端应用程序与你的AI Factory相连,你可以进行基本的聊天交互,并基于此构建应用程序。
我们需要的不仅仅是简单的聊天功能,更需要具备上下文感知的聊天能力。RAG的独特之处在于,它能够注入上下文,使生成的内容高度相关。RAG,即检索增强生成,意味着你拥有一个出色的模型,但缺乏上下文信息。你可以向它上传文件或添加数据连接器,这些数据连接器会将上下文注入到提示中,从而生成高度相关的内容。
通过AI Factory,你可以利用专有数据来实现这一目标。即使你使用托管的API或在云中运行的服务,你仍然可以通过RAG注入上下文。但如果你拥有专有数据,或者即使数据并非专有但你不愿分享,或者担心数据的传输安全,你就需要在数据中心内部完成所有RAG操作。
拥有AI Factory,你就获得了一个用于推理的Kubernetes平台,它不仅服务于模型,还服务于完整的应用程序。在你的Kubernetes集群内部或附近,你会配置一个向量数据库和众多其它微服务。
以这个聊天示例来说,当我上传这些文件时,它实际上在执行多次推理操作,包括一个推理用于安全机制,一个用于嵌入服务以嵌入提示,另一个则对来自数据库的内容进行重新排序,还有一个用于内容生成,最后再进行一次安全机制的推理。至少有五次推理操作同时进行,这也是为什么你需要一个可扩展的AI Factory,因为一个提示实际上会触发典型RAG工作流中的五个不同的推理模型,这些模型需要根据不同的工作负载进行扩展。
Base Command Manager可以帮助我们实现这一目标。你需要一个Kubernetes平台,配置所有Operator,设置所有应用程序,确保它们都在同一个环境中运行。但这里涉及许多细节,你不仅要配置软件层,还要设置硬件层、驱动程序和网络。因此,虽然构建一个可工作的系统并不难——只需安装MicroKits、GPU Operator和RAG Operator即可,但这样的系统并不高效,也无法扩展。
为了实现高效和可扩展性,必须关注各种细节。你必须确保从GPU、驱动程序、操作系统到网络再到Kubernetes的各个环节都紧密配合。这样才能使所有组件达到最佳的协同效果,构建一个真正高效、可扩展的AI Factory,用于训练模型和构建应用程序。
问题:如果数据在本地运行,并且由于某些原因无法上传到云端,该如何处理。你展示的演示是否在云端运行?另外,你是否有关于如何在本地运行的一些建议?
其实,这个演示并非在云端运行。我在某个数据中心的服务器上安装了所有内容。
问题:你展示的NVIDIA解决方案实际上是可以在本地运行的,对吗?
是的,David会详细解释这一点。Base Command Manager可以在云端、本地和混合环境中运行。有时候你可能会从云端开始,然后迁移到本地,或者进行云端扩展。但这一工具更侧重于本地运行,因为目前在云端扩展如果没有预留实例会比较困难。
问题:你提到有五个不同的推理在进行。这是什么意思?是指五个不同的模型吗?
是的,在一个典型的AI应用中,比如聊天机器人,你会有一个模型用于安全控制,确保没有PII或不当内容。另一个模型用于嵌入处理,将输入进行嵌入以便在向量数据库中搜索。还有一个重新排序模型,用于优化向量数据库的输出。最后是实际的生成模型,即LLM。所以在一个应用中会有多个不同的模型在同时工作,这些我们通常不会特别注意到。
David Dean
接下来我们来谈谈后台的硬件和软件配置。通常我们使用的是DGX平台。它是一个8U的高性能系统,专为AI开发设计,包含8个GPU,总共640GB的GPU内存。这些GPU通过NVLink进行高速连接。此外,我们还配备了ConnectX-7以太网连接,用于系统间的高速连接。此外,我们使用了双56核的Intel Xeon处理器,拥有2TB的内存,是一个非常强大的处理系统。
你可以从一个系统开始进行开发,或者将多个系统组合成一个称为DGX Pod的集群。我们有一个参考架构来组建DGX Pod。如果你需要更高的扩展性,我们还有一种称为SuperPOD的系统,由32个这样的系统组成。NVIDIA提供白手套服务,帮助你构建、组装和配置这个系统。
无论使用哪种DGX配置,我们都有一个叫做Base Command的工具,以及NVIDIA AI Enterprise中的其它工具。接下来我会简单介绍一下这些工具。
首先当然是模型开发,这是你通常使用DGX集群的主要用途。当然,你也可以使用这些系统进行推理,但你可能希望在现场使用其它系统进行推理。我们有一些专门用于此的产品,包括L4、L40s、H100(在我们DGX中使用的GPU)以及Grace Hopper。你可以组装任何类型的推理系统。
我们还与OEM合作伙伴合作,并且有一个认证程序,确保这些系统经过严格测试,符合AI推理和模型开发的标准。
接下来我们来谈谈软件部分。
这是我们使用的软件堆栈。在堆栈的下半部分是我们称之为Base Command的部分,包括操作系统、加速库、集群管理器等。集群管理器是关键组件之一,它涉及堆栈中的所有项目,负责安装操作系统、驱动程序、作业调度器(堆栈中的下一个项目)以及任何MLOps工具,如Run:ai或Domino。基于这个基础,我们有NVIDIA AI Enterprise,这是我们的工作流管理工具,稍后会详细介绍。
现在我将详细介绍堆栈中的每个组件。首先是操作系统,我们定制的DGX操作系统基于Ubuntu 20.04,第五版是基于这个版本,第六版则基于Ubuntu 22.04。我们不断为系统提供更新,以确保其安全性并达到最佳性能。
接下来是我们的加速驱动程序和工具。它们基本上确保了GPU能够尽快接收信息,包括GPU到内存的加速、GPU到GPU的加速。目的是确保信息流动尽可能高效。
现在我们来深入了解一下Base Command Manager,这是软件堆栈中的一个关键组件。如果你熟悉Bright Cluster Manager,Base Command Manager就是基于这个产品的。2022年,NVIDIA收购了Bright Computing,将Bright Cluster Manager工具作为企业级集群管理工具,它拥有很多功能和特点,非常适合我们的软件堆栈,提供了各组件之间的连接性。Base Command Manager的主要特点之一是易于安装、易于管理、易于互动。在软件堆栈中有许多移动的部件和组件。
Base Command Manager提供了几个安装向导来简化设置过程。这些安装向导会引导你回答问题并点击下一步,我会在稍后详细介绍。安装向导涵盖了Kubernetes、Docker、分布式存储(如BeeGFS、Ceph)、云扩展和边缘计算等组件。
安装向导的工作原理是这样的:我们提供一个ISO文件,这个文件会安装在头节点或主节点上,随后该系统将监控集群的其余部分。你无需在系统上预先安装任何内容,只需加载ISO文件,它会引导你进入安装向导,过程如图所示。你需要回答一些关于网络设置、节点数量、节点名称等基本问题。填写完毕后,点击开始即可。
在不到30分钟的时间里,你就可以让系统启动并运行起来。我们会为你构建一个默认镜像,你可以立即使用这个镜像来配置集群中的节点。默认镜像是一个简化版,非常适合HPC或AI工作。此外,我们还为DGX系统提供了一个特定镜像,其中包含了DGX系统自带的所有工具和组件。
另外,我们支持使用Ansible进行设置。鉴于许多客户使用Ansible和其它DevOps工具来配置和管理服务器,因此我们提供了通过Ansible进行安装和配置的选项。
问题:这个系统是否能在不同代的硬件上运行吗,例如A100等?
是的,它不仅可以在不同代的NVIDIA硬件上运行,还能在其它OEM厂商的不同代硬件上运行。所以,即使是异构配置,只要有来自戴尔、HPE、联想等OEM厂商的硬件,它都能兼容。我们有能力将节点分组,并为不同的组提供支持这些硬件类型的不同镜像。
系统启动并运行后,我们提供了两个工具界面。一个是基于HTML5的图形用户界面,因此它可以在任何支持HTML5的浏览器上运行,比如Mac、Windows,甚至Android等。界面采用典型的树状结构,左侧是资源树,点击你想查看的资源,右侧会显示相关信息表格。这种布局非常直观,易于导航和使用。另外,我们还提供了一个集群管理命令行界面。大多数管理员喜欢远程操作,可以通过SSH登录系统,在命令行界面上运行命令。命令行界面可以执行图形用户界面上的所有操作,只是无法显示图形。通过命令行,你可以重启节点、重新分配节点等。
当你启动并运行系统后,主要任务之一就是对其进行监控。我们提供了多种监控方式。顶部的3D监控系统非常先进,你可以从“上帝视角”查看整个集群。如果你有大量的机架和节点,你可以在一个视图中看到所有这些设备。这个显示屏可以进行颜色编码,如果系统未通过健康检查,相应的设备会改变颜色,机架也会变色。
这样,你可以迅速定位哪个机架的哪个服务器存在问题,并进行手动检查。你还可以将指标与此视图关联,查看数据在系统中的流动情况。你可以对指标进行颜色编码,只查看特定系统之间的IO流动情况。这有助于你进行复杂的监控和微调。
右侧是同样信息的2D视图,只是另一种查看方式。通常,你会使用底部的信息表格来查看系统中所有节点和服务器的当前状态。
问题:关于遥测数据和硬件监控。
我们的基础指令管理器通过基板管理控制器(BMC)连接到所有系统,因此你可以从服务器的BMC中提取信息。我们收集了大量的集群运行时信息。
问题:关于Grafana的连接器
我们确实有一些客户使用Grafana,以及其它如Nagios等工具。我们有内置的显示功能,但你也可以在Linux操作系统上安装并运行这些工具,例如在DGX系统上的Ubuntu。此外,你还可以运行其它操作系统,所以不必局限于Ubuntu、Red Hat、CentOS或Rocky,你可以在同一集群中运行这些操作系统的组合。
如果你在处理推理工作负载,还有一些额外的应用层级的指标,这些指标可以通过Trident轻松获取。硬件和应用层都有很多指标,并且我们已经提供了与Grafana等工具的集成。
问题:关于头节点向集群节点的分发问题,有人询问是否可以使用几乎任何操作系统,包括移动网络结构和其它组件。
我们的回答是,网络结构的物理部分是独立处理的,但在工具内部,我们有软件对象来处理网络配置,包括网络信息、子网、网络名称等。因此,它与网络内部有关联。但今天我们不直接控制网络,我们只是从网络中读取信息。需要澄清的是,我们支持一组特定的操作系统,通常是N-1版本。比如,RHEL 9和RHEL 8。但确实需要是工具所支持的操作系统。
问题:你提到NVIDIA AI Enterprise中包含一些功能,而这些功能也可以作为开源项目获取。那么,能否详细解释一下,使用NVIDIA AI Enterprise相较于零散使用这些工具或通过开源方式获取,有哪些独特的优势或附加价值?
简要来说,NVIDIA为这个平台构建了许多组件,其中不少组件确实可以单独获取。比如,NVIDIA的库、驱动程序、核心容器、GPU操作器以及网络操作器等基础组件,都是免费提供的。你完全可以基于这些组件自行搭建平台,利用开源工具如Mass进行镜像管理,或者使用Kubernetes等进行协同部署。甚至,你可以选择使用Slurm的开源版本进行部署。这些高级组件基本上都有开源版本,并且它们都基于NVIDIA的底层技术。然而,我们始终认为,Base Command Manager是将所有这些组件完美融合的关键。我在开始时就提到过,为了确保最佳性能,整个技术堆栈需要保持高度一致。而Base Command Manager正是确保你的基础设施使用完整技术堆栈和正确版本,同时保障所有组件兼容性的关键所在。当然,如果你倾向于利用这些基础组件自行搭建技术堆栈,那完全是可行的。在应用层面,同样的情况也适用。你所需的基本工具,如用于serving的Trident、用于优化应用程序或映射聊天机器人的TrLLM,以及用于模型优化的TensorRT,都是免费且开源的。你完全可以围绕这些工具自行构建平台,实际上,很多人也正是这样做的。但NVIDIA AI Enterprise软件的价值在于,它将所有这些元素紧密集成,形成一个高度协同的技术堆栈。
关于Base Command Manager,我想进一步解释一下。它确实融合了众多开源工具,比如你可以在开源社区中找到的PXE Booting和Prometheus监控工具等。但我们的独特之处在于,我们将这些工具整合到一个统一、集成的解决方案中。这个解决方案经过持续优化和调试,已经拥有长达20年的产品开发历史。自2004年Bright Cluster Manager(现在是Base Command Manager)诞生以来,我们深入了解了在管理和运行集群过程中可能遇到的各种问题和挑战。正因如此,我们才能够开发出当今市场上最优秀的工具。
问题:一个关于多租户的问题。这是一个全面的解决方案吗?在日常运营中,我们是否需要额外的工具,或者这个解决方案是否已经足够全面?
确实如此。一些客户可能会希望利用额外的工具来提升研究人员和集群系统用户的使用体验。例如,许多客户会选择使用Slurm。还有客户希望利用像Jupyter这样的工具。另外,有些客户可能会选择Run:ai等其它工具。由于我们的解决方案基于Linux平台,因此这些工具都可以轻松安装并集成到我们的系统中。
问题:关于系统的稳定性和自愈能力,我们都有过使用OpenStack的经验,知道它的复杂性。
在这方面,我们的解决方案确实具有强大的自愈能力。我将在后续的幻灯片中详细介绍如何进行自愈操作和监控操作,以便管理员能够及时了解并解决系统可能存在的问题。
接下来我将快速展示一下如何查看集群中的服务器列表。这个视图的设计初衷是为了让用户能够更轻松地使用这个工具并找到所需的信息。在这个例子中,我选择了“设备”并查看了所有设备。你可以看到系统中的所有设备以及它们的状态。状态列中的箭头表示服务器的状态:如果一切正常且服务器正在运行,箭头将指向上方并显示为绿色;如果服务器关闭,箭头将指向下方。你会注意到节点3显示为红色,这意味着节点3存在问题。通过这种方式,你可以迅速识别出有问题的节点。此外,我们还提供了事件日志功能来追踪这些信息。当故障发生时,你将立即在日志中收到通知。
除了查看状态外,你还可以从这个视图执行一些操作。例如,在右上角有一个下拉菜单让你选择“健康检查”。点击它后,你将看到在该系统上运行的所有健康检查列表。系统上大约进行了19项健康检查。在右侧,你可以看到特定问题的详细信息以及故障原因,从而快速处理这些问题。我们称之为健康检查的功能不仅限于简单的通过或失败判断。
实际上,我们在系统上收集了超过200个指标并进行约19项健康检查。你可以轻松地创建自己的健康检查标准,只需编写一个能够返回通过或失败结果的脚本或程序即可。对于指标而言,你只需要返回某个具体的数值即可捕获这些信息并在图表中显示。此外,你还可以根据这些健康检查的结果来执行相应的操作,这就是自愈功能的真正价值所在。
假设我的文件系统不再挂载,这其实是一个健康检查项目。你可以编写一个脚本动作来重新挂载该文件系统。一旦检测到失败,脚本就会自动运行以重新挂载它。此外,你还可以设置一个动作来发送管理员电子邮件。这通常是我们最常见的操作之一。一旦系统出现故障,你的管理员会立即收到电子邮件通知,以便他们能够迅速检查并解决问题。
这里有一些我们提供的图表和图形的示例,使用起来非常简单。你只需要进入我们的图表工具界面,在左侧将需要的指标拖放到图表上即可。你可以同时展示多个指标,比如查看内存和I/O之间的相关性,或者比较节点一和节点二的数据。
这些图表不仅可以单独展示,还可以组合成一个完整的仪表板,帮助你更全面地监控系统。
问题:这些数据是从BMC查询得到的吗?还是由其它专家在底层提供?
我们的数据主要是从BMC查询的,但实际上数据来源是多样化的。BMC提供了部分基础信息,而我们还通过其它脚本和程序获取了额外的指标。
当然,大多数集群都需要某种工作负载管理系统。在Base Command Manager中,我们提供了几种工作负载管理系统供你选择,其中Slurm是最受欢迎的。无论你选择哪种系统,工具内的用户界面都是一致的。你可以轻松查看正在运行的作业、暂停、恢复、终止作业,创建队列,并为操作分配节点。我们不会限制你使用任何工具,所以如果你熟悉Slurm中的工具,如squeue、srun等,它们仍然可以在我们的系统中使用。
此外,我们还提供了一种额外的工作负载会计和报告功能,基于作业的信息收集。这些报告会显示作业的相关信息,如果你使用的是我们内置的工作负载管理系统(当然,你也可以选择其它系统,因为我们的平台基于标准的Linux操作系统,你可以安装任何你需要的软件)。但如果你使用内置系统,我们会为C组中的所有作业收集信息,以便你查看作业的内存使用、磁盘I/O等情况。随着时间的推移,我们可以捕获这些数据并展示在图表和图形上,帮助你了解集群的使用情况。这些信息还可以用于生成回报报告,显示哪些团队使用了系统,甚至可以根据使用情况与金额挂钩,为使用集群的团队向相关部门收费。
在内部,我们使用一种称为PromQL的查询语言,即Prometheus查询语言。虽然我们不直接在工具内部运行Prometheus,但我们有一个连接器可以与它对接。因此,如果你使用Prometheus,可以轻松地将它与我们的系统连接。我们可以按用户、项目等维度提供这些报告,让你清楚地看到项目中谁在上周、上个月等时间段内使用了系统。
当然,身份管理也是至关重要的。在内部,我们采用了一个安全的LDAP系统。考虑到许多客户在没有外部网络连接的环境中运行(如机舱外部环境),这对于DOE或DOD客户尤为重要。此外,一些医疗客户现在也采用这种环境。因此,我们需要一种方式来记录集群的使用者。除了内置的LDAP系统,你还可以将其连接到Active Directory或园区LDAP,以便从外部管理系统中的用户列表(如果具备相关权限)。
我认为Base Command Manager最令人印象深刻的特性之一是能够运行自动缩放器。它为集群中节点的角色和功能提供了极大的灵活性,可以动态地更改特定服务器的角色。例如,本周你手头有很多标准的HPC任务需要处理,你正在使用Slurm来管理这些任务,因此你需要大量的Slurm节点来确保任务顺利进行。但到了下周,Kubernetes的任务量将大幅增加。在这种情况下,我们可以自动从资源池中调配节点到Slurm或Kubernetes等其它功能中,并在需要时自动将这些节点调回。
它可以手动设置,但同样支持动态设置。系统会根据实际需求自动调整集群规模。例如,当工作队列为空时,系统会关闭节点以节省资源;而当有作业进入时,系统则会开启节点,分析作业需求,并启动符合要求的节点来运行该作业。一旦作业运行完成,若队列中再无其他作业,系统便会关闭这些节点。
设置可以手动进行,但同样支持动态调整。系统会根据实际需求自动调整集群规模。例如,当你有一个工作负载队列时,如果队列为空,你可以让系统关闭节点以节省资源。当有新的作业进入队列时,系统会智能启动节点,分析作业需求,并启动相应的节点来执行该作业。作业完成后,若队列中无其他待处理作业,系统则会关闭这些节点。
系统可以详细分析每个作业,判断其所需的内存和核心数量,并据此启动具备相应资源的系统。
你可以灵活地编写脚本或程序来实现这一自动化过程。在某些情况下,这些脚本或程序将帮助系统做出关键决策。
问题:自动扩展功能是否包括网络和其他组件的自定义配置呢?
答案是否定的。在物理环境中,即使你预定义了网络并配置了节点,系统虽然能与它们通信,但并不会自动扩展你的网络或配置交换机。然而,在云端,系统可以实现云资源的快速扩展。在云端,你可以根据需要增加网络带宽、节点数量和其他资源,因此在云中扩展集群是完全可行的。
接下来,我们将进入下一张幻灯片——云。Base Command Manager在云中有两个主要用例:集群即服务(Cluster as a Service)。使用此服务,你可以在云中运行整个集群,包括头节点和计算节点,所有资源均由Base Command Manager管理。这对于需要数据隔离的研究人员非常有用,因为一些客户只允许特定研究人员访问特定数据,其他研究人员无法访问。
这是一种创建隔离环境的绝佳方式。而且,你可以在本地使用同样的工具,因此你可以非常熟悉该工具及其工作原理。右侧展示的是集群扩展、云突发等功能。当你有一个物理集群并需要额外资源时,你可以将资源扩展到云端并利用这些额外资源。我们在这些节点上运行相同的镜像,执行相同的健康检查和度量,对于头节点来说,这些节点被视为物理节点,运行相同的任务。
正如我提到的,自动扩展器可以根据你的工作负载动态扩展,添加云端节点,也可以缩减节点。我们还有其他几个高级工具参与其中。我不会详细展开,但我们可以管理数据,将数据推送到云端,然后再启动云端节点,这样你就不会浪费资源或等待大量数据传输到云端。一旦数据到达,就可以启动作业并运行。此外,我们在这一领域还有其他几项能力。
问题:云端的节点是基于什么的?是云服务商的节点吗?
不完全是。假设你有一个BasePOD并且需要立即增加资源,这是获取这些额外资源的一种方式。
问题:那么,编排是如何完成的?
通常,使用Base Command Manager时,节点通过PXE Boot进行预配。我们将镜像存储为文件系统。如果你查看头节点上的某个镜像,会发现它只是一个Linux操作系统的目录,即根目录。
我们利用PXE Boot系统将镜像推送到节点。基本上,节点启动时会进行PXE Boot,通过网络引导并加载一个小内核,识别正在运行的节点。一旦识别完成,它会分配特定的镜像并将其复制到系统中,启动并运行。这个编排过程在云中也非常类似。唯一的区别是无法PXE Boot云节点。我们会在云中启动一个虚拟驱动器,将提到的小内核放入其中,它执行相同的功能。不同之处在于,它在虚拟驱动器上运行而不是在RAM中运行。
为了使云端操作更加高效,我们有自己的Kubernetes版本,并通过VPN连接到云端,使得这些系统可以相互通信。你的Kubernetes主节点可以看到并与这些云端节点协作,你也可以在云端设置Kubernetes主节点和工作节点的配置。
你可以通过多种方式运行这个系统。你可以选择分布式工作节点,或将所有内容集中在一个区域。另外,你还可以运行多个云平台。我们支持AWS、Azure和Oracle,你可以在Base Command Manager系统中同时运行这三种云平台的任意组合。
此外,我们还支持边缘计算,这在推理过程中尤为重要。如果你是一家零售店,且在多个不同地点设有服务器,需要监控、管理、更新并推送镜像到推理服务器,我们的边缘工具能够助你一臂之力。
基本上,我们对云突破配置进行了重新设计,以适应边缘计算环境。因此,它允许你拥有远程系统,并可以监视和管理这些系统。正如我之前所说,它非常适合那些拥有远程影响服务器的场景。
这使得我们有能力从边缘到核心再到云端进行全面管理。你可以从一个系统同时管理多种系统和多个位置。
此外,我想补充一点,边缘计算不仅适用于管理远程执行影响的服务器,还可以管理远程集群。我们有客户在全球范围内管理集群。他们可能拥有三四个站点,并使用一个中央位置进行集中管理,这使得他们能够使用一个镜像集、一个管理员集,并在一个位置管理所有内容。
接下来,我想谈谈用户界面。如果你熟悉Slurm,你可能知道它完全是基于命令行的。这有点像旧式的DOS窗口,非常古老。为了提供更加直观的用户体验,我们已经与Jupyter集成,尝试为系统引入更多的图形用户界面。这是大多数数据科学家所熟悉的,也是他们在学校学习神经网络、深度学习和机器学习的方式。
我们将Jupyter与我们的工具集成在一起,并进行了修改,以允许在集群中分发内核。通常情况下,Jupyter是从运行的服务器上生成内核的。但我们对其进行了重新配置,使其能够在集群中分发内核。因此,即使你拥有数千个节点的集群,也可以有数千个用户同时运行这个Jupyter环境。
我们提供了一些工具来帮助你设置和配置这些内核。你可以在这些内核中提供深度学习和机器学习工具。简单来说,这些内核就像你桌面上的图标一样,当你的学生登录时,他们会看到这些图标。点击一个图标,他们就可以获得一个包含GPU的环境,以及他们工作所需的所有工具和库,如PyTorch、TensorFlow等。
我们还对这个环境进行了改进,使你能够提交作业、检查正在运行的作业,并且基本上可以从Jupyter环境内部与集群进行交互。这样做的好处是,用户可以在屏幕上点击一个图标,即可获得一个配备了GPU、包含所需所有工具和库(如TensorFlow)的环境,从而更加便捷地进行工作。
所以,你们的Windows 10、Windows 11用户,他们不需要创建PuTTY会话和SSH再进行连接。他们只需要一个网络浏览器,访问一个URL,页面就会弹出。从这个环境中,他们可以提交和运行作业,并处理所有与集群相关的事务。
这里只是从Jupyter环境内提交作业的一个示例。
我们还与VNC集成,并有一个下拉菜单,如图所示,允许你看到该环境的图形表示。所以,如果你有图表、图形或任何视觉元素需要展示给用户,他们可以在这里看到,甚至你可以在这个环境中拥有一个完整的Linux桌面。
最后,我想提一下,我们正在监控GPU,这对NVIDIA来说是非常重要的一个功能。我们有能力从GPU中收集大量信息,以便你监控GPU的运行情况,确保其以最佳性能运行。
问题:如果你看到一个失败的节点,你能否将其与某些已停止的作业关联起来?
嗯,你肯定可以知道哪些作业在当时运行,因为会有一个时间戳。所以,是的,你可以做到这一点。我们重视的是如何让这些作业重新运行。
我还没提到的是,我们还有一组称为预作业健康检查的指标或检查。这些检查会在作业运行之前进行。作业会排队等待运行,然后系统会确定用于运行该作业的服务器。接着,这些预作业健康检查会在系统上运行。如果一个节点失败或未通过健康检查,它将被从队列中移除,不会被利用。为了避免长达两周的深度学习作业中途失败并需要重启的情况,我们正在尽力预见可能出现的问题,并在开始前识别系统中的任何问题。
问题:BCM是一个多用户环境吗?
是的,
问题:但是否有将其作为多租户环境进行工作的计划?
这是我们正在考虑的事情。我们有一份正在制作的白皮书,讨论了如何分离和创建多租户。但我们还没有达到那个阶段。这是我们正在努力的方向。
问题:在Slurm中运行作业十分便捷,那么在Kubernetes中运行作业又是怎样的体验呢?
我们目前提供的解决方案是通过Base Command Manager来部署Kubernetes。此外,我们拥有一个庞大的MLOps合作伙伴生态系统,它们可以在Kubernetes之上进行部署。虽然提到了Run:ai和Domino,但实际上有数十个,甚至可能上百个其他平台都可以与Kubernetes兼容。这得益于Kubernetes的通用性,这些平台都是基于Kubernetes构建的。如今,许多高级的批处理调度工作都是通过这些合作伙伴完成的。我们在企业内部的不同部分和不同服务中采用了一些参考架构,使用了如Volcano、Q等方案,还有一些我们定制的调度程序。目前,这个生态系统十分丰富,并没有一种通用的解决方案。选择哪种方案取决于你的具体需求。你是否需要进行多节点训练或多节点推理?还是仅需要单节点批处理?你是否在处理需要共同调度的应用程序的批处理任务?所有这些因素都会影响你的选择。
问题:关于集群中的动态资源配置,假设集群本身是分散的,但你正在将90%的资源从Slurm切换到Kubernetes的10%,然后可能再切换回来。是什么让Kubernetes能够感知每个工作负载的情况并进行相应的调整呢?
这主要依赖于你的脚本。你需要编写一个脚本来监控这些情况,并告诉自动扩展器何时进行这些资源分配的更改。
Adam Tetelman
总结一下,在AI Factory中,你需要进行训练,也需要进行推理。此外,还有开发人员需要参与开发工作。现在我们正在讨论Base Command Manager,但从更宏观的角度看,如果你正在构建AI Factory或AI卓越中心,这些都是你需要考虑的方面。对于这些需求,许多基础工具都是免费的,可以使用开源软件来实现。你需要开发,需要批量训练,不论是在Kubernetes、Slurm或其它平台上。然后,你需要进行推理,并希望推理能力能够扩展。你可能还想为开发提供一个图形界面,并保留类似DOS的命令行界面,如批处理运行等功能。
你可能会用到H100这样的硬件,数量可能达到100个。你可能还有仅使用CPU的节点。你希望将推理扩展到合适的工作负载,或将工作负载扩展到合适的硬件类型。你的集群将是异构的。起初,你可能连GPU都没有,但后来你想要添加GPU,并希望你的工具能支持这一变化。因此,在VDIA Enterprise中,我们使用了网络库,并谈到了加速、GPUDirect、RDMA等技术。你需要确保这些都能正常工作,以获得最佳加速效果。
此外,关于操作系统和安全性,你也希望进行安全扫描,在部署到这种规模时,你会希望确保没有CVE(已知安全漏洞)出现。你希望能在驱动程序、操作系统、协作系统、应用程序等中跟踪这些CVE。
正如我前面提到的,这个平台层中的许多部分都是现成的。但我们认为Base Command Manager与NVIDIA AI Enterprise的其它部分相结合,是进入软件领域的最佳途径。这是获得易于使用的AI Factory的最佳方式,同时确保安全性和可扩展性。不仅如此,你还能获得最佳性能,实现最高的投资回报率,并确保你的应用程序无处不在。对吧?我们谈到了托管的Kubernetes,不同的云环境,边缘部署,以及本地部署。因此,Base Command Manager支持AI Factory中的所有这些功能。你可能希望实现所有这些功能。
接下来,我们回到应用程序堆栈。
其中许多是基础架构的部分。但当我们实际进行端到端的数据科学工作时,无论是机器学习、深度学习还是LLM等,从数据到推理的整个过程,我们的工作流工具都提供支持。两天前,我们发布了一款名为Data Curator的开源软件,已经发布在GitHub上。
我们提供开源工具,帮助你获取原始数据并删除其中的PII(个人可识别信息),进行数据转换和清理。我们有RAPIDS库用于加速机器学习,这在ETL方面非常有用。还有一个名为DALI的工具,其中包含许多库,如Pandas,它们在GPU上进行了加速,实现了快速排序等功能。其中很多都是开源的,但企业版提供了微服务,使这些开源部分更加易用和可靠。在数据准备方面,这些工具非常有用。
当然,还有训练环节。我相信我们对TensorFlow、PyTorch等都很熟悉,它们提供了GPU加速功能,支持GPU到GPU的多节点扩展、缩放等,以及检查点功能。因此,当你的作业失败并自动从检查点重启时,你不会像之前那样损失一周的工作。
一旦你获得模型,就可以进行整个优化工作流程。虽然并非每个人都这样做,但你会看到模型运行速度的巨大提升和GPU内存使用量的显著减少。在通用AI的情况下,当你在同一个GPU上运行较小的模型时,这意味着你可以获得更高的吞吐量。
较小的模型可以处理更大的批处理大小。TensorRT是一个工具,可以实现这一点。TRTLLM是一个后端,可以为LLM进行这样的操作,并将标记化集合与模型组合在一起进行优化和运行。你可以在Triton上运行它,Triton是我们的推理服务器。它将获取你的模型并运行它。我们围绕TensorRT和TRTLLM构建了微服务,使这些操作变得更加容易。因此,所有这些开源工具可以组合在一起,形成一个端到端的工作流程,使你的AI Factory能够顺利地进行训练和推理。
如果你想以最简单的方式进行操作,NVIDIA AI Enterprise将所有内容打包整合,让你轻松获得基础设施管理和Base Command Manager。我们有 Operator来启用你的Kubernetes,并为你提供微服务。目前,有多个EA计划供你选择,加入即可获得部分微服务的访问权限。
此外,我们还提供了更多的示例工作流程。因此,如果你在公司中有自己的项目计划,可以从头开始构建。但NVIDIA AI Enterprise也为你提供了丰富的示例供你参考。
我们了解到,许多公司对于自己的项目计划都有明确的方向,但可能不知从何下手。你可能想要进行安全指纹识别,以检查所有日志文件并查找异常;或者进行垃圾邮件检测,仅检测电子邮件中的内容;或者搭建推荐系统、聊天系统等。在这方面,我展示了聊天部分的示例,如Brag等。此外,语音分析等功能也是我们提供的服务之一。在NVIDIA AI Enterprise的示例工作流程中,你可以找到这些示例,直接部署,并通过我们的微服务在Base Command Manager上运行,然后根据实际情况进行调整,以符合你的工作流程。
甚至,你可以使用自己的数据集或模型来替换我们提供的。之前讨论过的这些优势,不仅适用于云环境,你可以在数据中心安装Base Command Manager、这些微服务,并下载相应的Helm图表或VM。在数据中心内安装后,你就可以使用真实数据来测试这些示例工作流程,无需担心隐私或安全问题。
值得一提的是,NVIDIA AI Enterprise提供企业支持、安全性保证和服务水平协议。如果你现在开始使用,将能享受到这些服务。此外,我们还为NVIDIA AI Enterprise提供了90天的评估期。
如果你对以上内容感兴趣,无需提供信用卡信息或其它任何信息即可开始评估。你只需访问NGC网站,注册90天的评估服务即可。评估期间,你可以获得Base Command Manager、这些微服务、RAG Operator以及示例工作流程,并下载到你的数据中心进行安装。
对于企业客户而言,重要的是,作为NVIDIA AI Enterprise的一部分,我们为多款软件提供长期支持分支,并附带CVE警报。因此,安全性得以保障。我们会全面扫描我们的软件,并列出所有安全问题。我们会定期为长期支持分支发布补丁。如果你的业务涉及安全性和隐私,那么安全性无疑是至关重要的。这也是确保你尖端、领先的AI应用程序安全无忧的绝佳方法。
-----
问题:我们之前讨论的是内容相关的工作流程,那么关于数据中心的工作流呢?特别是多租户和云集成这两点。如果你想搭建自己的云,那它与这些功能有什么关联?
如果你想搭建自己的云,我们确实有另一套方案。多租户确实是一个复杂的问题。如果你正在尝试构建一个支持多租户的系统,NVIDIA Enterprise中的软件都在积极开发中,我们正在进行改进。随着每个月的更新发布,多租户是其中一个重点,你可以使用这些工具来构建相应的系统。但目前,这些工具并不直接支持多租户。我们正在积极解决这个问题。我们已经做了一些工作,比如每个100 GPU的机密计算。我们还拥有自动网络配置功能,可以协助解决部分问题。
问题:你们是否计划集成任何存储配置和其他配置工具?我的意思是,如果你们增加更多的DGX节点,你们可能需要自动化配置,如集群配置、节点配置、连接配置,以及存储连接等。最终,我希望能实现这一点,并期望能在所有节点上标准化配置,也许可以通过Base Command Manager来集成或至少进行监控。
这是我们在Base Command Manager最新版本中新增的功能。在版本十中,我们开始注重这类功能的开发。我们可以配置Spectrum交换机,这是我们当前的发展路线和努力方向。
问题:你们是否拥有UFM?
是的,这也是我们的一项工作。Bright Cluster Manager多年前就已经与UFM实现了集成。现在我们正将其重新纳入整体解决方案中。
问题:专业服务团队是否会负责进行设置和配置呢?
通常情况下,他们会负责这些工作,但目前他们正在忙于配置我们的一些大型系统。因此,我预计将来会提供这种服务,但目前他们还没有进行这种配置。
我们有明确的服务交付目标。如果你现在需要帮助,随时可以联系我们。如果你购买了SuperPOD,你将获得我们的专业服务团队(PST)的支持。
目前,我们依赖合作伙伴来完成这些设置和配置工作。我们有一些非常熟悉Base Command Manager和我们软件栈的合作伙伴,他们可以确保你的系统顺利上线。
对于SuperPOD客户,我们提供配置服务。对于其他客户,我们有一个非常丰富的合作伙伴生态系统,他们可以提供此类服务。我们有一个非常完善的培训计划,邀请所有合作伙伴参与,让他们实际操作DGX,并展示所有相关软件。我们与许多执行这些任务的合作伙伴保持密切合作。
这些都是我们目前提供的不同微服务,作为NVIDIA AI Enterprise的一部分,它们支持不同的工作流程。
问题:你提到的AI工作流程,这些是在NGC(NVIDIA GPU Cloud)上的吗?还是类似于Media Launch PAD?
幻灯片上提到的所有工作流程都位于NGC上。如果你现在访问NGC并注册90天的评估,你将能够访问企业目录,并在那里找到这些内容。我演示的RAG内容也是可以安装的。如果你搜索NVIDIA LLM RAG Operator,你现在就能找到相关的文档。
--【本文完】---
近期受欢迎的文章:
更多交流,可添加本人微信
(请附姓名/单位/关注领域)