VMware Private AI Foundation技术概述及演示
VMware Private AI Foundation 的功能和优势
自动化基础设施配置:通过自动化工具,数据科学家可以快速部署预配置的 AI 工作站(深度学习虚拟机)或 Kubernetes 集群,而无需手动配置网络、存储和其他基础设施组件。 AI 工作站是一个预先构建的虚拟机镜像,包含 Ubuntu 操作系统、虚拟 GPU、Docker 运行时和 PyTorch。 Kubernetes 集群可以通过一条命令或 API 调用自动创建,并根据需要进行扩展。 集成 NVIDIA AI 软件堆栈:该平台集成了 NVIDIA 的 AI 软件堆栈,包括 NVIDIA 推理微服务 (NIM)、Retriever 微服务和操作工具。 NIM 用于部署和管理大型语言模型 (LLM)。 Retriever 微服务用于从向量数据库中检索数据,以支持检索增强生成 (RAG) 应用。 私有数据集成和 RAG 支持:该平台支持将私有数据集成到 LLM 中,以提高生成式 AI 应用的准确性和可靠性。 它提供了一个自动配置的向量数据库,用于存储和检索私有数据嵌入。 数据科学家可以使用 RAG 技术,通过从向量数据库中检索相关信息来增强 LLM 的响应。 GPU 资源管理和监控:该平台提供 GPU 资源的虚拟化和灵活分配,并提供监控工具来跟踪 GPU 使用情况和性能。 数据科学家可以根据需要请求不同数量和类型的 GPU。 Operations 工具提供了一个直观的仪表板,用于监控 GPU 温度、内存使用情况和核心使用情况。 模型治理和生命周期管理:该平台提供模型、容器和基础设施组件的版本控制功能,以确保 AI 开发的可重复性和可靠性。 Model Gallery 提供了一个中心化库,用于存储和管理经过验证的 AI 模型。 安全性:该平台建立在安全的 VMware Cloud Foundation 基础设施之上,并提供额外的安全机制来保护私有数据。
提高数据科学家工作效率:自动化基础设施配置和预配置的 AI 环境使数据科学家能够专注于模型开发和实验,而不是基础设施管理。 加速 AI 应用部署:Kubernetes 集成和自动扩展功能简化了 AI 应用的部署和扩展。 增强 AI 应用安全性:私有数据集成、安全的平台基础设施和额外的安全机制有助于保护敏感信息。 优化 GPU 资源利用率:GPU 虚拟化和监控工具可以帮助优化 GPU 资源利用率并降低成本。 简化 AI 开发治理:模型和容器版本控制以及 Model Gallery 促进了 AI 开发的标准化和可重复性。
VMware Private AI Foundation with NVIDIA 的技术堆栈会定期更新,以确保与 NVIDIA AI 软件组件的最新版本兼容。 该平台主要关注本地部署,但也支持在云环境中运行。 VMware 提供了详细的文档和指南来支持 Private AI 的部署和使用。
使用 VMware Private AI Foundation 构建和部署机器学习模型
VMware Private AI Foundation with NVIDIA 是 VMware Cloud Foundation (VCF) 的一个附加组件,旨在帮助数据科学家和开发者更轻松地在本地环境中构建和部署机器学习模型。
1. 选择部署环境:
AI 工作站(AI Workstation):这是一个预先配置好的虚拟机镜像,包含 Ubuntu 操作系统、虚拟 GPU (vGPU)、Docker 运行时和 PyTorch。AI 工作站适用于开发和测试模型。
Kubernetes 集群:适用于扩展和自动扩展已准备好投入生产的应用程序和模型。
选择 GPU 计算能力:用户可以根据需求选择所需的 GPU 数量和类型。 选择软件包:用户可以选择从 NGC(NVIDIA GPU Cloud)或私有 Harbor 库中加载哪些软件包或容器到环境中。 配置向量数据库:如果需要使用检索增强生成 (RAG) 功能,需要配置向量数据库,例如 PostgreSQL with PGVector。
从模型库中选择模型:VMware Private AI Foundation 提供了一个模型库,其中包含经过验证的模型,可供用户选择。 在 AI 工作站或 Kubernetes 集群中测试模型:用户可以在所选环境中测试模型的准确性、偏差和适用性。
将模型推送到生产环境:经过测试和验证的模型可以推送到生产环境中,例如 Kubernetes 集群。 使用自动化工具简化部署过程:VMware Private AI Foundation 提供了自动化工具,可以简化部署过程,包括创建 Kubernetes 集群、配置容器和部署模型。
使用 Operations 工具监控 GPU 温度、内存使用情况和核心使用情况:这有助于优化 GPU 使用率,并识别潜在的性能问题。
VMware Private AI Foundation技术解析
本次演示介绍的是正式发布的 VMware Private AI Foundation 产品,与二月份的技术预览版相比,主要变化在于 NVIDIA 组件的名称更新以及 Retriever 微服务的引入。 架构上,Triton Inference Server 更名为 NVIDIA Inference Microservice (NIM),新增 Retriever 微服务用于从向量数据库中检索数据以支持检索增强生成 (RAG) 功能。
VMware Private AI Foundation with NVIDIA作为 VMware Cloud Foundation (VCF) 的附加组件,为数据科学家提供虚拟化环境和 AI 开发工具。 检索增强生成 (RAG)使用存储在独立向量数据库中的私有数据来补充或增强大型语言模型 (LLM)。 自动配置向量数据库和 LLM,提高 LLM 回答的准确性和可信度。 Retriever 微服务负责从向量数据库中检索数据。
RAG 能力演示演示如何使用 RAG 功能从私有数据中获取信息来回答问题。 自动化配置展示如何自动配置向量数据库和 LLM,简化 AI 开发流程。 数据科学家的挑战与解决方案数据科学家在选择和测试模型、基础设施设置以及管理服务基础设施方面面临挑战。 VCF 提供虚拟化环境,灵活分配 GPU 资源,快速部署预配置环境,帮助数据科学家专注于数据科学工作。
VMware Cloud Foundation (VCF) 架构VCF 提供管理域和工作负载域,实现关注点分离。 管理域负责管理 VCF 中的所有其他域,工作负载域用于运行数据科学工作负载。 管理集群管理集群是一个 Kubernetes 集群,负责管理其他集群,例如工作负载集群。 通过 Kubernetes 命令行工具或 API 创建和管理工作负载集群。 数据服务按需创建数据库服务,例如 MySQL、PostgreSQL 和 PGVector。 通过数据服务管理器配置数据库。 AI 工作站预配置的深度学习虚拟机 (Deep Learning VM),用于测试模型。 Kubernetes 集群用于扩展和运行更复杂的 AI 应用程序。
模型、容器和基础设施组件的版本控制使用私有库控制所有组件的授权版本。 深度学习虚拟机 (Deep Learning VM) 预装 Ubuntu 20.04 操作系统、Docker 运行时和 PyTorch。 NVIDIA 容器 (NIM 和 Retriever) 从 NGC 或私有库下载并加载到虚拟机中。 私有数据集成到 LLM通过向量数据库将私有数据集成到 LLM。 使用 PGVector 将嵌入和向量存储和检索到 PostgreSQL 数据库中。 Kubernetes 集群的自动扩展Kubernetes 集群支持自动扩展,以适应不断变化的工作负载需求。
简化的 AI 工作站和 Kubernetes 集群部署流程提供多种预配置选项供数据科学家选择。 通过简单的界面请求 AI 工作站或 Kubernetes 集群。 自动化配置过程,无需手动设置。 GPU 资源分配数据科学家可以选择所需的 GPU 计算能力。 IT 管理员可以设置 GPU 资源限制。 软件包和容器管理数据科学家可以选择从 NGC 或私有库加载软件包和容器。
GPU 使用情况监控Operations 工具提供 GPU 使用情况的直观图表,包括温度、内存使用情况和核心使用情况。 帮助识别未充分利用的 GPU 资源,优化资源利用率。 容量规划监控 GPU 使用情况可以帮助进行容量规划,确保有足够的资源来满足工作负载需求。
模型测试和验证使用深度学习虚拟机在安全环境中测试模型的准确性、偏差和适用性。 模型库将经过验证的模型推送到模型库,供应用开发和生产使用。 MLOps 治理Model Gallery 是迈向 MLOps 治理的第一步,提供模型版本控制和访问控制。
NVIDIA 组件的版本稳定性每个版本集至少保持六个月的稳定性。 定期更新和定制升级选项定期更新 NVIDIA 组件,并提供定制升级选项。
如何控制不同版本的深度学习虚拟机镜像? 模型库中是否包含模型训练数据和微调方法的信息? 如何在模型库中构建模型卡?
产品和技术列表
VMware Private AI Foundation with NVIDIA: 这是一个建立在 VMware Cloud Foundation (VCF) 之上的附加组件,旨在为数据科学家和 AI 开发者提供一个安全、可扩展且易于管理的平台,用于构建和部署生成式 AI 应用。它结合了 VMware 的虚拟化和云计算技术以及 NVIDIA 的 AI 硬件和软件。 VMware Cloud Foundation (VCF): VMware 的私有云平台,提供计算、存储、网络和安全服务的完整堆栈。VCF 是 VMware Private AI Foundation 的基础。 NVIDIA Inference Microservice (NIM): 用于部署和管理大型语言模型 (LLM) 的 NVIDIA 微服务。它取代了之前称为 Triton Inference Server 的组件。 Retriever 微服务: 用于从向量数据库中检索数据以支持检索增强生成 (RAG) 应用程序的微服务。 检索增强生成 (RAG): 一种使用存储在独立数据库中的私有数据来补充或增强大型语言模型 (LLM) 的技术。 向量数据库: 一种特殊类型的数据库,用于存储和检索私有数据嵌入。文章中提到了 PostgreSQL with PGVector 作为向量数据库的例子。 嵌入模型 (Embedding Model): 将数据转换为向量表示的模型,用于在向量数据库中存储和检索数据。 深度学习虚拟机 (Deep Learning VM): 预配置的虚拟机镜像,包含 Ubuntu 操作系统、虚拟 GPU、Docker 运行时和 PyTorch,用于开发和测试模型。也称为 AI 工作站 (AI Workstation)。 虚拟 GPU (vGPU): 允许在多台虚拟机之间共享物理 GPU 的技术。 vMotion: VMware 的实时迁移技术,允许将正在运行的虚拟机从一台物理主机迁移到另一台主机,而不会中断服务。 管理集群 (Supervisor Cluster): 一个 Kubernetes 集群,负责管理其他 Kubernetes 集群,例如工作负载集群。 工作负载集群: 由管理集群创建的 Kubernetes 集群,用于运行实际的应用程序和模型。 NGC (NVIDIA GPU Cloud): NVIDIA 的 GPU 加速软件中心,提供容器、模型和其他 AI 资源。 NVCR (NVIDIA Container Repository): NVIDIA 的容器注册表,托管 NVIDIA GPU 加速容器。 Harbor: VMware 的企业级容器注册表,用于存储和管理容器镜像。 Operations: VMware Cloud Foundation 工具组合中的一个工具,用于监控 GPU 使用情况和性能。 模型库 (Model Gallery): VMware Private AI Foundation 中的一个中心化库,用于存储和管理经过验证的 AI 模型。 MLOps (机器学习运维): 一种将 DevOps 原则应用于机器学习的实践,旨在自动化和简化机器学习模型的开发、部署和管理。
可以将这次视为二月份演讲的更新。这次展示的是正式产品,而二月份展示的是技术预览版。其实,两者非常相似。
自那时起,架构上唯一的变化就是一些NVIDIA组件的名称更改。例如,当时我们讨论的是Triton Inference Server,现在我们讨论的是NIM——NVIDIA Inference Microservice(NVIDIA推理微服务)在最上层。此外,之前没有提到Retriever微服务,这是在RAG(Retrieval-Augmented Generation,检索增强生成)设计中从向量数据库检索数据的微服务。这是一个变化,除此之外,唯一的其他变化就是底部硬件OEM厂商的数量。
接下来,我要讲解蓝色层,即VMware Private AI Foundation with NVIDIA层。正如大家所说,这是VMware Cloud Foundation (VCF)的一个附加组件。我会介绍这些部分各自的作用。
关于RAG这个术语,大家应该都已经有所了解。原本我打算在我的部分介绍RAG,但显然大家已经知道了。对于不太熟悉RAG的朋友来说,它的核心思想是使用存储在独立数据库中的私有数据来补充或增强大型语言模型(LLM)。这种数据库是一种特殊类型——向量数据库。
我们为您配置这个向量数据库,同时还配置由数据科学家选定的大型语言模型,并将其配置到NIM容器中。稍后您会看到这个自动化过程。
这样做的好处是:大型语言模型有时会出现幻觉(hallucination),而且它们在回答问题时不会引用信息来源——它们不会说明信息的出处。因此,大型语言模型有时会存在一些不稳定性。我们在此提出的RAG解决方案是,使用公司的私有数据,通过嵌入模型(embedding model)将这些数据加载到向量数据库中,成为私有数据的真实性来源。
例如,"VMware即将发布的VCF版本有哪些功能?"这是一个内部问题,某位VMware员工需要回答客户的问题,并希望快速概括即将发布的功能。我们已经在内部部署了一个应用来处理这类摘要任务,并且将其作为一个开源示例应用发布了。
Jay Cuthrell: 你们也在这套基础设施上托管嵌入模型吗?
Justin Murray: 是的,我们是这样做的。这由一个单独的微服务Retriever来托管。嵌入模型本身是一个较小的模型。
Jay Cuthrell: 那么训练呢?
Justin Murray: 您将对这些模型进行微调(fine-tune)。它们不会保持原样。因此,数据科学家会对嵌入模型进行一定程度的训练,可能也会对大型语言模型进行训练——即生成最终英文文本的组合模型。这里会进行一定程度的训练,我称之为微调。所以,这不仅仅是推理,虽然推理是主要的主题。
我将进一步解释为什么VMware Cloud Foundation适用于数据科学家的日常工作。正如我们之前描述的那样,数据科学家在选择和测试模型时,他们会去MRAW、Hugging Face、Meta或NGC(NVIDIA GPU Cloud)下载模型。
虽然我在描述这个过程时像是完全自由的状态,但在我的演讲结束前,我会为这种下载和测试模型的行为引入一些MLOps治理。这正是深度学习虚拟机(Deep Learning VM)的作用所在:在一个安全的环境中下载并测试模型。
然后是基础设施的设置。他们的大部分时间都在思考这样的问题:"我有足够的GPU资源吗?"我自己也经常在单个A100和双A100之间纠结,而且非常羡慕坐在后面的那些拥有H100的同事。我总是在寻找适合我模型的合适基础设施,因为NVIDIA现在已经开始根据特定GPU类型来微调模型了。
这不仅仅发生在一个人的电脑上,而是在许多人的电脑上,或是多个数据科学团队共同协作。每个人都在做稍有不同的事情,他们使用不同的工具包和平台:PyTorch、TensorFlow,这一切都在不断变化。每周都有新的模型,每月都有新的工具包。
我们如何跟上这种变化的节奏呢?数据科学家们在向IT人员请求:"我明天需要将我的环境从一个GPU更改为两个GPU,然后星期五再改回来。"这种变化的节奏在虚拟化环境中才能真正被接受,我们相信,VMware Cloud Foundation(VCF)就是对此的解决方案。
第二个问题是,直到现在,数据科学家大部分时间都在处理服务基础设施、流程自动化,试图使用Shell脚本快速搭建这些基础设施,然后监控系统以查看GPU是否真的如他们所想的那样被使用。这并不是他们的本职工作,而是IT部门的职责。
因此,VMware Cloud Foundation(VCF)专注于管理左侧的内容,真正让数据科学团队能够在右侧进行实际的数据科学工作。我们的构想是为这些人员提供一个云计算接口,以便他们获取所需的基础设施和工具。这些工具主要位于NVIDIA微服务中——NIM、Retriever和操作工具。我们将在最简单的深度学习虚拟机(Deep Learning VM)上下文中进行演示,同时也会在Kubernetes集群的背景下进行演示,当您的应用和模型准备就绪时,您将使用Kubernetes集群。
Mitch Ashley:
你主要是指本地工作,还是指他们在云服务商上所做的工作,这些在本地更容易完成?
Justin Murray:
是前者。这两者中主要是指本地。虽然不是排他的,它也可以在云上运行,但一开始这是一个本地化的解决方案。
您问到vSAN是否是必需的。vSAN是管理域的必需品,管理域是控制VMware Cloud Foundation(VCF)中所有其他域的主域。
我们在这里有一个关注点的分离——管理关注点和工作负载关注点之间的分离。这些域是大的,可能是整个数据科学部门的域。您可能是一个拥有多个子公司的企业,每个子公司可能都有自己的工作负载域。我们的理念是隔离。我们保持这些的独立性。
例如,每个工作负载域都有自己的vCenter来管理。但我们添加了一些工具,如自动化工具(您即将看到的)、操作管理工具和数据服务,用于生成向量数据库。我们将这些工具添加到管理域中,它们在工作负载域中发挥作用。它们实际配置的内容在工作负载域中。
因此,被配置的内容是一些简单的称为AI工作站的东西——可以理解为单个VM,即深度学习虚拟机(Deep Learning VM)。我不断提到深度学习虚拟机,稍后会告诉您这是什么。这里是测试这些内容的地方。当事情变得更加复杂并需要扩展时,我们会为您即时生成一个Kubernetes集群,以便您可以快速投入工作。
因此,所有这些内容都属于工作负载域。在我们与客户的概念验证(POC)中,以及未来与客户的合作中,我们会要求他们最初为数据科学领域专门划分一个工作负载域。
这是对VMware Cloud Foundation的非常简要的概述。其背后有NSX、SDDC Manager来创建这些工作负载域,并且有一整套工具,其中三个工具我们将稍后详细讨论。
在这基础设施之上,我称之为管理集群(supervisor cluster)。它是一个Kubernetes集群,其任务是管理其他集群。它的职责是创建像工作负载集群这样的内容。Kubernetes集群由节点(node)组成,在我们的环境中,节点是VM,它还由命名空间(namespace)和容器(pod)组成,这些都是Kubernetes用户经常处理的内容。他们会执行`kubectl get pods`和`kubectl get namespaces`等命令。
因此,我们在虚拟机中实现了所有这些内容。虚拟机与Kubernetes节点的概念是直接对应的,节点即是虚拟机,而整个过程通过向管理者发出一条命令来生成。这条命令本身就是Kubernetes命令:`kubectl apply my yaml`,它可以通过一条命令生成这个内容。
当然,所有这些操作也是通过API完成的。
Ray Lucchesi:
在这种情况下,您不需要容器操作高级服务(Tanzu Kubernetes Grid)。这一切都是基本的,对吧?基本的VCF?
Justin Murray:
这已经内置于vSphere中。在vSphere安装时或vSAN安装时可以开启。这是在vSAN下免费的Kubernetes,并且可以根据需要为不同的数据科学团队创建单独的集群,这就是这里的情况。
Justin Murray:
在右侧,您会看到一个完全独立的服务,也可以通过管理者来使用。该服务是按需创建数据库的服务——MySQL和PostgreSQL以及PGVector,关系数据库的向量化,都可以通过该数据服务设备进行配置。
Ray Lucchesi:
还有一个称为数据服务(Data Services)的VCF高级服务,那是不是另一回事?
Justin Murray:
这是数据服务管理器(Data Services Manager)。我认为我们讨论的是同一个内容。这是内置于VCF本身的一个功能。
Ray Lucchesi:
我相信还有一个高级服务版本,但可能是单独收费的?您说的是免费版本吗?
Justin Murray:
是的,可能是这样。我对此不太熟悉。这是VCF的一部分。当您购买VCF时,您会得到这个。可能还有一个高级版本,但我没有遇到过。
Jay Cuthrell:
据我所知,VCF是一个非常受欢迎的产品。这个受欢迎的产品中,可能包含了之前称为Tanzu的某些元素,或者其他某些东西,甚至可以追溯到SQLFire/GemFire时代。为了使其更易于访问、使用和扩展,已经做了很多工作。
您有没有见过或听说过简单的解释,告诉我们"这里是所有包含成分的清单,也许还有它的起源故事"?因为当我想到VCF客户时,我首先想到的是当前的Tanzu客户。他们可能与Pivotal的关系延续至今,可能还有这些最初的故事。因此,理解您所处的阶段,与我们之前关于投资保护的讨论类似——
我们确实得到了一个很明确的答案,即如果您现在进行交易,继续前进,只要您的VCF 5.11正常,您就没问题。但显然,这其中有一个血缘关系或时间线,涵盖了接受、拥抱和完成从规划、集成、监控到优化的所有过程。
您是如何指导在这里引入数据服务虚拟机(Data Services VMs)这一概念的?我能看到那个小标志,但这在一个可能不是全新建设项目的更长生命周期中如何契合?有很多现有系统,之前已经部署了很多东西。您们是如何应对这些的?
Justin Murray:
我们实际上在以文档的形式进行这方面的工作。因此,这方面有一个经过深度验证的解决方案,文档长度相当可观。我们将其发布给客户,告诉他们"这是进行Private AI所需的所有内容"。明白吗?它包括数据服务,包含向量数据库。这是非常技术性的内容,我将在最后提及。我们还有一些以前的文档,提到过之前的情况,我们也可以提供给客户。但实际上,我们的重点在于VCF所具备的功能。
Jay Cuthrell:
从头到尾的产品体验?
Justin Murray:
是的,因此这里最后会有四到五个参考资料。
Justin Warren:
这正是我需要了解的。作为一名习惯于使用Kubernetes进行CI/CD的应用开发者,体验会是什么样的?比如,我可以在我的笔记本电脑上通过Minikube快速启动这个。如果我在这里独立进行,这感觉很像云计算的挑战,因为应用开发人员习惯于在AWS中驱动东西,而不想处理中央IT,因为那种体验非常糟糕。使用这个的人会有什么样的体验?
Justin Murray:
我第一次接触这个是手动部署VM,我亲自完成了所有工具、所有设置、所有网络和存储的配置——信不信由您,这大约是九个月前的事。我再也不想这样做了。
现在,如果您让我去做,我会创建一个AI工作站,这是一种从VMware下载的预制镜像。它已经为虚拟GPU(vGPU)设置了适当的配置——虚拟化GPU意味着我可以进行vMotion——而且它内部已经配置好了适当的高级设置,实际上在这个深度学习虚拟机(Deep Learning VM)中还包含了NVIDIA的PyTorch。
这个工作站的设计是用于开发,测试模型的准确性、无偏见性、安全性等,之后它会被推广到集群中用于更严肃的应用。
Jay Cuthrell:
这样做能节省多少时间?您的描述就像一个甘特图(Gantt chart)。使用这个方法完成这项工作的时间相比于以前传统方式要短多少?
Justin Murray:
这大约节省了5到10分钟。之前,至少需要一天,至少是从头开始。如果从头开始,创建一个Kubernetes集群可能需要15分钟。如果您对Kubernetes不熟悉,可能需要两三天,甚至更久。因此,这里节省了大量时间。
而且自动化的程度随着您在这个图表上向上移动而加大。我将向您展示创建Kubernetes集群的45个步骤——不是逐一展示——创建一个深度学习虚拟机大约需要15个步骤。如果没有我将展示的这项技术,您是需要手动完成这些步骤的。
Ray Lucchesi:
所以AI工作站将共享一个GPU,即在多个工作站之间虚拟化GPU的解决方案?是这样的吗?
Justin Murray:
有可能。如果您的模型能够适应一部分GPU,那么是的,您可以创建这些虚拟GPU。我们将在这里看到可选项,以便您和我能够共享一个物理GPU,即使我们彼此并不认识。
Justin Murray:
这就是开发者体验的一部分。这是我们希望呈现给数据科学家的,告诉他们"您想要这两者中的哪一个?"无需提交工单,也无需与IT沟通——这里在后台进行了大量的工作。但这就是数据科学家或为数据科学家服务的平台工程师会点击的内容。我们稍后会以演示形式展示这一点。
我们最初提供了两个选项。随着产品发布,我们还加入了更多选项。您想要包含RAG的Kubernetes吗?您想要包含RAG和Jupyter Notebooks的Kubernetes吗?您想要只包含PyTorch的AI工作站吗?提供了许多不同的选项供数据科学家选择。
您将很快看到这些选择。我一直提到深度学习虚拟机(Deep Learning VM)。我们从packages.vmware.com发布了这个镜像,操作系统为Ubuntu 20.04,适用于虚拟GPU(Virtual GPUs)的设置,以支持Docker运行时,并且包含了PyTorch。这是基础镜像。其余的数据科学工具则包含在我们将在首次启动时下载并加载到这个虚拟机中的NVIDIA容器中。
因此,我们将与NGC(NVIDIA GPU Cloud)或私有库进行对话,从中获取NIM(NVIDIA Inference Microservice)容器和retriever容器,下载它们,将其放入虚拟机中并启动。
Andy Banta:
这个AI平台包括Bitfusion,或者现在称之为什么吗?
Justin Murray:
不,Bitfusion不再由VMware支持。这完全是在这个环境中——GPU的消费者和GPU本身都在同一台服务器上。
Justin Murray:
这就是深度学习虚拟机的样子。我展示这个是因为IT管理员会喜欢这个界面。他们整天使用这个界面。这只是一个普通的AI工作站——它只是一个普通的虚拟机,配备128 GB内存(可配置)、16个虚拟CPU(可配置),以及根据需求和可用性提供的任意数量的GPU。这里的虚拟机连接了两个GPU,但如果我们真的在进行一些大规模的操作,也可以有四个或八个GPU。
这个镜像是我加载到VCF(VMware Cloud Foundation)内容库中的,这里存放着所有镜像——包括Ubuntu镜像和虚拟机镜像。它只是另一个镜像。管理VMware的人对此非常熟悉。这是我手动克隆的镜像,我花了至少一天时间来配置它,而这些后来的自动化都为我完成了。所以,让我们看看这个过程的实际操作。
让我暂时跳出幻灯片,切换到另一个屏幕,部署一个AI工作站。因此,这里是我刚才展示的两个选择。我将请求一个AI工作站。我是一名数据科学家。您会注意到我需要做出两个决定——一个小决定,比如我给这个东西起什么名字——但主要的决定是我可以使用的GPU的计算能力。
这由IT进行了限制,而我这里进行了严格的限制,因为我是最终用户,限制为只有一个或两个GPU。这些就是您的选择。
Justin Warren:
我有一个问题:如果我不喜欢IT设定的限制呢?
Justin Murray:
这是个好问题。您需要和他们沟通以解除这些限制。但我在这里展示的是一个相当极端的情况,我将选择限制在一个很小的数量。我完全可以预期,这里会有10个不同的选项,就像您在AWS上看到的那样,有10到15种不同的EC2实例类型。目的是在这里复制这种体验,简单地说,"您的实例——有多少个GPU?"我不会完全开放选择,但我会尽量友好。
Jay Cuthrell:
在选择这些参数时,是否会涉及到任何费用影响?这是一个考虑因素吗?
Justin Murray:
这个问题会在我们知道使用量后稍晚再讨论。事实上,是的,这会在后面出现。所以,请给我这个新的深度学习虚拟机的密码。首先,告诉我您想要多少个GPU,给我一个密码,还有最后一件事——告诉我您将从NGC或私有Harbor库中加载哪些软件包或容器到这个深度学习虚拟机中。
因此,这些内容在自动化工具中也是可配置的。这绝不会保持静态。我们最开始有一些选项,比如TensorFlow和一个RAG示例应用,所以我将选择这个。但这并不局限于此——如果您在自动化工具中有适当的访问权限,可以编辑这些内容并扩展选择。
我们这里需要一件事,就是一个密钥——一个NGC密钥。
现在,自动化完成了我之前花费整整一天时间的工作,我稍微加快了速度,大约在5分钟内就完成了。
Jay Cuthrell:
为了重申一下,您在这个演示中扮演的是哪个角色?您是...?
Justin Murray:
我是数据科学家,或者是DevOps人员、平台工程师,或是为数据科学家服务的IT管理员。所有这些都可以通过API实现。如果您想要脚本化这个过程,也可以通过非GUI的方式来完成,这在社区规模非常大的情况下可能更为适用。
Jay Cuthrell:
有没有客户在展示这个,比如后台展示一个服务目录,里面有可以点击的文件?
Justin Murray:
是的,让我们看看。我们有我们的深度学习虚拟机。如果点击它,我们可以看到在后台创建的工件。这对工程人员很有参考价值。我们使用了一个特定的API,称为Cloud Consumption Interface,这是我之前提到的那个管理集群(supervisor cluster)的API。因此,这项工作已经完成。
我想我们会向最终用户提供一个URL,以便他们进入自己的Jupyter Notebook或他们希望进入的任何环境。我们希望在这里展示一个示例应用程序。因为我们的听众中有大量的IT人员,我们向他们展示IT界面,告诉他们,"这就是虚拟机最终的样子。"如果我们点击它,我们可以看到它确实具备我们请求的GPU,因此我们可以确认他们得到了所需的确切资源,没有超过他们的需求。
我们将取消此操作并返回。现在,更接近开发者的一面,我们将查看这个虚拟机内存储有哪些服务、哪些微服务可以使用。为了做到这一点...
我将进入命令行界面。当您在命令行界面时,我们看到的是:驱动程序是如何安装的?
NVIDIA-SMI,正如您们中的一些人可能知道的,是告诉我们驱动程序是否存在的命令。如果不存在,我们当前处于虚拟机内,需要检查我们的主机以确定主驱动程序是什么。这个检查已经为您完成,我可以保证我在这个主题上花费过整整几周的时间。我不打算再做一次。这个自动化为我完成了这一切。它正在检查主机,以确保主机处于正确的级别,并在虚拟机首次启动时安装适当的NVIDIA驱动程序,因此我不再需要担心这个问题。
不仅如此,它还在安装适合该模型的容器。这里发生的事情是,我们正在从NGC(NVIDIA GPU Cloud)登录到NVCR(NVIDIA Container Repository),并下载最新版本的RAG包——RAG示例应用程序——以及驱动它的适当容器。适当的微服务将是NIM(NVIDIA Inference Microservice)和Retriever,稍后我会解释它们的作用。
如果我们执行`docker ps`,所有这些都是在Docker上运行的,这对每个人来说都非常熟悉。在虚拟机内部,我会看到五个容器。其中两个是从NGC下载并在这个虚拟机中启动的NIM和Retriever容器。这同样的原则适用于Kubernetes,只是在Kubernetes的环境中,用户的可见性稍低。
这些是VM启动时下载的NVIDIA工件。我可以采取后续步骤,将它们现在放入我的私有库中,以便下次有更多控制权。它们现在处于活动状态并在运行。我可以进入NVIDIA推理服务,确切查看已启动的模型。这是LLaMA,27亿参数——这是一个小型模型——我可以看到确切的参数是什么。
如果您作为开发者非常敏锐,您会看到这里的端口号是999。这是OpenAI API的端口。换句话说,如果您在OpenAI上使用他们的API构建了一个应用程序,而许多开发者都这样做,那么通过更改所使用的URL,该应用程序现在可以与这个本地模型进行交互。
反之亦然,我们可以使用OpenAI,这是构建这些应用程序的首选API,并在本地或云中使用同样的NIM,或与OpenAI的API进行交互。
Alastair Cooke:
我有点担心。在企业环境中,有很多自动化的镜像部署,这些镜像包含特定版本的组件。作为企业环境,我需要能够控制这一点。您提到了使用我自己的Harbor注册中心或其他容器注册中心来保存这些容器镜像,对吗?此外,下载的设备——对于不使用本地设备而使用我自己的"黄金"设备,有什么生命周期控制能力?
Justin Murray:
通常,我们依赖一个私有库来控制所有内容的当前授权版本。因此,我刚刚下载的这些容器的授权版本、模型的授权版本——稍后在我的演讲中,我们将把这些都放入一个库中。
Alastair Cooke:
如果我在某个地方有一个库,记录了所有支持的、允许的版本,以及可以在这些容器镜像中的所有库,还有Ubuntu镜像中的一切——我可以从一个地方提取这些吗?
Justin Murray:
是的,我们可以为您提供这个。
Alastair Cooke:
并且从一个地方进行控制?我不仅想知道您们有什么,我想确保我得到了我需要的。
Justin Murray:
我犹豫的原因在于VM世界与Kubernetes世界的情况略有不同。在Kubernetes世界中,我们会向您展示一个适用的Ubuntu授权版本目录。我们在深度学习(DL)虚拟机领域也可以做到这一点,但我们最初主要关注的是模型版本控制和容器版本控制。
Alastair Cooke:
这是以应用程序为中心而非以基础设施为中心的方法吗?
Justin Murray:
这是个好问题。这确实是我们需要关注的内容。
仅供您参考,模型编号在这里。您当然可以在自动化工具中将其更改为最适合您的模型。
Alastair Cooke:
我想要十个版本分布在各处。
Justin Murray:
是的,这确实是一个需要解决的问题。
Ray Lucchesi:
我自己处理这类事情时遇到的最大挑战是,当我更新,比如说Docker或其他软件时,NVIDIA驱动无法正常工作,或者CUDA必须降级或升级。保持所有这些组件正常工作真是个麻烦。
Justin Murray:
好的,这样您就明白了,NVIDIA已经测试了我们组装的配置,而VMware进一步进行了测试,因此我们确认所有版本能够相互兼容。我们正试图保护您免受这种问题的困扰,我们已经听到过很多次类似的反馈。人们会说,"我更新了Python,结果一切都不再工作了。"我们提供的是一种稳定环境的方式,至少可以维持一段时间。
Justin Murray:
我现在不打算深入应用程序的细节。我们将在稍后看到应用程序。我会回到幻灯片上几秒钟,然后再返回到演示中。不过,我想让您们知道,Kubernetes是一个更高的层次。
在Kubernetes中,正如我所解释的,您有容器组(pods)和命名空间(namespaces)。我们所做的就是将所有内容配置到适当的容器组中。这些是右侧的容器和其他内容,这些内容要么在您的本地库中并经过严格控制,要么您愿意从NGC(NVIDIA GPU Cloud)获取最新版本,特别是如果您在进行高级或研究工作。
我们所做的就是将这些内容放入容器组中。您不再需要构建自己的Kubernetes集群;这一切都为您完成,并已启动。
我提到了向量数据库(Vector database)作为一个模型或存储私有数据的地方。我们将配置PostgreSQL或其他数据库,并在PostgreSQL之上添加PGVector层。PostgreSQL当然是一个关系型数据库,而PGVector允许将嵌入(embedding)和向量存储和检索到这个向量数据库中。
我们喜欢PostgreSQL,因为一些最初来自伯克利的开发者为我们工作,而且它已经存在很长时间了。它具有RBAC(基于角色的访问控制,Role-Based Access Control)、加密和适当的安全机制,我们可以在其上叠加其他功能,例如NSX,以保护这些私有数据。这是公司私有数据存储的地方。
现在让我们快速进行Kubernetes的演示。这将是一个简短的介绍,然后我们将进入GPU监控。
让我们首先看看一个应用程序。现在,这并不是世界上最激动人心的应用程序。这是一个聊天机器人应用程序,我将用它来说明一个观点。我们向聊天机器人提出一个问题,这个问题涉及某些专有软件。聊天机器人没有答案——模型没有答案。该问题直接转发给大型语言模型。
我们需要做的是将一些信息放入向量数据库。因为这涉及使用Retriever和其他组件,我对这个机制进行了隐藏,但简单地说,当我将一个文件拖入这个框中时,它会通过Retriever模型并加载到向量数据库中。这一切都是在后台完成的。这个过程可以每天、每小时或每分钟发生一次,以保持数据的最新。
所以,我们已经完成了数据的加载。现在,我们回去提出完全相同的问题。但这次,向量数据库处于激活状态,我们提交问题。知识库意味着:"请在回答我的问题之前,咨询向量数据库。"我们访问向量数据库,以查找里面是否有数据。确实有,因为我们已经将其放在那里。现在,我们得到了一个更好的答案。
我们利用了大型语言模型的总结能力,但实际上,大型语言模型对我们的私有企业数据仍然一无所知。我们可以将其离线,并通过提供该数据来微调模型,但实际上,向量数据库才是这里的主要真实来源。
所以,我正在配置一个Kubernetes集群。让我展示一下它是如何部署的。
这次我请求一个Kubernetes集群,模式是相同的,除了Kubernetes集群的控制平面与工作节点使用不同的虚拟机。工作节点是GPU运行的地方。这是一个虚拟GPU,因此它可以只是物理GPU的共享。如果它是物理GPU的共享,我可以将其vMotion(实时迁移)到另一个主机。
在这种情况下,我还需要密钥。在这里,我已定制我的自动化,以获取一个Hugging Face模型,而不仅仅是一个普通模型。所以,我提交这个请求,然后离开15到20分钟,在这段时间结束时,我将拥有一个完整加载聊天机器人应用程序及其所有所需容器的Kubernetes集群。
Ray Lucchesi:
这可能是一个可以按需扩展或缩减的系统,具备自动扩展功能,可以支持成千上万的用户,可能是千人、万、甚至一千万级别。
Justin Murray:
Kubernetes内置了自动扩展(auto-scaling)功能。我们在与Kubernetes的集成中充分利用了这一特性,我们会根据需要扩展节点以处理额外的流量,或在需要时缩减节点。百万用户的规模确实相当激进;我们会将其部署在一个特殊的环境中。但自动扩展功能确实存在。
Jay Cuthrell:
你之前提到的45个任务刚刚完成,这意味着你不需要手动去完成这45个任务,省去了不少麻烦。
Justin Murray:
没错。我没有手动构建Kubernetes集群,也没有手动获取容器。整个过程耗时14分钟,完全取决于我的存储速度和配置引擎的速度。
Justin Murray:
如果我们想深入了解这些步骤,我们可以逐一查看它们。这一点同样是可定制的,您可以看到为了准备这一切,后台进行了大量工作。
Ray Lucchesi:
在这种情况下,你仍然使用PostgreSQL吗?
Justin Murray:
是的,PostgreSQL已经为此配置好了。我们可以通过相同的自动化机制配置它,现在可以使用kubectl命令行工具登录,或者通过这个URL登录到应用程序。如果我在这里点击,就可以看到我们刚刚部署的应用程序,随时可以使用。我们可以为不同的测试团队成员运行任意数量的实例。因此,您所看到的就是单个深度学习虚拟机(Deep Learning VM)的自动化部署,或多节点Kubernetes集群的自动化部署,用于扩展和自动扩展,正如这位先生所描述的。
我们讨论了GPU的成本。我们确实想要密切关注我们的GPU使用情况,因此Operations(一个属于VMware Cloud Foundation工具组合中的工具)为此绘制了一个直观的图表。顺便说一下,我们将去掉红色,但这是关于我的GPU温度、内存使用情况和核心使用情况的热力图(heatmap)。在我们的第一次迭代中,红色意味着未充分利用;我们将更改这个颜色,因为运营人员希望永远不要看到红色。他们希望看到蓝色,表示未充分利用。
我们认为应该突出这里的优化机会:所有这些GPU都没有被充分利用。目前,您在容量规划上有足够的余地来部署更多的工作负载。我们有几个仪表板可以帮助我们深入了解哪个GPU存在问题。实际上,如果GPU的内存使用达到98%,我们希望知道这部分内存消耗了多长时间。大型语言模型(Large Language Models, LLMs)以消耗大量GPU内存而闻名,而它们的服务基础设施正在不断优化,以提高内存利用效率,使其能够适应更小的硬件配置。但目前,我们确实需要密切关注我们的GPU使用率,以及它们的温度情况。
最后要提到的是Model Gallery(模型库),这是全新的功能。它是我们VMware Private AI Foundation产品最新版本中的新特性。其理念是使用左侧矩形中的深度学习虚拟机来测试模型的准确性、偏差或适用性,以满足我的业务需求。这可以在一个被称为DMZ(隔离区)的安全区域内的深度学习虚拟机中完成。
当模型经过全面测试后,我们在内部进行评估。我们的数据科学家会测试他们能接触到的所有Hugging Face模型。当模型经过验证后,我们将其推送到一个库中,以便用于应用开发或投入生产。我们公司内部有一个用户界面,显示从模型1到n——你想用哪个模型来为你总结PDF文档?我昨天使用过,它在处理一份非常技术性的文档时表现出色。这是迈向MLOps(机器学习运维)、治理和控制的第一步,您将在未来看到更多相关功能。
Ray Lucchesi:
模型的MLOps(机器学习运维)配置控制包括什么?是否包括用于训练的数据、模型版本号以及类似的信息?这些内容与Harbor容器注册中心有什么关系?
Justin Murray:
我们这里提取的模型仅包含权重和一些相关的元数据。
Ray Lucchesi:
那么你不知道它是用什么数据训练的?也不知道用什么方法进行了微调?
Justin Murray:
我们可以找出这些信息,但它并不包含在模型交付包中。
Ray Lucchesi:
那么,构建模型卡(model card)或类似的文档呢?
Justin Murray:
目前还没有。我们期待Hugging Face提供模型卡,以全面描述其中的数据。这是一个我们会考虑在未来开发中加入的好主意,感谢你的建议。但目前,当你下载模型时,你实际上得到的是一个包含安全张量(safe tensors)和权重的文件——权重决定哪些张量是重要的,哪些不是。
如果你想要了解模型训练时的数据来源,那确实是一个有趣的建议。我会把这个建议反馈给我们的研发团队,看看是否可以实现。但从本质上讲,目前我们获取的就是权重,这些权重是从Hugging Face或其他地方提取的,在这里进行了企业所需的所有测试,然后在测试结束后推送到一个库中。
Justin Murray:
我建议你查看我们的VMware验证解决方案文档,这是我们的指导文件。在这里你可以找到有关这些内容的来源的一些信息。如果你愿意,我们也可以在私下讨论这一点。我们有几份关于Private AI的指南,甚至还有一份关于安全和RAG(检索增强生成,Retrieval-Augmented Generation)的文档。我们可以提供很多相关的信息。
Frederic Van Haren:
你刚才提到过控制不同版本并验证的技术栈,这为客户节省了很多时间。你们多久更新一次该技术栈?比如说,如果你看看生成式AI,NVIDIA推理微服务(NIM)每六个月发布一次新版本。那么你们的更新频率如何?
Justin Murray:
你说得完全正确,这个领域的技术变化速度非常快。我们每周甚至每天都会与NVIDIA沟通,了解他们在NIM版本、检索器(retriever)版本等方面的进展。这些内容在不断变化。我们会确定一个版本,并至少保持六个月的稳定性。没有什么可以阻止有适当权限的人说,"我需要升级这个"或"我需要更改自动化工具以使用最新版本。"你可以将其作为定制工作进行,但我们会在特定版本集上进行稳定化。例如,24x7是我们将为你构建到自动化工具中的当前NIM版本。
Frederic Van Haren:
所以,每六个月你们就有可能发布一个新版本。你们会支持一个版本多久?
Justin Murray:
我相信这个支持时间是以年为单位的。是的,我不太清楚确切的时间跨度。我不太确定具体的支持周期,但通常我们支持软件的时间是以年计算的。
Ray Lucchesi:
这不是新的VMware Private AI版本,而是新的NIM版本。
Justin Murray:
没错,是新的NIM版本。实际上,在公司内部,我们所有的开发人员都在协同工作,开发不同版本的NIM。
---【本文完】---
VMware内存分层技术:从NVMe分层到CXL加速器 Samsung与VMware合作案例:基于CXL的内存分层技术 不使用GPU的AI:VMware + Intel VMware公司AI解决方案深度解析(PPT)
更多交流,可加本人微信
(请附中文姓名/公司/关注领域)