GDS-enabled BeeGFS 人工智能并行存储解决方案

news2024/11/24 11:01:42

项目背景

HPC 和 AI 的融合正在颠覆一切。在这样的新时代,企业需要全新的存储解决方案,才能以高效且经济的方式从容应对来势汹汹的数据洪流。独立分析公司 Intersect360 开展的一项研究发现,多达 66% 的 HPC 用户目前已在执行机器学习计划。Hyperion Research 预测,按照当前的进程和速度,未来三年内公共部门组织和企业的 HPC 存储支出将比 HPC 计算支出的增长速度快 57%。日本的HPC业界更认为未来的HPC应用都是基于深度学习算法的。CPU+GPU异构计算成为当前超算中心建设的标准方案,GPU的功能显得愈发重要,不仅仅渲染显示,更有助于加速科学计算效率,尤其是随着深度学习算法融入传统HPC应用软件的工作流程中。

传统 HPC 群集新融合时代传统 AI 堆栈 (POD)
主要工作负载建模与仿真两者机器学习/深度学习
计算节点类型CPU 节点CPU + GPU节点GPU 节点
计算节点数量数百到数千数百到数千几个
典型互连InfiniBand两者千兆以太网
主要输入/输出模式写入密集型两者读取密集型
存储容量计量单位PBPBTB
单一命名空间中的存储可扩展性最多 EB 级容量高至 EB 级容量低至几十 PB
典型存储基于 HDD 的并行文件系统存储Cray ClusterStor E1000 (Lustre)HPC并行文件系统存储全闪存企业的 NAS 存储
存储的用途以每秒高达 TB 的速度按顺序处理大文件以每秒高达 TB 的速度按顺序和随机顺序提供规模不一的文件以每秒高达几十 GB 的速度按顺序和随机顺序提供规模不一的文件
每 TB 价格$$$$$$$$

可视化是分析大量科学模拟数据的有效方式,科学可视化是将数值计算数据以图像形式显示来观察科学现象的过程。常用的科学可视化工具包括:

  • 体渲染。例如,医学设备MRI、CT得到的序列2D图像合成3D渲染效果图。
  • 面渲染。例如,蛋白质分子结构,需要在3D结构上计算出等值面。

科学可视化常用工具包括:

  • Paraview

Paraview是一个开源的,跨平台的数据处理和可视化程序,使用分布式的内存计算资源,能够实现对非常大的数据集的分析与处理。可以处理数十亿个非结构化单元格和超过1万亿个结构化单元格。ParaView的并行框架已经在超过10万个处理核心上运行。

  • Visualization Toolkit (VTK)

VTK提供了基本的可视化和渲染算法,如渲染、并行处理、文件I/O和并行渲染,用于三维计算机图形学、图像处理和可视化。支持并行处理(VTK曾用于处理大小近乎1个Petabyte的数据集,其平台为美国Los Alamos国家实验室所有的具1024个处理器的超算集群)的图形应用函式库。2005年时曾被美国陆军研究实验室用于即时模拟俄罗斯制反导弹战车ZSU23-4受到平面波攻击的情形。

  • VisIt

VisIt是一种免费、开放源代码、跨平台、分布式、并行的可视化工具,用于可视化在二维和三维结构化和非结构化网格上定义的数据。VisIt的分布式体系结构使其可以利用超算平台进行计算和本地计算机进行绘图。支持PB级数据的可视化。

在模拟数据的规模急剧增加的情况下,一次性加载到内存供GPU显示变得异常困难。当大规模数据集要加载到内存来可视化时,GPU训练性能会急剧下降。NVIDIA GPUDirect Storage® (GDS) 提供了一种以持续IO、低时延的性能从分布式存储系统直接读取数据到GPU显存中的方案,DGX SuperPOD 使能GDS的应用直接读取到GPU显存的带宽可以达到 20 GBps。

解决方案总体介绍

  • GDS加速数据读取技术原理

GDS 重点在于优化数据在 GPU 卡和存储系统之间的搬运效率,使用 RDMA 技术来减少时间延迟和 CPU 消耗。 传统架构上,RDMA IO 主要使用在存储系统和CPU主存之间,但是,这对于GPU的计算效率不高,主要在于需要从CPU RAM 复制到 GPU RAM中,多走了一步。GDS 使用相同的 GPUDirect RDMA 技术允许远端存储系统数据直接搬运到GPU RAM上。如下图所示, 通过在VFS层嵌入内核模块 nvidia-fs.ko 和 nvidia.ko 来管理GPU 内存地址和CPU RAM及GPU RAM的IO操作,这扩展到了PCI总线允许数据在GPU和网卡之间搬运,元数据仍然存储在CPU RAM,而数据块则允许直接读取到GPU RAM。

 

  • 开源并行文件系统BeeGFS已支持GDS特性

BeeGFS 服务端和客户端均已支持GDS特性,满足了AI和HPC工作负载同时应用的场景。BeeGFS 跟其他文件系统类似,通过Linux VFS提供抽象层给上层应用提供标准接口。因此,VFS 收到数据 I/O 读写请求都会调用 BeeGFS I/O函数。

GDS-enabled BeeGFS 驱动模块 nvidia-fs 会主动区别传统 POSIX I/O 请求. 尽管BeeGFS支持通过RDMA传递数据,但是这两者之间的缓存传输机制大不相同。传统的 POSIX I/O 源自用户空间,通常由非 RDMA 感知的应用程序发出。因此,需要将保存要传输的数据的pages复制到内核空间缓冲区中,然后可以通过 RDMA 发送将其发送到存储服务器。如果用户空间应用程序想要从 BeeGFS 读取数据并在 GPU 上处理它,则需要将数据从内核空间中的 RDMA 缓冲区复制到用户空间缓冲区,然后需要再次复制到 GPU 内存。

另一方面,对于GDS,我们希望存储服务器能够直接读取或写入GPU内存中的缓冲区,该缓冲区通过网络接口上的DMA引擎开放。为了实现这一点,BeeGFS向客户端和服务器端代码添加了 RDMA 读写功能。现在可以使用客户端到服务器消息设置 RDMA 传输,该消息包含存储服务器要访问的内存区域的地址和密钥等必要信息。设置完成后,存储服务器可以读取和写入这些内存区域,而无需在 BeeGFS 客户端任何CPU参与。由于公开的缓冲区位于 GPU 内存中,因此在 GPU 上运行的应用程序可以在传输数据之前或之后立即访问数据。客户端不需要任何副本。

另一个重要先决条件,在 BeeGFS 中使用 GDS 实现最佳性能需要支持multirail网络。这意味着现在可以将 BeeGFS 客户端配置为在同一网络上使用多个支持 RDMA 的网络接口,并可以根据可用接口及活动状态的连接数自动平衡这些接口之间的流量。multirail的核心功能独立于GDS和nvidia-fs,因此即使不使用GDS也可以收益于multirail网络。启用GDS后,BeeGFS客户端可以调用nvidia-fs中的函数,以确定哪个网络设备将为特定GPU提供最快的路径,同时考虑到节点中的PCIe拓扑。

解决方案优势

GDS supported BeeGFS 实施部署参考:https://doc.beegfs.io/latest/advanced_topics/gds_support.html

本文的基准测试结果是使用两个 NVIDIA DGX A100 系统收集的,这些系统使用 NVIDIA Quantum 200Gb/s InfiniBand 交换机连接到单个 BeeGFS 集群中。在此构建块中,两台2U 服务器用于运行在 Linux HA 中配置的 BeeGFS 管理、元数据和存储服务,磁盘阵列 NetApp EF600 存储系统提供块存储。

我们关注GDS提供的相对性能提升,并没有试图展示一些性能提升是因为部署了大型BeeGFS文件系统或使用了许多GPU服务器。另外,此配置也没有利用 BeeGFS 中新的 multirail 网络,这将通过只部署一个来简化将所需的 IPoIB 子网数量。以下测试数据显示各种 GPU 计数和 I/O 大小的读取性能,没有 GDS(蓝条)和 GDS(橙色条):

GDS-enabled BeeGFS POC测试数据

原文链接:https://www.beegfs.io/c/beegfs-now-supports-nvidia-magnum-io-gpu/

常规HPC项目中基于BeeGFS并行存储系统项目建设参考架构与性能评估

根据 P5600 NVMe SSDs 技术指标,单块硬盘可以提供 1.7 GB/s 带宽,40块硬盘聚合带宽可以达到理论峰值 68GB/s,通过实际测试顺序写带宽达到 62GB/s,即理论数值的 92%。以下测试结果来自2U服务器配置2路HDR网络聚合带宽下的POC测试数据:

总结

无论作为普通HPC集群的并行文件系统,还是融合AI的存储系统,BeeGFS都表现出了极佳的性能优势。此外,极简的部署方案获得了广泛用户量,这体现在IO500列表里面。借助 NVIDIA GPU 渲染、模拟和加速技术,科学计算更加趋于可交互模式,例如,气候模拟本质上会产生大量的 3D 数据,但分析通常受限于 2D 预测。借助 NVIDIA Omniverse,大规模科学数据能够与电影级渲染功能融合,从而实现复杂气候现象的交互式探索。大规模科学数据的显示也离不开先进并行文件系统的支持,GDS-enabled BeeGFS恰恰解决了AI和HPC融合计算趋势下对科学计算和科学可视化共存所遇到的难题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1163173.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

写一个方法实现数组元素每两个元素加一个换行,并进行文件导出

文章目录 需求分析 需求 源数据&#xff1a; 输出的数据如下&#xff1a; 分析 我们可以手写一个方法&#xff0c;方法如下&#xff1a; transformArray(arr) {var result ;for (var i 0; i < arr.length; i 2) {result arr[i] , arr[i 1];if (i 2 < arr.le…

【Kubernetes】初识k8s--扫盲阶段

文章目录 1、k8s概述2、为什么要有k8s2.1 回顾以往的应用部署方式2.2 容器具有的优势 3、k8s能带来什么 1、k8s概述 kubernetes是一个可移植、可扩展的开源平台&#xff0c;用于管理 容器化 的工作负载和服务&#xff0c;可促进申明式配置和自动化。kubernetes拥有一个庞大且快…

AutoSAR的UB位

AutoSAR的UB位 作用 在AUTOSAR&#xff08;汽车开放系统架构&#xff09;中&#xff0c;UB位&#xff08;Update Bit&#xff09;起着非常关键的作用。它主要用于指示某个信号或信号组的数据是否已被更新。以下是UB位的几个主要功能和应用情景&#xff1a; 信号更新指示&…

怎样去除视频中的杂音,保留人声部分?

怎样去除视频中的杂音&#xff0c;保留人声部分&#xff1f;这个简单嘛&#xff01;两种办法可以搞定&#xff1a;一是进行音频降噪&#xff0c;把无用的杂音消除掉&#xff1b;二是提取人声&#xff0c;将要保留的人声片段提取出来。 这就将两种实用的办公都分享出来&#xf…

DA变换高精度PWM脉宽调制信号转模拟信号隔离变送器100Hz/5KHz/10KHz转4-20mA/0-10V/0-20mA

主要特性: >>精度等级&#xff1a;0.1级。产品出厂前已检验校正&#xff0c;用户可以直接使用 >>辅助电源&#xff1a;8-32V 宽范围供电 >>PWM脉宽调制信号输入: 1Hz~10KHz >>输出标准信号&#xff1a;0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等&…

electron 开发轻量级本地数据存储桌面端应用(简洁版)

背景 接了一个项目需要开发一个功能简单的桌面端应用&#xff0c;主要包含的功能有 内置数据&#xff0c;本地化操作数据&#xff0c;对数据进行CRUD操作。 效果展示如下&#xff1a; 技术选型&#xff1a; 开发桌面端有如下几种技术方案&#xff1a;** Electron&#xff1…

【UE5 C++】C++代码调用蓝图方法或事件

此方法为&#xff1a;先创建C类MyTest&#xff0c;再以MyTest类为父类创建蓝图&#xff1b;在其他类中&#xff0c;可以通过MyTest调用蓝图对应方法。 1.创建c代码 通过UE创建继承自Actor的C代码 2.添加可以在UE中重写方法的说明 需使用声明&#xff1a;UFUNCTION(Bluepr…

【JavaWeb篇】HTTP请求构造方式

✅作者简介&#xff1a;大家好&#xff0c;我是小杨 &#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; HTTP请求构造方式 1&#xff0c;通过form表单构造 form 表单是HTML中的一个常用标签&#xff0…

【深度学习】pytorch——线性回归

笔记为自我总结整理的学习笔记&#xff0c;若有错误欢迎指出哟~ 深度学习专栏链接&#xff1a; http://t.csdnimg.cn/dscW7 pytorch——线性回归 线性回归简介公式说明完整代码代码解释 线性回归简介 线性回归是一种用于建立特征和目标变量之间线性关系的统计学习方法。它假设…

GoLong的学习之路(十七)基础工具之GORM(操作数据库)(更新)

书接上回&#xff0c;上回写道&#xff0c;GORM的查询和创建&#xff08;插入数据&#xff09;&#xff0c;这回继续些增删改查的改和删的操作。 文章目录 更新update修改单个列修改多个列修改选定字段批量更新新阻止全局更新 使用 SQL 表达式更新注意 根据子查询进行更新不使用…

Modbus转Profinet网关与流量变送器兼容转ModbusTCP协议博图配置案例

首先&#xff0c;我们需要明确电磁流量计的通信协议是Modbus&#xff0c;而西门子1200PLC的通信协议是Profinet。这两种协议在功能和特性上存在一定的差异&#xff0c;因此需要使用兴达易控Modbus转Profinet网关设备进行转换。兴达易控的XD-MDPN100是Profinet转ModbusTCP的网关…

功率放大器的种类和作用是什么

功率放大器是一种电子设备&#xff0c;用于将输入信号的功率增加到更高的水平&#xff0c;以驱动负载或输出设备。功率放大器广泛应用于各种领域&#xff0c;包括通信、音频、无线电频谱分析、激光器和雷达等。 根据应用需求和工作原理不同&#xff0c;功率放大器可分为几种不同…

笔记:IDEA如何修改代码后,不重启服务器局部更新资源

前言 平常用IDEA开发网页写调样式和测功能最讨厌改一丁点东西就要重启整个服务器&#xff0c;所以本文主要就是解决此问题从而提高开发效率&#xff0c;避免浪费过多时间。 具体步骤 1、打开设置框 2、先新增exploded结尾的&#xff0c;并apply应用&#xff0c;把没有结尾的…

【Kubernetes部署】二进制部署单Master Kurbernetes集群 超详细

二进制部署K8s 一、基本架构和系统初始化操作1.1 基本架构1.2 系统初始化操作 二、部署etcd集群2.1 证书签发Step1 下载证书制作工具Step2 创建k8s工作目录Step3 编写脚本并添加执行权限Step4 生成CA证书、etcd 服务器证书以及私钥 2.2 启动etcd服务Step1 上传并解压代码包Step…

云尘-Node1 js代码

继续做题 拿到就是基本扫一下 nmap -sP 172.25.0.0/24 nmap -sV -sS -p- -v 172.25.0.13 然后顺便fscan扫一下咯 nmap: fscan: 还以为直接getshell了 老演员了 其实只是302跳转 所以我们无视 只有一个站 直接看就行了 扫出来了两个目录 但是没办法 都是要跳转 说明还是需要…

轻松搭建Nextcloud私有云盘并实现远程访问【内网穿透】

文章目录 摘要1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 摘要 Nextcloud,它是ownCloud的一个分支,是一个文件共享服…

opencv第一个例子

目的 这是用用QTopencv实现的一个完整的展示图片的例子&#xff0c;包括了项目的配置文件&#xff0c;完整的代码&#xff0c;以用做初次学习opencv用。 代码 工程文件&#xff1a; QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsTARGET openCv1 TEMPL…

双路比例阀放大器

双路比例阀放大器是一种常见的电子设备&#xff0c;它能够将输入信号放大到所需的水平&#xff0c;并输出两个相等或不同的放大信号。这种放大器通常由一个放大器和一个驱动电路组成&#xff0c;可以用于各种应用中&#xff0c;如液压控制、气动控制等。 在液压控制方面&#…

物联网系统的基本构件

1.基本组件 云服务器 数据库消息服务器应用服务器管理平台 云APP 云服务器的维护终端微信客户端网页管理平台 页面式的更全面的管理。组态软件和PLC软件 编程软件终端设备 PLC 主要指标&#xff0c;模拟数字接口数量 DO有 继电器和1.5,2.5.5V数字输出一般支持扩展IO模块模拟量…

利用win32的GetLastInputInfo函数实现锁屏(C#)

前两天看到群里面讨论这个问题&#xff0c;刚好我们上一家公司的系统也有这个功能&#xff0c;就研究了一下&#xff0c;我们这边实现这个功能的目的如下&#xff1a;当用户长时间不操作系统时&#xff0c;自动退出系统并退回到登录界面&#xff0c;想要使用系统&#xff0c;就…