NetApp公司AI解决方案深度解析(PPT)
Source: Adam Tetelman, Dave Arnette, Max Amende, Mike Oglesby; NetApp Presents at AI Field Day 3; May 18, 2022
内容概要
数据量级与挑战:以汽车数据为例,每小时可产生TB级别数据。在数百万辆汽车的环境下,数据量将达到EB级别,引发监管和合规问题。供应商在开发模型以筛选有价值的数据时面临挑战,特别是在数据存储和管理方面。 关键挑战与解决方案:需全面关注性能和整个管理过程,而不仅仅是性能。企业成功进入AI领域的关键在于综合考虑这些因素,特别是在处理大规模数据时,需要解决数据存储和管理上的挑战。 AI专业人员的工作:AI或ML工作负载中,数据访问和可用性是常见挑战。合作公司在AI项目中常遇到复杂性和扩展问题。 NetApp技术工具的价值:NetApp的技术工具如快照、FlexClone和数据布局有助于克服数据引力等问题。 MLOps平台与工具发展:NetApp正在开发MLOps解决方案,使数据科学家能轻松克隆工作区,实现更高效的工作流程。NetApp DataOps Toolkit简化了数据科学家和工程师对NetApp存储能力的访问,包括创建工作区、训练深度神经网络、推理部署等功能,以及对大规模数据的支持。
AI模型开发挑战:专业基础设施开发、训练、验证费用高昂、复杂。客户在数据中心、外包IT等方面面临挑战。引入新硬件任务有挑战。 影子IT和合规问题:数据科学家使用云服务、供应商系统,可能产生“影子IT”。可能引发合规问题,IT和合规人员担心法律后果。 NVIDIA的解决方案:推出NVIDIA AI Ready Enterprise计划,使用GPU服务器在VMware基础设施上实现AI开发。目标是为客户提供AI开发的好处,无需大型硬件。 基础设施解决方案:包括ONTAP AI、NVIDIA DGX Foundry、NVIDIA AI Enterprise等方案。满足不同客户需求,从自助式参考架构到订阅服务。 SuperPOD和ONTAP AI的区别及性能平台选择:SuperPOD是超级计算机蓝图,ONTAP AI是小型集成方案。性能平台选择取决于客户需求和偏好,95%以上工作负载对性能差异无感知。
NVIDIA的两个项目(Base Commands和DGX Foundry)用于构建企业级AI平台。 在构建企业级AI平台时,挑战不仅包括选择技术栈,还涉及权限、数据治理、验证、法律等企业特定问题。Base Command作为软件层,通过云控制平面管理作业、集群和数据集,提供可视化监控。 Base Command支持多节点训练、超参数优化、Rapids等功能,与第三方工具兼容。提到了DGX Foundry作为托管的硬件解决方案,通过Base Command获得对Foundry的访问权限。
---【以下为正文】---
使用NetApp简化数据科学家的数据管理
我是Dave Arnette,担任NetApp公司人工智能解决方案团队的首席技术营销工程师,专注于人工智能、机器学习、深度学习,以及在一定程度上的高性能计算。让我给那些对NetApp不太熟悉的人提供一些背景。
NetApp在企业IT领域拥有多年经验,至今活跃于IT领域很多年了,并已扩展至人工智能领域。我们已发表数百篇论文,并拥有约30至40名专门从事工程、业务开发和销售的员工,专注于人工智能。他们为其他团队提供支持,并向客户传递相关信息。我们拥有超过300个客户,其中包括一些《财富》500强和《财富》100强的企业。因此,我们已在这个领域打拼了相当长的时间,见证了该领域的巨大增长。
说了这么多,我要开始了,让我们看一个例子,我们讨论的是人工智能,数据科学在这里非常重要,但数据的规模才是真正关键的因素。
这是一张非常有意思的图,我已经分享过几次,它完美地展现了数据的潜在规模。我们正在讨论的是行驶在道路上的汽车,它们每小时可以收集高达一TB的数据。想象一下,如果有数百甚至数百万辆汽车在道路上搜集数据,那会是怎样的场景。这可能听起来有点天方夜谭,但如果想想每个拥有特斯拉的人都会将数据发送回特斯拉,用于训练下一代模型,那么有上百万辆汽车在收集数据就并不那么难以置信了。
虽然实际的容量数字可能略高,每小时一TB可能是汽车最初收集的数据,但有意思的是,这是人工智能正在积极推动其自身发展的领域之一。这意味着所有从事自动驾驶车辆开发的供应商都在开发模型,以帮助他们筛选所有原始数据。这样,他们实际上不必保存所有数据,只需保存有价值、关键的部分。
最终,我们讨论的数据量级达到了EB级别,这意味着实际的原始数据量级变得非常庞大。由于我们所讨论的事物的性质,肯定存在一些监管合规性的问题。因此,很多这些数据将不得不保存的时间比以前更长,或者比其他类型的数据以前保存的时间更长。因此,数据存储和管理的挑战确实是在整个AI软件开发过程中需要解决的问题。
在接下来的一个半小时左右,我希望我们将向您展示我们的解决方案如何超越仅仅是原始性能数字。虽然这个领域有很多关于速度和数据的讨论,但说到底,这并不是全部。有一些最低的性能要求,有一些最基本的门槛。但是,整个过程中的其他方面以及整个事物的管理,确实在决定公司尝试走这条道路的成功或失败方面起到了决定性的作用。
大家好,我是Max Amende,目前在NetApp位于德国慕尼黑的办事处担任解决方案工程师和AI专业人员一职。
身为AI专业人员,我们在客户经理或解决方案工程师首次发现AI或ML工作负载时就立即介入。我们努力与数据科学家和数据工程师直接沟通,了解他们面临的挑战,以及NetApp如何协助他们进行AI旅程。从我之前作为数据科学家的经验来看,我深知数据科学的技术语言和IT基础设施的技术语言实际上是非常不同的。然而,理解这两种语言对于真正帮助数据科学家和数据工程师解决问题至关重要。
我们与众多公司合作,它们正处于AI发展的不同阶段,尽管面临各种挑战,但它们所遇到的问题大体相似。作为NetApp,我们或许有些偏见,但我们发现,在AI发展的初期阶段,数据访问和数据可用性常常是挑战所在。即便是最出色的数据科学家,如果没有正确的数据访问权限,也难以构建出卓越的模型。而在发展后期,我们经常面临与数据引力相关的挑战,尤其是当客户在公有云中训练模型或部署模型时,而数据却存储在本地系统上,这使得在云和本地系统之间移动数据变得相当困难。
另一个我们经常遇到的挑战是影子AI和影子IT。当我们作为解决方案专家介入时,我们首先尝试与客户的传统联络点交流,通常是更多的存储管理员或IT基础设施专家。当我们询问他们:“您公司的AI方面进展如何?您在AI旅程中处于哪个阶段?”时,我们通常会听到,是的,我们公司有一些人在进行一些有趣的项目,但我们与他们并没有真正联系。当我们与客户的数据科学家和数据工程师交流时,他们往往会听到相同的答案,即尽管我们有一个IT部门,但我们不太清楚我们在做什么,也不太清楚我们当前正在做什么。这真的很遗憾,因为在很多情况下,我们发现IT部门已经为数据科学家正在处理的挑战找到了解决方案,但在很多情况下,情况也非常复杂,我们经常看到AI部门在云旅程上的进展超过了IT部门。我认为如果双方能更好地协作,从早期阶段就能更好地作为团队合作,双方都将受益匪浅。
接下来,我想谈谈幻灯片上的两个问题:复杂性和扩展AI项目。通常,当我们看到客户开始进行AI项目时,他们会聘请一两名数据科学家或一些AI工作学生,并让他们访问我的工作站或在公有云中工作。然而,随着项目规模的扩大,参与的人越来越多,项目或完成的模型也越来越多,出现了更大的挑战。例如,在本地,当我们从Jupyter Notebook和JupyterLab转移到MLOps工具时,扩展通常不像我们预期的那样容易。在公有云中工作时,我们发现成本通常比最初预期的上升得更快。这些挑战如果在旅程的早期阶段出现并不是坏事,但如果在后期阶段出现,它们可能会变得非常困难且昂贵。
对公司来说,在早期阶段解决这些挑战非常重要。从我的欧洲,尤其是德国的角度来看,我认为大多数客户,如果我们看一下Gartner的AI成熟度模型和尺度,大多数都处于早期阶段,大多数是一级或二级,有些达到了三级。但当我与我的美国同事交流时,我意识到许多客户平均来说比我们德国的公司前进了半个阶段,我们在一起工作。我们问自己,我们如何帮助他们,如何帮助我们在德国的公司弥合这个差距,我们正在制定两种策略,第一种是与AI咨询公司合作,但我们也正在与一家名为Applied AI的AI加速器合作。他们声称是欧洲最大的AI加速器,是慕尼黑技术大学的一部分,与他们及其合作伙伴一起,我们可以帮助他们的客户和我们的客户真正解决我在前一张幻灯片中展示的那些挑战,以免陷入问题。
当我初次加入NetApp时,我刚刚从数据科学领域转岗,思维仍然深受浓厚的数据科学影响。了解到NetApp的技术在我担任数据科学家时可以极大地支持我的工作时,我感到非常惊讶。举例来说,对于很多数据科学家和我来说,数据版本控制一直是一个巨大的挑战,但通过使用快照,这个过程可以被真正简化。如果可以访问FlexClone或可写快照,数据克隆和数据复制也可以变得更加简便。
我对数据布局的理念深感喜爱,因为在我看来,这提供了对抗数据引力、克服数据引力的绝佳机会,通过使数据在边缘、核心和云之间的移动变得非常容易。然而,我不禁自问,如果这些工具如此出色,为什么更多的数据科学家实际上并未采用呢?我认为其中一个答案是,数据科学家的工作不应该成为IT基础设施专家。如果我们能够使他们通过一行代码在其工作环境中访问这些解决方案,而无需让他们成为存储专家,那岂不是更好吗?有了这个想法,我将话题转交给我的同事Mike Oglesby。
我是Mike Oglesby,NetApp的高级技术营销工程师,专注于MLOps解决方案和工具。正如Max所提到的,我将详细介绍我们正在开发的一些工具和能力,以便向全球的数据科学家和数据工程师展示。
我很喜欢这个引言,因为我觉得它真正概括了我们团队正在努力实现的目标。吴恩达(Andrew Ng)是深度学习领域的主要思想领袖之一,我相信大家都知道他。他提到ML模型代码仅占ML项目的5-10%。通过与客户合作,我发现这确实是事实。那么,如果ML模型代码只占项目的5-10%,那么剩下的90-95%是什么呢?Andrew将其称为“从POC到生产”的差距,基本上是模型本身之外的一切。
这涉及到获取数据,以便您可以使用数据训练模型,管理数据,以及所有基础设施。尽管我们都希望基础设施会消失,但它仍然存在,它必须运行,一切都必须在基础设施上运行。所以这基本上是让数据科学家能够做他们最擅长的事情的一切。
显然,我们在NetApp不会解决所有世界上的问题,但我们一直在努力利用一些我们的存储能力,以易于消费的格式呈现给数据科学家,以帮助弥合这个差距的一些方面,并帮助他们将他们的模型带入生产。这些能力是什么?
首先,我想从我们开发的一款工具开始,该工具将这些能力呈现给全球的数据科学家和数据工程师,然后我将介绍这些能力本身。
NetApp DataOps Toolkit 是什么?在我们谈论它能做什么之前,它只是一个Python模块,一个超级简单的Python模块。四五年前,当我们首次与数据科学家交谈时,我们发现虽然我们有很多在数据科学过程中填补差距的能力,但数据科学家习惯于在Jupyter Notebook中使用Python模块、Python库和Python代码。他们不习惯于存储管理的一切,而这些对他们来说太复杂和难以接近了。
因此,我们决定将这些能力包装在一个超级简单的Python模块中,旨在对数据科学家、开发人员、DevOps工程师和MLOps工程师友好,以便他们可以真正利用这些能力。就像任何其他Python模块一样,您可以使用pip安装它,它是免费且开源的。如果您已经有NetApp存储,您可以立即下载并安装它。我们有两种不同的版本,一种支持VM和裸机环境,我们称之为传统环境的NetApp DataOps Toolkit,另一种我们称之为针对Kubernetes的NetApp DataOps Toolkit,专为Kubernetes设计,并带有一些很酷的额外功能,利用Kubernetes API、调度程序以及Kubernetes带来的工作负载管理功能。
这就是我们正在尝试交给数据科学家手中的能力。我们的这些能力是用来帮助填补他们流程中的一些差距的。
首先,让我们谈谈关于工作区创建的能力。通常,当我们初次与数据科学团队交流时,我们发现他们通常在孤立的环境中工作,对于如何获取支持和利用强大资源缺乏了解。因此,他们被迫自行设置一切。
在他们的工作流程中,创建工作区经常是一个很大的瓶颈,即用于训练和验证模型的开发环境。我们看到许多手动配置和数据复制,这是一个令人讨厌的手动过程。对于一些大型数据集,可能需要数小时甚至数天。由于他们通常不使用企业级存储,因此缺乏数据保护,一旦发生故障,他们的工作可能会丢失。
通常,他们还面临着缺乏可追溯性的挑战,这是一个相当大的问题。实际上,对于数据科学家来说,从构思到创建可实现其构思的工作区是非常困难的。因此,在DataOps Toolkit中,我们构建了一种能力,即通过一个CLI命令或一个Python函数调用,几乎可以在瞬间创建一个由NetApp存储支持的工作区。
无论是工具包的VM或裸机版本,用户只需进行一个简单的函数调用,比如:“我需要一个500TB的工作区,用于存储我的数据和Jupyter Notebook等等。”几秒钟后,他们的机器上就会挂载一个500TB的NFS共享,位于他们指定的路径下,他们可以立即在其中开始工作。
如果他们使用Kubernetes,我们可以做一些更酷的事情。他们可以说:“给我一个800TB的JupyterLab工作区。”然后几秒钟后,他们会得到一个URL,可以用来打开他们的JupyterLab工作区。这个工作区由NetApp存储支持,但用户无需知道或关心这一点,他们只需知道他们需要一个800TB的JupyterLab工作区,而我们为他们提供了一个。几秒钟后,他们可以在Web浏览器中登录,导入所有数据,保存Notebook,然后开始工作。
我注意到您提到的工作流程与基础设施即代码工具(如Terraform和Ansible)有很多相似之处,您是否从中得到了灵感?
是的,实际上我的背景是在DevOps领域,我曾是一家金融服务公司应用开发团队的成员。因此,我在Kubernetes和Ansible自动化方面有很多工作经验。我们确实从那个领域汲取了许多灵感,并试图将它们与实际数据科学家的反馈结合起来,构建一个对他们来说简单易用的工具。尽管我们已经有了许多Ansible模块,可以轻松自动化NetApp的一些操作,但是数据科学家对Ansible并不熟悉,他们更习惯于使用Python代码而不是一大堆YAML和Ansible Playbooks。Ansible可能甚至超出了他们的专业领域,因此我们尝试应用相同的概念,以一种他们可以自助服务方式使用的格式呈现给他们。
我已经谈到了工作区的创建,但深度学习训练深度神经网络是一个极其迭代的过程。因此,这并非一劳永逸的事情。数据科学家不仅仅是获取一些数据并运行一次训练任务,然后完成,将模型部署到生产中。通常需要进行大量的实验和调整,他们会一次又一次地运行相同的训练任务,试图完善他们的模型。这通常涉及对某些内容进行修改,因此他们需要一个工作区,并且可能需要为特定实验制作一个副本,以便在保留原始数据的同时修改数据集、调整超参数等等。我们的客户告诉我们,根据他们的数据科学经验以及Max的经验,这是一个巨大的瓶颈,花费了大量时间,数据科学家会喝着咖啡,等待某个复制作业完成,而他们真的只是想继续进行他们的项目。
数据运维功能是否直接从Jupyter中调用,还是在Jupyter Notebook之外调用,或者两者都有?
是的,两者都有。DataOps Toolkit被打包为一个Python模块,具有CLI界面和一组Python函数库,可以导入到Jupyter Notebook或任何Python程序或工作流中。因此,如果数据科学家想要克隆他们的工作区,他们只需调用克隆工作区函数,例如指定新工作区的名称等。
他们知道如何将工具包调用与NetApp存储解决方案相关联吗,或者这种关联是如何工作的?
对于传统工具包,VM和裸机方面,它建立在我们的REST API之上,底层使用我们的Python SDK和REST API。但这些复杂的API调用被封装在一个简单的函数中。在Kubernetes方面,它建立在Astra Triton我们的CSI驱动之上。
嗯,同样的概念。那么,对于Jupyter的不同版本,比如JupyterLab和传统的Jupyter,您是否都提供支持?
是的,对于Kubernetes,我们支持JupyterLab。但是我们的Python函数库可以从任何基于Python的界面使用,因此可以是旧的Notebook界面,甚至可以是他们直接与数据科学家交流的Notebook电脑。
那么,DataOps Toolkit是否适用于所有类型的数据运维工作负载和问题?
是的,我们最初是为数据科学家开发的,但我们发现在更传统的开发团队和DevOps团队中也有一些客户开始使用它。与一些半导体行业的客户合作,他们使用它构建克隆工作负载,以便能够快速创建用于验证任务等的工作区。甚至在传统数据库领域,这个数据的整个概念也开始应用。因此,我们最初将其命名为NetApp Data Science Toolkit,后来更名为NetApp DataOps Toolkit,因为我们发现它在数据科学之外也引起了兴趣。
另一个问题是,我们刚刚听到了一个关于庞大数据量的演示,就像我们谈到的那样,这些数据量令人惊叹。但在这里,你谈到复制和移动等问题,但传统上,当我们处理的不仅是大数据或非常大数据,而是巨大的数据时,我们往往不会移动或复制它,因为它太大了。那么,对于您正在讨论的这个解决方案,数据规模的感觉是什么?
我们发现我们的客户通常分为两类广泛的类别。当我们与数据科学团队交流时,有更传统的HPC团队,他们拥有庞大的数据规模、大规模的集群、大型文件系统,他们倾向于不会太频繁地移动或复制数据。另外,还有更传统的企业客户,也许在四五年前之前他们并没有做很多数据科学,但他们开始实施一些深度神经网络、一些更先进的深度学习技术,与大规模的团队不同,他们通常使用较小的数据集,并进行大量的复制和迭代。工具包的克隆功能确实更适用于后者。我们发现这两者都欣赏快照功能,我稍后会详细介绍。
好的,这给我一个好的过渡,到目前为止我们一直在讨论开发和训练模型,那么还有数据科学的另一部分,一旦训练完模型,你必须实际部署它,以便它可以执行某些操作并提供实际价值。这就是推理的作用,你实际上使用模型来进行预测,无论是实时还是批处理。
在深度学习的早期,从拥有模型到部署它存在很大差距,你基本上必须为每个模型构建一个定制的Web服务器,并在前端构建自己的API,或者以一种自定义的方式将其集成到Web应用程序中。然而,现在出现了许多工具,使这变得更简单,我最喜欢的之一是NVIDIA合作伙伴的Triton推理服务器。
从我刚开始涉足这个领域到现在,有了Triton推理服务器,它已经取得了惊人的进展。基本上,如果你不熟悉它,它是一个预构建的Web服务器,带有预构建的API,你只需将你的模型放进去,支持所有标准框架,如TensorFlow、PyTorch等等,然后你可以调用这个API进行推理,你只需要开发模型和一个小的配置文件,然后将其放入其中。
但是,将其连接到存储上存在一些挑战,因为它需要存储作为模型仓库,如果你不在一个非常通用的超大规模环境中,那里需要一些自定义,我们发现很多客户,这有点像我们之前讨论过的其他问题,对他们来说有些陌生。因此,在DataOps Toolkit中,我们构建了一个非常简单的操作,使数据科学家或MLOps工程师只需一个函数调用或一个命令即可部署一个Triton推理服务器,并将其连接到一个Kubernetes持久卷,作为模型仓库。因此,他们只需将模型放入这个持久卷中,Triton推理服务器将自动捡起这些模型,他们可以立即开始调用API。
我了解到很多模型等都在使用Git或GitHub这样的解决方案来控制它们的源代码,我的意思是DataOps Toolkit是否与GitHub进行原生接口,或者是如何处理这个问题的?
不,没有原生接口,因此它更适用于开发环境。根据我的观察,客户通常会使用它来配置他们的开发环境或推理服务器,然后在该环境中,他们会从GitHub上下载一些东西,获取一些数据并运行他们的训练,可能将一些代码提交回GitHub。
这是一个很好的引子,让我转到下一张幻灯片,关于可追溯性(traceability)。
我们将快照ID保存在GitHub中,当他们提交代码时,以便从数据集到模型有完整的追溯。有时还涉及到一个模型存储库,所以代码进入GitHub,数据进入一个快照,模型进入一个模型存储库,有了快照ID,您可以从用于训练模型的实际数据集追溯到定义模型的代码,再到存储在模型库中的实际模型。我们有一个金融服务客户,最初与他们合作时告诉我们,我们有了所有这些好主意,训练了所有这些模型,但我们的合规团队不允许我们投入生产,因为我们没有考虑追溯性。我以这些人为例,但我们遇到过很多这样的客户,告诉我这个问题的客户数量超过两只手是不够的。当他们开始使用快照保存工作区的时间点副本,并使用快照ID实施GitHub代码和模型库的追溯性时,他们能够勾选合规框,并开始实际将模型投入生产。
通常情况下,有一个高性能训练层,我们建议客户为可追溯性保存快照,但您不希望这些快照填满高性能训练层,即昂贵而强大的存储。因此,我们有很多客户利用我们的冷数据层,关于这些冷数据层的能力我们可以进行一整个演示,所以我就不深入介绍了,但基本上他们将快照分层到归档对象存储层或归档文件存储层,这样他们就有一个前端接口,但不会在高性能环境中使用所有这些高性能存储,用于合规性的时间点备份副本。所有这些都由DataOps驱动,关于层的很酷的事情是,您只需设置一次,然后它就会自动发生。它是基于策略的,因此DataOps允许您创建快照,然后它会自动将其作为冷数据分层。
关于实际应用,对于可以迁移到冷数据而不保留在线的典型客户有多少数据,这方面的实际应用情况是多少?
是的,这是一个很好的问题。我知道有一些客户的数据集规模达到数百TB,他们正在管理这些数据集,Dave可能比我更适合回答这个问题,但我知道我们在谈论大量的数据。我正在与一个大型制药公司的客户合作,他们提到需要存储PB级的原始数据,通常每次进行训练作业时只使用其中的几百TB。因此,Fabric Pool层的分层意味着数据被摄入,写入高性能存储,然后基于年龄策略或其他条件将其迁移到冷数据层。如果有人调用数据,它将被提升回到加速层。他们对数百TB的数据进行快照,对可能包含数百TB数据的卷进行快照。请记住,NetApp的快照是完全节省空间的,除了任何更改之外。因此,如果我对一个500TB的卷进行快照,然后在该卷中写入500GB,我只会消耗额外的500GB容量。
另一个选择是FlexCache,这是反向的。我注意到你的一点,我认为对于FlexCache来说,这是自动的热数据分层。FlexCache的概念是,我们配置了一个非常大的硬盘集群,然后将一个远小于它的固态硬盘集群直接连接到训练系统。所有数据都进入一个标准的硬盘存储库,然后根据需要,用户要求时或事先,我们可以预先填充该缓存,以便当数据科学家准备执行特定的训练运行时,他们可以将可能是较冷的数据提升到性能层面。
在DataOps中,有一件事我听说很多人在考虑的是尝试保存与特定模型在某个时间点一致的数据集的副本,以便在需要时可以返回到该数据集,这是人们正在使用NetApp快照来实现的吗?
是的,这正是Mike所说的可追溯性评论的目的。
一旦知道了这一点(这也回答了一些最初的问题),DevOps的概念已经存在了很长时间,以及持续集成和持续部署的概念。
DataOps Toolkit建立在相同的原则基础上,其理念是这些工作流程具有相同的流程,他们是软件开发人员,他们正在开发软件,当他们认为已经完成时,他们对其运行一些自动化测试,如果测试通过,那么该模型将被移动到下一个阶段,可能会被部署等等。
DataOps Toolkit实际上使所有这些与更传统的软件开发相同的自动化成为可能,只是增加了数据元素,因此,与其只对实际代码存储库进行快照,我们可以同时对代码存储库和用于训练代码的数据进行快照,这对于可追溯性问题至关重要。
这种数据集到模型的追溯概念在我们的金融服务和医疗保健客户中非常受欢迎,尤其是因为涉及到合规性和监管合规性。我们与许多客户进行了很多对话,他们告诉我们他们陷入了科学项目阶段,他们在可追溯性方面遇到了很大的困扰,我们已经帮助其中一些客户克服了这个难关。
在这种情况下,模型、代码、数据等都会在单个NetApp卷或类似的存储中,他们将对其进行快照,然后可以对其进行标记并保留多长时间,尽管他们希望将其存档到S3对象存储中,或者进行其他与合规性相关的保护措施。
如果出现任何问题,比如“为什么这个模型进行了怪异的预测”,您可以检索精确的环境,类似于容器的一些方面,包括基础设施。在这两个行业中,我们发现客户确实在弥合这种差距方面得到了很大的帮助。
这只是一个快速演示,展示了如何使用DataOps Toolkit几乎瞬时克隆一个JupyterLab工作区。
让我们启动这个演示。基本上,假设我是一个数据科学家,在JupyterLab工作区中工作,我需要克隆它以进行实验。我可以进入我的终端,也可以使用Python函数调用完成这个操作。
我运行这个`list jupyterlabs`命令,找到我所在的工作区,然后运行`clone jupyterlab`命令。我指定源工作区名称和新工作区名称,按下Enter键,它会调用Kubernetes API,克隆卷并在其上启动新的JupyterLab工作区。
重要的是要知道,克隆是可重写结构,不同于只读的快照。克隆更适用于实验,因为你需要读写复制。克隆调用,克隆卷并在其上启动新的JupyterLab工作区。优点是,作为数据科学家,我甚至不需要真正知道NetApp卷是否涉及,我只知道我有这个两TB的工作区的精确副本。
我可以使用URL转到浏览器,获取工作区的精确副本。这使得克隆非常简单,数据科学家可以在JupyterLab工作区级别管理事务。
我有一个关于这个问题的问题,不看到抽象通常是好的,主要是因为我生活在Python中,我不需要关心基础设施,但我可能会弄巧成拙吗?
是的,这是一个很好的问题,因为给数据科学家提供访问权限有一些重要的先决条件。通常,我们的客户会设置一个沙盒环境,如果你熟悉NetApp,这将是一个SVM(存储虚拟机)。如果你对NetApp不太熟悉,重要的概念就是它是存储系统中的一个沙盒,你可以在其中设置一些限制并给予特定的访问权限。基本上,这是大多数客户所做的,他们为数据科学家提供一个具有一些限制的特定环境,供他们进行开发。因此,他们可以在其中进行任何操作,但与环境的其余部分是完全隔离的,他们不能影响其他人的工作。我们有一些客户会为数据科学家提供一个完整的专用集群,但这些更多是在他们的发展过程中更进一步、需要整个专用集群的更高级的客户。
关于其他类型的Notebook或支持,因为每个人都在构建下一个最好的Notebook,是否有支持?
是的,那个工作负载管理在抽象层面上,在Kubernetes上我们只支持Jupyter,但我们也有两个选项,你可以在那个级别或在NFS共享级别管理它。所以我们有一些客户使用像RStudio这样的工具,他们会说:“嘿,我要调用 `create volume` 而不是 `create workspace`,然后指定大小为500 TB的本地挂载点 `/home` 等等,他们会以这种方式进行管理。
谢谢,没问题。
我认为实际演示是有效的。对于实时演示,我希望你们能够想象我回到了数据科学。我们刚刚从老板那里交接了一个名为“mic”的数据集。我们的工作现在首先是清理数据,稍微分析数据,然后建立一个简单的模型。数据集我们将使用当前的NASA Tubfan聚合数据集,基本上在数据集中,你有许多不同的涡轮风扇引擎,就像在飞机上一样,你要尝试预测这些引擎在需要进行重大维护之前还有多少寿命。
一开始,我们将只是导入所有的库,向NetApp传统库和NVIDIA的QDF与QPI致敬,以及来自Rapids AI的Rapids,这样可以大大加速数据排序。接下来,我们将使用NetApp工具包来概述我们当前可以访问的卷,这里有一个名为“analytics_data”的卷,听起来不错,让我们看一下。我认为“engine_data”就是我们要找的,但作为数据科学家,你绝对不应该使用黄金样本进行工作,这也是Mike刚才说的,在我担任数据科学家的时候,我所做的就是复制我想处理的所有数据,这样我就不会意外地改变黄金样本。
但是通过FlexClone或Clone,这变得更容易和更快速,所以只需一行代码,我们就指定了如何重现它,应该被重现的位置,如果你愿意等几秒钟,我认为目前是12秒,是的,我在设置之前运行了它几次。是的,你完成了,你可以像它是完整的副本一样使用它,你可以对它进行所有的操作。
我的下一步我会很快地进行,我只是读入数据,进行一些数据分析,数据整理,对于这个演示来说没有什么有趣的地方,从数据分析的确切清理数据开始,它又变得有趣了。我完成数据清理的下一步是将数据保存到一个单独的地方,因此我想使用NetApp数据回路创建一个卷。我只需编写一行代码来创建卷,指定卷的名称、大小、挂载位置,然后完成。基本上,我可以保存数据到任何地方,但接下来我要做的是创建卷的快照。你可能已经看到我现在的思路了,作为一个数据科学家,在我的职业生涯中,我曾经发生过——是的,我不得不承认——我实际上清理了刚刚学到的数据集,作为一个数据科学家,如果你可能再也无法访问清理脚本,那真是糟糕的时候。但如果你刚刚创建了一个快照,一行代码就可以恢复快照,给它几秒钟,数据就回来了,没有糟糕的一天,你可以放心地保存你的晚上啤酒。
接下来,我只是要使用XGBoost创建一个简单的模型,等待几秒钟,一旦模型训练好了,我们现在有两种选择,我们可以使用NetApp DataOps Toolkit的新功能,直接部署模型到NVIDIA的推理服务器。但为了这个演示的简单性,接下来我们只是创建一个新的卷,将模型保存到卷中,这样我们的同事就可以访问它,并将其投入生产,
那么,结果是什么呢?我们还没有删除它们。
我们的均方根误差是9.5,
不,不,我敢打赌在一个典型的演示中,你会切换到一个仪表板,显示你现在有了什么,或者你做了什么。
不幸的是,这个演示没有性感的仪表板,只是把Notebook放在super.lab里。
这是一个简单的演示,你不必太担心。
但说实话,我真的很高兴它成功运行了。
我有一个问题,如果我漏掉了什么,请原谅。感觉上有一个Python API可以访问存储,所以作为一个数据科学家,我实际上还需要了解一些基础设施原语,像克隆和快照有什么区别,我是否可以在更高的抽象级别上进行工作,让基础设施团队处理那些策略等等,我只是说我想做这件事,你们负责底层怎么实现,对吗?
我们正在努力将这个提升到更高的水平,将其纳入一个MLOps平台中,我们与一些客户合作,他们构建了自己的定制内部MLOps平台,将这些能力整合进去。基本上,数据科学家在某个仪表板上点击克隆,点击我想要复制这个工作区,然后它在幕后执行克隆,并呈现给他们。所以我认为你的问题触及了我们的最终目标,我们仍在努力实现这一目标。
谈到NetApp数据回路如何帮助数据科学家和数据工程师的日常生活后,我想谈一谈我们在客户那里通常看到的架构,以及我们在客户那里喜欢推广的架构。通常情况下,数据首先存储在某种ONTAP的本地系统上,但在许多情况下,我们的客户希望在公有云中继续或开始他们的AI之旅,他们首次接触到选择的超大规模系统,超大规模系统建议他们使用其本地集成的AI工作环境,这可能是Google Vertex AI,可能是AWS SageMaker,但无论选择什么,我们通常看到这些集成工作环境对客户有两个不足之处。
首先,对于客户来说,将来切换到另一个工作环境,即另一个AI工作环境,可能会变得相当困难。其次,超大规模服务商倾向于建议我们的客户将数据上传到S3存储桶,如果数据不是过于敏感,这是完全可以接受的。但是,我们从客户那里得知,一些客户不愿意将高度敏感的数据上传到S3存储桶,或者许多客户不愿意这样做。
相反,我们建议他们使用一些在所有主要超大规模服务商上都可用的云上ONTAP。通过使用这些云上的ONTAP,您可以在任何时间安全地加密数据,并且还可以在本地ONTAP和云上ONTAP之间安全传输数据,以便您不会因为意外而丢失数据,也不会不小心给其他人(比如外部人员)访问数据。我个人非常喜欢推广的是在本地ONTAP和云上ONTAP之间部署NetApp Cloud Data Sense。它允许您在数据隐私问题上进行扫描,并检查其中是否有可能不希望在云中出现的数据部分,这可能涉及到宗教信仰等敏感信息。是的,您可能甚至在品牌上都不应该有这些数据,但是随着时间的推移,我们发现客户有时会无意中保留这些数据,我认为如果他们在传输数据之前能够扫描数据,这是对他们来说一个很好的安全点。
一旦数据在公有云中运行,我们的客户实际上可以选择MLOps工具,可以选择开源产品如Kubeflow,也可以选择我们的合作伙伴之一的MLOps工具,比如Domino Data Labs,或者AI或Iguazio。无论选择哪种产品,对他们来说都很容易切换到另一个超大规模,或者甚至切换回本地,因为多亏了最佳的ONTAP,将数据移动到需要的地方,以及在需要的时候,变得非常容易,实际上,我们从德国的AI加速器那里听到的是,他们真的很喜欢与我们合作,因为我们使数据在他们需要的地方为他们的客户移动变得如此容易,实际上,迈克有一个客户经验,我们在实践中使用了类似这个架构。
是的,这确实是一个在客户案例中可能不那么引人注目但在架构层面上却相当重要的例子。我们与一家客户的数据科学团队进行了对话。基本上,他们在亚马逊AWS的EC2实例上运行训练作业,但在数据共享方面遇到了问题,而且难以获得所需的性能。运行作业需要很长时间,他们支付了大量费用用于昂贵的基于GPU的EC2实例。因此,一个简单的解决方案是开始使用Amazon FSx for NetApp ONTAP作为共享的训练环境,这样他们可以在EC2实例上挂载它,从S3下载数据集,执行所需的任何操作,然后最大程度地利用GPU。由于他们需要共享访问,而使用EBS无法实现共享访问,因此这是一个简单的用例,实际上解决了他们面临的一些重大问题。
那么当我们已经在讨论云AI时,我想看看NetApp产品组合中的一个不同的部分,那就是Spot by NetApp。我认为你们现在都听说过Spot by NetApp可以提供或已经提供了许多不同的酷解决方案,以促进您的云之旅,并使您的云之旅更加高效和经济,但我特别想看看两个不同的Spot工具,我们喜欢向客户推广并在客户那里看到的可以使云AI之旅更好、更高效的工具。
首先,我想从Spot Ocean开始。Spot Ocean是我们的服务器无服务基础架构引擎,主要用于容器。基本上,它通过调整您的Pod和容器的大小、推荐您找到正确的实例类型,最重要的是帮助您使用最便宜的计算实例消耗选项,即众所周知的Spot实例。但大多数公司不希望将Spot实例用于面向客户的应用程序,因为它们可以随时被终止,但这正是Ocean的用武之地,因为Spot Ocean会自动重新调度您的容器到另一种实例消耗类型,以便您的客户永远不会感到中断。
您的一个Spot实例被终止。总体而言,综合利用这些服务,Spot Ocean可以在云计算成本上实现高达80%的节省。根据我们在AI客户那里的了解,他们在公有云中可以选择使用Ocean来运行推理,比如使用NVIDIA Stride推理服务器,并让Spot Ocean 管理部署,这样可以显著降低成本。
另外一个工具是Spot Ocean for Apache Spark,基本上是一个完全托管在公有云中运行的Apache Spark。它基于Spark on Kubernetes,并显然对Spark架构有全面了解。这使您能够轻松在公有云中部署Apache Spark,最重要的是,它使用与Ocean相同的引擎,并且成本相对较低,能够实现高达60%的运行Apache Spark在公有云中的成本节省。目前,Spot Ocean for Apache Spark仅适用于AWS,但对于GCP的支持即将推出。
使用NetApp和NVIDIA加速并整合AI/ML数据管道
我更专注于物理硬件、连接性以及资源的呈现,以便数据科学家能够充分发挥他们的才能。
在这里,我将在探讨技术细节之前,先谈谈为什么这是如此重要。我们在这个领域已经工作了多年,从客户那里学到了一些经验。
首先,AI模型的开发、训练和验证需要一些高度专业化的基础设施。它可以在CPU上完成,可以在任何地方的任何时候完成,但挑战在于完成所需的时间。有很多客户开始在CPU上启动他们的AI之旅,然后意识到这太慢了。我记得早期来自NVIDIA的一句我喜欢的话是,加速器使数据科学家能够在他的一生中看到他的终身工作完成,而不是像在过去50年里那样,这些技术一直存在,但发明这些技术的人从未看到它真正起作用,因为计算速度实在太慢了。
有了这种专门的基础设施,对于许多客户来说,这变得非常具有挑战性,因为他们正在减小其数据中心的占地面积,外包IT倡议和支持等。因此,不得不引入一些新的大型硬件实际上对许多客户来说非常具有挑战性。
正如Max所提到的,这本身实际上正在推动影子IT,数据科学家对等待IT人员提供可用的东西感到厌倦,他们付钱在云中获取一些计算资源,或者从走进门的任何供应商那里购买系统,说:“我们有这个很棒的东西”,而且对于那个人来说,也许在那一天它确实很棒,但随着业务的成熟和需求的增长,这些东西几乎从来没有奏效。
有一个原因是人们不喜欢影子IT,部分原因是合规性的问题。数据科学家可能并不真正关心他们的一些行为的法律后果,而他们的IT部门和企业合规官员则极其关心他们所做的事情。
另外,首次提出这个数字是从哪里来的,因为在任何业务中都有各种小项目或试点项目,实际上并不打算投入生产,而是作为一次性的事情。因此,得出这个53的数字并不容易。这个数字来自一项Gartner的调查,我并不是凭空捏造的,尽管Gartner或许是凭空捏造的,我不会否认这一事实,但我是从一个声称知道自己在说什么的人那里得知的。这个数字在不同的客户之间变化很大。
我们确实看到一些客户对于他们在这里做什么毫无头绪,他们在黑暗中摸索,他们找到了一个数据科学家,他向某人展示了一些很酷的东西,然后说:“好的,让我们做更多这样的事情。”但他们并不真正知道自己在做什么,也不知道如何将其投入使用。然后,我们有一些客户超越了这个数字,他们已经积极将成熟的项目投入生产。
那么,当你谈到AI系统时,你认为这是多大的问题呢?这实际上是NVIDIA提供的一个解决方案。要解决的挑战在于,专业化基础设施最终是昂贵且复杂的。IT部门正在失去技能,他们有VMware平台,他们知道如何运行VMware平台。目标是将其用于AI开发。
我提到你可以在CPU上进行AI,有很多客户正在使用VM进行AI,因为这是易于部署的。这个演进的下一步是在他们的VM中为这些人提供GPU。我将在接下来的几分钟里谈到的一个事项是NVIDIA AI Ready Enterprise计划,它基本上在VMware基础设施之上叠加了许多NVIDIA软件,使用具有GPU的服务器,真正允许您在不使用大型硬件的情况下实现所有功能性好处。也许你没有一个20个节点的DGX A100集群,但你有50或100台每台配有一个GPU的服务器,每个数据科学家都有自己的机器,你可以获得这些好处。通过在VMware环境中启用AI开发,可以获得许多好处,我稍后会详细介绍。这基本上涵盖了我想要介绍的内容。
至于挑战,正如我所提到的,问题不仅仅是拥有可以进行操作的机器,因为机器本身只是流程的一部分。还有一系列事情需要发生,有一系列的访问要求,用户在某些步骤中使用什么协议,还有其他一些基础设施解决方案。
有三个关键的基础设施解决方案我想在这里提及。其中之一是我们的ONTAP AI,这从一开始就是我们的旗舰产品,实际上有三种不同的版本。首先是自助式参考架构,也可作为现成的单SKU解决方案提供,您可以从合作伙伴供应商那里订购服务器、存储、网络和一些软件部分,构建一个完整的解决方案。此外,我们还有由NVIDIA与NetApp合作的DGX Foundry,Adam将在这里详细介绍,基本上是作为基于订阅的服务的架构,因此您无需购买任何东西,只需租用它并立即开始使用。可能您上周已经听说了我们的重大公告,即NetApp E-Series存储系统在SuperPOD平台上获得了认证。NVIDIA DGX SuperPOD是NVIDIA世界级超级计算的蓝图。
最后,我要提到的是NVIDIA AI Enterprise,接下来我会深入介绍一些细节。请看这张图片,它为我们呈现了整个开发选项范围的广阔前景。这个领域有许多正在进行的项目,不仅仅是收集数据和运行训练任务。这些数据来自各个地方,通常我们称之为边缘,比如无人机在空中飞行或自动驾驶汽车在路上收集数据。此外,边缘也可能是数据中心,从那里收集网站数据遥测,例如网站的点击率等。总之,无论数据来自哪里,都需要传输到其他地方,有时是在同一个数据中心,有时则不是。有趣的是,无人机可能在进行推理,这正是AI模型的目标:将它们部署在环境中,以与训练它们的方式进行交互。因此,推理通常发生在边缘,无论是用户在应用程序中与之交互,还是自动驾驶汽车与环境进行交互等。
不仅仅是收集进来的数据,这只是数据,而且现在你还在收集关于你的模型在真实世界中的表现的数据,你的模型有多准确,你看到了多少异常等等。这是一个复合问题,但最终涉及到摄取过程和分析过程,这可能发生在与该流程的任何其他部分不同的位置。数据工厂是“香肠制造”的地方,那里将原始数据转化为标记的并变成实际数据集。就像我说的,有很多不同的访问要求,有些是基于Web的应用程序,您甚至不需要任何东西,只需一个Web浏览器,而其他一些则是更直接的NFS或S3类型的,具体取决于它们是使用预构建的服务还是客户自己设计的。但由于数据工厂现在是所有数据的聚合点,所以在那里会发生很多其他事情,有其他类型的分析,可能有来自Kafka流或现有数据库的其他数据流,业务CRM数据库等等。
当然,Hadoop一直是许多分析领域的重要组成部分,但很多客户已经达到了Hadoop的能力极限,因此更倾向于使用像在Kubernetes上的Spark之类的东西。Max刚刚提到了Spark on Kubernetes中的Spot Ocean,几乎更有意义的是按需启动尽可能多的分析引擎,而不是维护一个包含5000台服务器的Hadoop集群并试图维护它。在这个数据工厂中,可能有很多正在进行的任务,可能是一个数据中心,也可能在国家或全球范围内的多个地点进行。
最后一步是模型的训练和验证。之前我们讨论了一些与HPC等相关的内容,这是这些领域开始融合的地方。有些客户正在大量投资这种硬件,不仅用于AI开发,还用于更传统的HPC仿真类型的工作负载。所有这些仍然可以反馈到数据的“循环圈”,你获得一些数据并构建一个模型,从那些数据中得到结果,这让你更了解如何做你想做的事情,从而让你收集更多的数据,帮助你构建更好的模型,帮助你收集更多的数据,帮助你构建更好的模型,以此类推。这个循环继续下去。
你刚才提到的SuperPOD是与系列相关的,对吧?有一个关于您的DataOps SDK是否实际与E系列和SolidFire产品线一起工作的问题,还是只能用于ONTAP?
DataOps Toolkit确实与BeeGFS一起工作,我稍后会详细说明C系列的问题。但归根结底,在那一点上不仅仅是存储系统,更多是文件系统。E系列,比如我们为SuperPOD提供了Kubernetes CSI驱动,我们可以使用DataOps Toolkit执行平台支持的一些操作。但是,E系列和VGFS不像ONTAP那样支持快照和克隆,因此我们无法直接实现其中的一些功能,但总体而言,你可以应用很多相同的概念。
那么SolidFire产品线呢?
我认为SolidFire产品线目前不受支持,对吧,Mike?好的。我认为我们实际上不再直接销售SolidFire了,尽管它是否基于我们的HCI解决方案?HCI已经停产,但我确信SolidFire仍然在销售给一些非常大的客户,有一些特定的客户可能仍在使用。我相信SolidFire目前不再普遍提供了,差不多是在HCI停产的同时,我们也停止了SolidFire的普遍提供。
好的,那么第一个是ONTAP AI,这是我开始的地方。我很好奇,在之前的NetApp Fabric中,你是否会讲述构成这个Fabric的所有产品,因为其中有很多元素与推断和自定义Kafka的语境相似,但Data Fabric究竟是什么?
所以Data Fabric是NetIQ几年前提出的一个概念,基本上是指我们拥有的所有不同存储产品之间的相互连接性。ONTAP产品有一些内建的复制功能,并且我们之前讨论的许多内容将依赖于SnapMirror来在异构或同构的ONTAP系统之间传输数据。
对于那些拥有异构系统的客户,甚至像E系列一样,如果我们想在E系列BeeGFS和ONTAP之间传输数据,我们有一些其他软件组件,比如Cloud Sync就是我们拥有的可以从任何源位置移动数据到任何其他源位置的产品,并且可以自动化。
我们还有另一种产品叫做XCP,目前主要用于NFS迁移和Hadoop迁移,但我们有一个支持更广泛的协议的路线图,其中一个重要的是S3,将很快与XCP一起推出,以便能够将所有这些环境联系在一起。
因此,我们有一些其他工具,用于在存储组件之间实际移动数据。有道理吗?
是的,有道理。那么Data Fabric更像是一个总称的营销术语,对吗?
是的,因为基本上有一套产品,实际上构成了这个概念,而这个概念的想法是,根据不同的客户需求和管道,数据可能来自不同的位置,因此对数据移动可能有不同的要求。Data Fabric为我们提供了一个框架,帮助我们根据需要在任何地方之间移动数据。
ONTAP AI只是一个参考架构,基本上所有主要的存储供应商都有一个与此相似的架构。我会说从实际的工作负载测试来看,它们的性能也完全相同,因为对于实际的机器学习工作负载,存储通常不是瓶颈。可能会有一些阶段需要更多的带宽,但这对整个训练工作负载的性能几乎没有影响。
这里的想法实际上是为客户提供一个经过预验证的解决方案,我们已经在实验室中构建了它,完成了所有的工程工作来识别任何问题,我们已经使用合成工作负载和像MLPerf这样的基准工作负载进行了测试,并为客户提供了关于大小和部署的具体指导。
我们有一份文档,提供了步骤性的命令行说明,说明如何部署和配置整个解决方案,但没有人想再这样做,因此我们还有Ansible自动化,可以在大约20分钟内部署整个系统。我在实验室中使用这个自动化,因为我定期拆除并重新构建这些系统,基本上我可以在大约30分钟内重新加载操作系统并运行整个堆栈。
这是SuperPOD吗,还是您自己带有DGX的版本?
这并非是SuperPOD,而是NVIDIA所谓的“规模化集群”,并非SuperPOD集群。我一会儿会稍微讲解为什么你可能想选择其中一个而不是另一个,但不,这不是SuperPOD,我一会儿会给你展示SuperPOD。
下一个迭代是ONTAP AI,正如我所说,是一个单SKU模型。因此,客户可以与他们的合作伙伴合作,他们甚至不需要成为DGX经销商。我认为只要他们是NetApp的经销商,任何销售NetApp的合作伙伴都可以销售这个ONTAP AI集成解决方案。这是因为所有的工程工作都已经完成,由分销商Arrow完成,在他们的集成设施中装配,安装所有软件,测试所有内容,然后他们拆开并将其运送到客户处,在客户现场运行验证测试,以确保其性能符合预期,然后交付给客户。
这有两个非常好的特性。首先,它是预构建的,你只需要说我想要三个DGXs和X容量的存储,我们可以提供一个配置,基本上作为一个单行项目。另一个很好的地方是整个堆栈的单一支持联系点。基本上只需一个电话给NVIDIA,我们已经在后台与NVIDIA达成了支持安排,以便NetApp在NVIDIA后台上支持这一点。但客户无需决定给谁打电话,他们给NVIDIA打电话,如果NVIDIA认为这是NetApp的问题,他们就会联系我们,我们一起解决。这是一个非常好的特性,这是许多客户面临的一个巨大挑战,即处理支持的影响。
我将非常简要地过一下,因为我将让Adam尽情享受DGX Foundry的一切,但正如我所说,这是一个基于订阅的服务,用于相同的东西。因此,客户无需考虑购买和支出资本费用,可以根据月度订阅的方式租用这个架构,并利用不仅是物理基础设施,还有NVIDIA为其内部开发团队完成的许多很酷的软件开发。
我即将分享一个关于Foundry的客户案例研究,这是我们与一个客户进行的概念验证之一。他们使用了一个由20个节点组成的DGX集群,目前仅与单个A800存储系统相连。因此,我们在这里取得了非常良好的比率,并且他们在运行的工作负载中未观察到任何性能问题,这与我之前提到的这些工作负载通常不受存储限制的观点一致。
根据实际工作负载和需求,没有固定的存储吞吐量要求。在大约两周的时间里,他们运行了700多个训练作业,使用系统约两周左右,总计记录了15,000小时的GPU时间,这是非常令人印象深刻的。所有这一切的目的是为了最大程度地利用这些资源。一旦客户上线,他们迅速获得了对如何使用系统的快速概述,几分钟内即可真正运行并开始训练模型等。这只是一个非常好的例子,现在Foundry正式上线,对所有客户都可用,但这是我们最初的概念验证之一。
关于SuperPOD,SuperPOD是一个完全不同的概念。SuperPOD体系结构基本上是NVIDIA设计的世界级超级计算机的蓝图。如果他们要设计最顶级的系统,当然他们已经这样做了。他们在内部构建了这些系统,SuperPOD就是他们用来实现这个目标的架构。然后,他们对其进行系统化和标准化,并提供给客户。目前只有几个被认证的存储供应商可以做到这一点,而NetApp现在是其中之一。我认为还有一个四分之一的供应商正在途中。
其目的实际上是构建和测试一个解决方案,能够扩展到最大规模。因此,一个完整规模的SuperPOD将包括140个DGX A100节点。目前与之配套的存储系统必须以一种能够与计算一起扩展到该节点的方式构建。我们开发了一个building block系统,稍后我会展示,允许存储与计算配置相匹配地扩展。SuperPOD也是由NVIDIA作为单个项目部署的,因此提供了部署和验证服务,以确保实际提供所需性能。
当然,整个系统得到NetApp和NVIDIA的共同支持。存储系统如前所述是EF600,这是一个高性能但功能较低的存储系统,主要用于HPC类型的工作负载。SuperPOD的配置基本上是通过创建building block来实现的,一个building block包括三个EF600与一对x86服务器结合,每个building block的读吞吐量约为60或70GB/s。可以根据需要扩展多个building block,以适应不同计算复杂度的要求。
SuperPOD当前定义为140个,但我知道可能有计划更改可扩展单元大小的,目前是20的8倍,即7个SU是目前SuperPOD的最大规模。SuperPOD基于一个可扩展单元,即20个DGX系统,因此所有SuperPOD基本上都是以20的倍数递增的。您可以从20个系统开始,然后将其扩展到七个可扩展单元,正如我所说,这与ONTAP AI的架构不同,ONTAP AI的数量是8,因为我们的测试显示,在机器学习工作负载上,一个HA对的最大限制是8个服务器。
对于SuperPOD,它是一个真正的并行文件系统,可以跨多个节点或存储设备进行扩展。因此,它的目的是真正扩展到更大的规模。building block是高可用性单元,因此两个服务器对于彼此是冗余的。两个服务器都运行BeeGFS存储服务。BeeGFS是由德国一家名为ThinkparQ的公司拥有和维护的,并且NetApp与ThinkparQ建立了非常牢固的关系,以至于我们现在可以在我们的价格手册上销售BeeGFS,并支持它。这两个服务器可以访问它们后面的所有存储。BeeGFS允许分发这些服务,因此如果需要更多的可用性或更多的性能,您实际上可以在多个building block之间镜像相同的数据,以扩展性能或可靠性。
有关SuperPOD的额外信息是,SuperPOD拥有独立的管理堆栈,因此目前尚未在这方面进行过集成。尽管如此,只要提供了相应的功能集,就有可能进行集成。由于BeeGFS的性质,存在一些功能差距。此外,我们还为SuperPOD提供了Ansible自动化,因此存储组件的部署非常迅速,它们已经通过自动化和验证流程。至于编排方面,许多客户在这种体系结构上使用Slurm,这是一种更传统的HPC批处理作业调度程序,但也有许多客户在考虑使用Kubernetes进行更现代的工作负载。因此,虽然有CSI驱动和数据操作工具包的一些兼容性,但由于平台不支持所有这些功能,因此它并非完整集成。
最后,值得指出的是,我们刚刚完成了对SuperPOD的所有认证,这是一个非常严格的测试过程。但这个配置可以在任何地方使用。许多客户可能并不需要一个完整规模的SuperPOD,但仍然喜欢并行文件系统等功能。当然,我们也有很多客户基本上购买了这个确切的配置,但用于非SuperPOD类型的部署。那么对您而言,哪种配置更合适呢?
我已经讨论了两个性能相当高的平台,这引发了一些关于哪个更合适的问题。我会说,对于99%的客户来说,这是个人偏好的问题,它们的性能足够好,对于95%以上的工作负载,您可能不会注意到性能方面的任何差异。我们与很多企业客户交谈,他们不太喜欢InfiniBand架构,他们对InfiniBand不太了解,这实际上不是企业数据中心的一部分。因此,他们真的喜欢一个解决方案的概念,该解决方案运行在他们已经熟悉和使用的协议上,例如NFS。另一方面,我们有一些客户,特别是在AI领域,他们来自HPC背景,他们对InfiniBand一无所知,因此我们有了SuperPOD和InfiniBand解决方案来满足这种个人偏好。
我要说的是,对于一些工作负载,比如真正的HPC模拟,例如石油和天然气以及基因组模拟,我们看到很多人更倾向于SuperPOD类型的配置。还有一些AI工作负载,例如大规模的自然语言处理和自然语言理解,这样庞大的集群访问数据的方式更适合并行文件系统,因为它能够更好地分发负载。
因此,这里有一些选择,NVIDIA在AI Ready平台上非常出色。您可能熟悉NVIDIA的NGC套件,这是所有预构建的容器模型软件工具包等的整个软件堆栈。AI Ready企业平台的整个思想就像我说的,我们接受具有现有VMware环境的客户,他们知道如何操作它们,知道如何优化它们,我们实际上只需要在其中放置一些GPU,他们就可以开始利用这个平台进行AI开发。NVIDIA使将以前只能在DGX上运行的所有其他软件堆栈轻松堆叠在任何具有GPU的虚拟机上变得非常容易,以便它可以使用户在更小的规模上使用。当然,这确实有助于这样一种思想,即有很多客户不想进行大规模投资,但想看看是否能从AI中获得一些好处,而AI Ready企业平台是一个很好的路线图来实现这一目标,它真的可以在不需要在基础架构上进行巨大投资的情况下启用所有这些软件功能。
Max稍微谈到了云AI,我只想指出一下,这是验证的一个例子,我们在所有主要的超大规模中提供基本相同的云服务,因此客户可以使用他们喜欢使用的任何计算资源,但仍然可以利用很多NetApp的功能。
还有一点我不知道是否有人熟悉GPUDirect Storage,我要指出的是,我们是唯一在两个平台上都支持它的供应商,我们的ONTAP系统支持它,E系列系统与BeeGFS一起也支持它。我们必须与ThinkparQ一起做一些开发工作,以确实将该代码纳入BeeGFS,但已经发布并且已经是GA。而在ONTAP上,我们可以通过RDMA上的NFS支持GDS,从ONTAP 9.10开始,我们还有一些即将推出的一些功能和增强的功能。
NVIDIA DGX Foundry:全球最具挑战性的AI企业的发展中心
大家好,我是NVIDIA产品架构师Adam Tetelman。
今天我将为大家介绍Base Commands和NVIDIA DGX Foundry,这是我们相对较新的两个项目,我们正在与DGX Foundry密切合作推向市场。因此,我将在最后提及这一点,但今天我要谈论的很多内容都基于Mike在MLOps层面上的讲解,以及我们与数据科学相关的Max所讨论的内容。
我还想更深入地谈一谈Dave刚刚提到的所有这些不同的技术栈。作为一名产品架构师,我与客户进行了很多互动,帮助他们构建许多定制解决方案,部署第三方软件或全栈解决方案。很多时候,这始于一个POC。你知道,我想建立Kubeflow,只是想看看它是如何工作的。但我发现很多人在实际构建不仅仅是POC而是希望拥有企业级AI堆栈时遇到了麻烦。因此,你可能会认为只需获取MLOps层,有我的存储解决方案,找到一些将它们连接起来的工具,就可以了。但事实并非如此简单,当你以为这很容易时,你就会遇到问题。
所以Base Command是NVIDIA为此提供的解决方案,作为一个平台。因此,我要稍微倒退一下,谈谈NVIDIA作为一个AI公司的情况。大多数人都知道NVIDIA制造GPU,大多数数据科学家知道NVIDIA制作SDK和平台。但我们在NVIDIA内部也构建了许多AI,我们有我们的消费品、企业产品,还有我们构建的自然语言处理模型。我们有超分辨率、去噪和样式转移模型,我们在公司内部使用或与一些合作伙伴合作构建。
我们已经经营多年,我们讨论的所有问题都是我们公司内部不得不解决的挑战,而我们通过努力解决了它们。这就是这个故事。因此,在不到十年前,我们启动了我们的第一台服务器DGX-1,然后不久后推出了SATURNV,将其宣布为我们的内部超级计算机,并成功使其成为Top 500系统之一。随着时间的推移,我们在内部探索了软件堆栈,犯过很多错误,吸取了宝贵的经验教训,并找到了扩展硬件和集群的方法,也找到了将软件与硬件接口连接的方法。
这是一个漫长的历程,我们曾尝试过OpenStack、Kubernetes、Slurm等,而在公司内部拥有几个不同的集群。然而,我们最终决定将一切集中起来,在公司内部建立了我们的AI卓越中心。我展示的所有产品都是我们在NVIDIA内部用于构建这一体系的产品。
那么SATURNV是什么?它是我们的内部AI超级计算机,拥有大量的节点,我们运行了数百万次的训练作业,每天有数千名数据科学家在这个平台上进行工作。我们的AI研究人员、实习生以及所有中间层次的人员都在使用这个平台,我们能够在同一个生态系统内支持各种类型的AI工作负载。
因此,我们发现它在内部非常有用。我知道在几年前刚加入时我对它感到非常兴奋,而现在我们正在将其外部化并作为一种产品提供。那么SATURNV是100个GPU吗?或者说它更大吗?
它是混合的,所以现在是100个,我认为有一份更详细的白皮书,但SATURNV不是一个单一的集群,更像是一个不断发展的集群,我们将新的硬件加入其中,随着时间的推移,这实际上是Foundry的一大优势,我们可以在其中放入新的东西,并在软件层面启用它,而不会对使用它的数据科学家产生影响。
在SATURNV上,你们有多少存储数据,以及是什么类型的存储,是E系列还是ONTAP?
对于SATURNV的具体情况,我不清楚,但我们可以分享有关DGX Foundry的详细信息。关于SATURNV的规格,它是我们内部的一个集群,所以我不能详细介绍,但我们使用了各种不同的技术。
你提到了两百万个AI训练作业,是在一个小时内还是在一年内?
我认为是在一年内,但根据你的操作而定。因为其中一些训练作业是超参数优化搜索,你启动了一百个作业,运行了30分钟,有的是运行两周的500节点大型NLP作业,用于训练一个庞大的模型。因此,这有点像虚荣指标。
那些运行数周的作业,您定期进行检查点,确保不会丢失数据?
是的。因此,在软件层面,这是一个非常重要的点。我们需要让数据科学家能够轻松地执行此操作,我认为回到我们之前提到的一点,他们不应该知道如何执行快照,他们不应该知道底层运行的是什么,这种详细信息的透明度需要对数据科学家透明,因为他们想要运行Python代码,他们想要编写一个TensorFlow检查点,他们不应该关心它在底层如何实现。
因此,当我回到围绕如何构建企业级AI平台的对话时,对于我的公司来说,训练和开发的最简单方式是什么。很多时候,我看到太多的客户从Kubeflow开始,他们认为我只是想做这个,但是当他们开始深入研究时,他们会遇到问题,比如Kubeflow可以给我一个Jupyter Notebook,可以做这个,但是当我开始深入其中时,很难做快照,或者我不知道存储是如何管理的,Kubernetes层下面是OpenShift,还是Rancher,还是Upstream,还是特定版本,还是走在前沿,这里有很多谈论的问题,因为这其中有利有弊。甚至在更底层,是选择带有ONTAP AI的DGX Pod,还是选择SuperPOD,还是介于两者之间。
这些都是基础,但当你真正进入企业层面时,你必须担心像谁有权访问这些数据、当我执行快照时,围绕这个的治理是怎样的,是否启用了单一登录,这些无聊的企业特性、验证和法律方面的事务,你进行POC的数据科学家可能没有考虑到,这些需要建立在你的平台中,否则你将无法推向市场。
另一方面,当你进入开发团队时,他们大多数时候不仅仅想要一个Jupyter Notebook,Kubeflow和Jupyter的基础很好,但最终他们会想要更多的高级功能,你需要将这些功能构建到平台中,例如超参数优化、扩展工作负载从一个GPU到多个节点、获取最新硬件等,你需要在这方面未雨绸缪,否则你的平台将停滞不前。这些都是非常普遍的问题,这里没有任何一点是NVIDIA或NetApp独有的,这只是构建企业级AI平台时需要牢记的问题。
这里提到的边缘的这些问题通常会被忽视,这就是NVIDIA Base Command平台的作用所在。这是我们的软件层,它有一个基于云的控制平面,你可以访问ngc.nvidia.com,那里有一个Base Command按钮,你可以提交作业,管理你的集群、管理你的数据集,并通过这个平台查看你环境中的所有运行情况。这是我们在NVIDIA内部使用的通用平台,我们有成千上万的用户使用它,它具备基础功能,并有所有这些附加功能。
我想深入了解一些这些功能,因为我认为从数据科学的角度来看,我更专注于数据科学,我认为我们做的一些事情非常酷,不仅是我们当前所做的事情,而且我们以多么快的速度为这个平台增加了新功能和新能力。我们谈到了一些HPC客户,他们想要Slurm和并行文件系统,我们可以通过类似于Slam和SRUN的东西启用这些客户,我们在这个平台上内置了兼容的CLI和接口来启用它们。我们稍微谈到了Rapids,所以我们有内置的Rapids容器等等,所以如果你是一个Rapids Workshop,如果你是一个TensorFlow或者PyTorch的用户,我们为所有这些不同的团队构建了经过验证的优化容器。
当你进行多节点训练时,我们为多个不同类型提供了开箱即用的支持,因此你不必配置MPI,也不必重新编写所有代码以使用我们特定的多节点启动器。我们力求支持各种多节点训练方式。当然,很多人可能有他们想要使用的第三方工具,我们允许使用这些工具,这里列出了一些合作伙伴。因此,这些都是基础,但重要的是,在构建企业AI平台时,你不仅仅在处理团队中的一个人,而是与跨足多个团队,甚至可能跨足多个组织的多个人打交道,因此存储和计算的支持至关重要,你还需要在团队所在的地方满足所有这些需求。
一旦你在团队所在的地方满足了他们已经在使用的工具,然后你可以开始构建。很多人使用内置在平台中的TensorBoard,我们还支持一些更高级的分析技术,包括使用存储系统的洞察和遥测。DGX Foundry是一个SaaS服务,任何人都可以使用,而Base Command则是Foundry的一部分,也是你管理Foundry的方式。但是作为一个AI空间的用户,我可以使用Base Command作为我的MLOps吗?
还没有,让我提前跳到幻灯片。我们当前所处的阶段有DGX Foundry,这是一种托管的硬件解决方案,还有SuperPOD,这是我们的参考架构。如果你想要访问Base Command,你可以在部署SuperPOD时购买它,因为你实际上是通过软件栈运行所有工作负载,或者你可以通过Base Command获取对Foundry的访问权限。我们希望未来能够使这更加可访问,但现在是这样的,你可以通过一个名为NVIDIA Launchpad的计划获得试用权限。如果你访问Launchpad网站,那里有一个试用链接,你可以注册并获得对软件的访问权限,看看它是如何运作的。
关于之前Maxine的解决方案、LSS等,它们是否在Foundry中可用,或者说是一些需要整合的解决方案?
是的,这是个好问题。我之前展示的产品实际上是一些产品,比如DEAL,那是我们实现超分辨率的方式,是一个消费者产品。而Maxine则更像是你可能会整合到四五个解决方案中的产品。但我们还有其他一些产品,比如TAU,它是我们的迁移学习计划等等,这些都正在被集成到平台中,因此它们可以在Foundry中使用。
是的,这些模型是内建的,同时还有一些容器,比如内建的Triton容器。在NVIDIA内部构建新平台的过程中,Foundry和Base Command的价值之一是,我们首先在我们的alpha集群中对这些新工具进行内部曝光,然后推送到Base Command,任何人都可以访问。因此,在硬件方面,Foundry是获取新硬件的最快方式,因为我们将其放在那里,以便在广泛推出之前就可以访问它。而在软件方面,Base Command则是获取所有新工具的最快方式。
在即将结束的数据科学功能方面,我们正在研究一些更先进的东西,例如如何构建易于使用的超参数优化、自动机器学习、使用TAU进行迁移学习,或者所有这些新平台。这些功能可能更容易实现垂直领域的特定任务,比如医疗保健。目前,许多这方面的内容已经通过容器提供,但一旦可用,就会显示在NGC和Base Command中。
在另一方面,可能是更乏味但可能更重要的一面是企业需求。我在谈论这些容器的同时,Foundry和Base Command背后进行了大量的安全性工作,对所有容器进行每月安全扫描。我们在容器注册表中的所有容器上都有警报、通知和更新,以便在出现漏洞等情况时进行处理,这对企业来说非常重要。此外,单一管理视图也非常重要,因此如果你有数千名用户、成千上万个作业同时运行,你需要能够查看不仅是哪个团队在做什么,谁在做什么,而且我的集群是否被高效利用,是否有很多处于空闲状态的作业未使用给定的存储、带宽或计算资源,是否有作业没有使用张量核心,是否有作业可能做得太多,是一个已经超出配额的团队,我需要与该团队进行沟通。这些都是一旦你建立了企业AI集群,就会开始处理的问题,如果你在开始时没有考虑到它们,有些问题可能会非常困难。
因此,Base Command提供了这方面的支持,并提供了许多可访问性功能。我们谈到了MLOps和流水线等,当然,您需要相应的功能来执行这些操作。对于那些专业的Linux用户,他们可能不愿意使用图形用户界面(GUI),因此我们为他们提供了命令行界面(CLI)和API进行消费。而对于那些可能位于相反阵营的人,他们可能不想使用CLI,希望通过GUI执行所有操作,因此我们提供了很大的灵活性。
从硬件角度来看,您也需要灵活性。如果您有一个小型工作负载只需要一个CPU,您可以使用它,而不是为每个任务使用整个GPU。当然,在Base Command和DGX Foundry中都提供了支持,NVIDIA可以作为一个中心人提供支持,NetApp在后台支持存储。作为Foundry客户,您可以在Launchpad尝试,如果要购买,可以选择SuperPOD,如果想要立即开始使用,可以选择Foundry。
那么,如何做出这个决定呢?David在他的幻灯片中提到了这个问题,关于我是想要DGX Pod还是SuperPOD,但有一些需要考虑的事项。您的公司是否拥有DevOps和MLOps能力?即使使用超级POD的参考架构,您仍然需要进行管理,您是否能够在内部搭建这样的系统?您需要它是为了一年、两年还是三个月?您需要多少资源,并且这应该是运营费用还是资本支出?随着我们谈论的数据量,这些数据如何快速进入和离开Foundry?这是一个真实的问题,我们正在进行大量的工作来改进它,目前来看,使用Foundry,它是基于用例的,如果您的用例符合我们现在Foundry提供的功能,您可以在几天或几周内开始,而不是几个月。如果不符合,我们可以通过部署SuperPOD将计算带到您的存储。
SuperPOD的美妙之处在于它是一个参考架构,所以不需要花费几年或几个月,只需几个月或几周即可部署,然后Foundry是在几天或几周内。因此,这真的取决于工作负载。
如果您没有需要直接流向系统以进行训练的PB级数据,那么DGX Foundry目前就是最快最简单的即插即用解决方案。它基于SuperPOD参考架构,因此您将在DGX Foundry环境中获得与SATURNV和SuperPOD相同水平的性能,提供全天候的支持、服务级别协议(SLAs)以及我之前提到的数据科学家会想要的所有功能。
那么它到底是什么?它是一个基于SuperPOD的体系结构,每个进入DGX Foundry的客户都有自己的专用存储网络、专用存储和专用计算,可以按月提供,从一个DGX开始,一直到20个DGX。关于位置的问题,Adam说,当前我们有硅谷和华盛顿DC的地理位置,我们计划在韩国、德国和台湾部署DGX Foundry环境,并且正在考虑扩展。因为这是一个巨大的问题,你的数据大部分需要符合多个不同的标准,需要留在原始国家。目前DGX Foundry的一个重要角色就是弄清楚这一点,并将集群部署在需要的地方。
如果您不符合这一点,也许Foundry就不适用,那么您可以选择SuperPOD架构。您可以对Foundry进行审查,这是其中一个卖点,如果您有一个SuperPOD,并且在短时间内需要更多的计算(数据允许的话),您可以扩展到Foundry。或者如果您不想承诺购买整个超级计算机,只想审核流程,您可以使用Foundry作为一个阶段来设置您的流程,同时部署SuperPOD。
这其中的美妙之处在于软件层是相同的。从您的数据科学家的角度来看,他们有一个下拉菜单,上面写着DGX Foundry环境一或SuperPOD环境一,但他们需要学习的所有其他工作流程都是相同的。
因此,所有硬件、地理位置、合规性、数据移动方式、数据传输方式等等,这些对于数据科学家来说都是透明的。这一切都由基础设施、托管服务和软件自动化来处理。
还有一件事我想提一下,然后我准备做一个快速演示。David对存储结构进行了很好的概述,我认为有一些关于140个节点的问题。这是SuperPOD架构,DGX Foundry基于此,这是计算结构。我们将计算结构和存储结构分开,使它们成为独立的。在这里,每个SU有20个节点,并与一个IB交换机连接,作为计算的脊柱交换机,然后有七个这样的SU从脊柱交换机连接到核心交换机,每个SU有20个节点。通过使用这种拓扑结构,我们能够在SU内获得一致的性能,并在使用此拓扑结构的各个SU之间获得近一致的性能。
目前,根据我们目前拥有的交换机,这是我们能够达到的最大规模。但我们一直在寻求扩大和增长,随着新的交换机设备、新的网络设备的引入,以及新一代系统的推出,Foundry将成为获取前沿技术的最快途径。
这将完全由GUI驱动。您可以在此创建一个工作空间,基本上有工作空间对象,可读写,然后有数据集,是只读的。我认为之前有这样一个问题,如何将这些从客户端抽象出来。我们有一个按钮,说“制作数据集”或“制作工作空间”,因此他们不需要知道NetApp下面的CSI实现是什么,因为整个Foundry都由NetApp提供支持,他们只需要看到只读。
当到达创建作业的阶段时,您需要指定所需的环境,是Foundry还是Launchpad,以及需要的计算资源。在这里,您可以看到我们有多个可用的数据集。因此,我们对谁可以访问此数据集进行了访问控制,可以是个人、团队、组织,或者是一些公共数据集。选择数据集后,可以查看一些元数据,并只需说明它在容器中的挂载位置。
同时,您需要指定结果,训练工作的结果最终会是只读的,这在平台内提供了对您的数据、所选容器的全面可追溯性,运行时环境、使用的代码、使用的数据集以及最终的结果,这都可以在平台内进行追溯,有点类似于Mike之前提到的。
---【本文完】---
近期受欢迎的文章:
更多交流,可添加本人微信
(请附姓名/关注领域)