从 HPC 到 AI:探索文件系统的发展及性能评估

随着 AI 技术的迅速发展,模型规模和复杂度以及待处理数据量都在急剧上升,这些趋势使得高性能计算(HPC)变得越来越必要。HPC 通过集成强大的计算资源,比如 GPU 和 CPU 集群,提供了处理和分析大规模数据所需的算力。

然而,这也带来了新的挑战,尤其是在存储系统方面,包括如何有效处理大量数据、确保数据访问的高效性以及如何控制成本和运维管理。分布式文件系统,作为一种高成本效益高的解决方案,正逐渐在 AI 和 HPC 场景中广泛应用。它们通过跨多个节点分布存储资源,有效地处理和管理大数据集,满足 HPC 对数据存取速度的高要求。

人民大学在人工智能和计算机科学领域进行了多项研究,其高性能计算中心为科研提供了强有力的支持,并在结合 HPC 与 AI 应用方面积累了一些的经验。本文将为大家介绍 HPC、大数据及 AI 应用的数据模式和特性;人大对几款主流分布式文件系统 Lustre、Alluxio 以及 JuiceFS 也做了初步性能测评,我们将分享这些测评结果,并介绍常用的性能评测工具,希望为选择 HPC 和 AI 存储解决方案的用户提供有价值的参考。

01 大规模数据应用场景:HPC vs 大数据 vs AI

高性能计算 (HPC)

高性能计算(HPC)在科学研究和工程应用中发挥着关键作用,诸如气候预测、蛋白质折叠以及计算流体力学等领域均依赖于其提供的计算能力。与机器学习和人工智能采用的方法不同,HPC 常基于模拟和科学公式推演来解决复杂问题。

在 HPC 中,任务可分为计算密集型和数据密集型。例如,天气预测既需要大量计算资源模拟天气变化,又需处理和分析庞大数据集。而如分子动力学模拟等计算密集型任务,则更侧重于计算处理,对数据依赖较少。

HPC Cluster Architecture

HPC 环境通常采用高带宽、低延迟的网络,如 InfiniBand,以支持快速数据传输。软件配置上,多节点间的高效数据通信依赖于如消息传递接口(MPI)这样的标准。

此外,GPU 的应用在 HPC 中也日益增多,加速各类计算任务。HPC 集群与传统数据中心相比,显著区别在于其网络配置和共享文件系统的使用,这些特点使得 HPC 能够有效处理计算密集型任务。

大数据

区别于 HPC,大数据应用在互联网公司的运用更为普遍,主要是因为这些公司可以持续收集庞大的用户数据量,如用户行为和上传内容等。这些通常是非结构化的数据,比如图片、音频和视频。

在这些公司中,大数据工程师常常负责 ETL 工作,即提取、转换和加载数据到数据仓库,在那里数据会被加工整理以供分析或机器学习使用。这与 HPC 的计算密集型任务不同,大数据应用更侧重于数据的处理和分析。

大数据分析架构

成本是大数据应用的一个重要考量,互联网公司倾向于使用性价比高的标准硬件和开源软件,以控制成本。例如,Hadoop 这样的开源软件因其强大的社区支持和成熟性而广受欢迎。互联网公司可以根据自身需求选择合适的软件解决方案,无论是采用开源版本以利用其优势,还是选择商业版本以获得更多支持。

AI

近年来,人工智能(AI)领域的发展已经广为人知,其工作负载主要包括训练和推理。特别是随着大型模型如 GPT 和 Bert 的出现,AI 对高性能计算(HPC)的依赖日益加深,这些复杂的模型迫切需要依靠强大的计算资源来缩短训练时间;同时,它们也带来了如何高效管理和分析海量数据的挑战。

AI pipeline

在这个背景下,文件系统面临特殊要求,尤其是处理众多小型的图片或视频文件时,这些文件通常只有几 KB 到几 MB 大小,对 IOPS 提出了高要求。

此外,在 AI 模型的训练过程中,还有一个显著特点,即同一份数据可能会被用于多种不同参数的调优。这意味着算法工程师会不断地对模型结构进行调整和优化,包括尝试不同的参数设置、修改网络架构,以及实验各种优化技巧。

因此,AI 模型训练不仅是一个计算密集型的任务,同时也是一个需要精细操作和细致调整的过程。这种对参数和模型结构不断调整的方法是实现高效、精准 AI 模型的关键。

正是基于这种背景,数据预处理在 AI 模型训练中显得尤为关键。举一个实际的例子,来自hugging face 子公司开发的大型模型展示了数据预处理的重要性。在处理大型模型的数据时,他们设定了一个较长的处理流程。从最初收集的原始外部网页数据开始经过多次预处理,如URL 过滤、去重等步骤,原始数据量被大幅压缩。

通过下图可以看到,每个步骤都在逐渐减少数据集的大小。经过一系列处理后,最终只有不到10% 的数据量适合用于训练大型语言模型(LLM)。因此,我们看到在大型模型的训练过程中,数据预处理占据了大量工作,包括清洗数据、提取 HTML 标签、过滤广告和文本识别等复杂任务。这些步骤虽然繁重,但对于保证数据质量和优化训练结果至关重要。

来源:https://arxiv.org/abs/2306.01116

02 AI 应用与分布式文件系统的演进

首先,让我们一同简单回顾文件系统的演变历程,其中每一个阶段的新兴需求都催生了新一代的文件系统。

  • Lustre 是最早期的文件系统之一,专为高性能计算(HPC)设计,由美国政府资助并由多个国家实验室共同开发,以支持科学研究。

  • 随后,Hadoop S3 等文件系统的出现主要是为了应对互联网数据量的爆炸性增长,与此同时,也出现了Ceph 等面向大数据处理的文件系统。这些系统旨在支持大数据应用。Alluxio 提供了一个内存缓存层。

  • AlexNet 神经网络等技术的发展进一步推动了文件系统的多样化。

  • 进入到 Kubernetes 时代,云原生数据管理和应用逐渐成为焦点,众多新兴的数据管理系统和应用如 JuiceFS 等都是为了适应这一环境而设计的。

主流文件系统发展历史

文件系统作为数据存储和访问的基础设施,对于 AI 模型的训练和推理过程有着直接的影响。将文件系统应用于 AI 场景时,往往面临这两个关键挑战。

  • 对 IOPS 的性能要求:首要挑战是处理包含大量小文件的数据集,如图片和视频,这对文件系统的IOPS提出了高要求。当前带宽通常足够,但文件系统的 IOPS 处理能力往往限制了性能。

  • 对兼容性的要求:AI 工作流程的复杂性和跨业务团队的协作要求文件系统必须具有高度的兼容性,以支持各种数据处理和模型训练工具,确保数据能够在团队间顺畅交换和处理。

为提高性能,一些解决方案采用了 SSD 或 NVMe 等高性能存储介质,并实施本地缓存策略。这里简单介绍一下学术界的一个常见概念:Burst Buffer ,主要指通过临时存储大量数据来缓解传统存储系统在处理高速数据流时的瓶颈。在这方面,不同的文件系统提供了各自独特的解决方案,会在下文逐一介绍。

同时,在解决兼容性问题时,提供 POSIX 接口确保了兼容性和可移植性,也能解决用户的学习成本。POSIX 指的是 Linux 操作系统一系列文件接口,可以支持 POSIX 的文件系统可以像操作本机一样操作分布式文件系统。但从开发的角度来看,实现 POSIX 兼容性可能增加了额外的开发成本和复杂性。而 HDFS 和 S3 这类产品则未采用 POSIX 完全的兼容性,简化了某些方面的实现,但它们也要求开发人员或用户适应新的操作模式,这可能涉及改变现有的使用习惯和学习新的工具。

POSIX 与 非 POSIX 文件系统优劣势对比

接下来将分别介绍几款适用于 AI 场景的文件系统,希望能够帮助用户更好地理解各个文件系统在 AI 应用的优势和局限。

Lustre

Lustre 在 HPC 场景中表现出色的原因在于,它从设计之初就是为了满足超级计算机的需求,特别是它对 POSIX 协议的支持以及使用 C 和 C++ 进行开发,这些特性使得 Lustre 非常适合于处理大规模并行计算任务。

Lustre 架构图

Lustre 的架构特别适用于典型的超算集群环境,其中包括使用 InfiniBand 网络进行高速数据传输。集群中包含了多个计算节点(Computation)和存储节点(Data Management),用于处理元数据的 Metadata server,而实际的数据则存储在对象存储(object storage)上。这种设计优化了对 MPI 应用的支持,特别是 MPI-IO,即多个进程同时对一个文件进行读写的能力,这对于并行计算和科学研究应用尤为重要。

虽然在 AI 和机器学习应用中,MPI-IO 的直接应用可能较少,主要因为这些应用的文件操作主要写入 checkpoint,而不涉及分布式进程的直接写入。然而,对于需要并行处理和复杂数据交互的科学计算应用,MPI-IO 这样的特点仍然极其重要。

在缓存方面,Lustre 文件系统近期提供了一个功能叫做 PCC(Lustre Persistent Cache on Client)。但实际操作中,它需要运维人员进行大量的配置。

Alluxio

我们尝试部署了Alluxio 作为数据缓存层。Alluxio 的设计理念主要是作为底层存储系统(例如 HDFS 或 S3 )之上的缓存,以此加速数据访问的速度,Alluxio 特别适用于大数据场景,如配合 Spark 等大数据处理系统使用。

在 AI 和机器学习应用场景下的测试表明,性能未达到预期。在 AI 场景中,特别是当首次请求包含大量小文件的数据集时,这一过程极为缓慢。以 ImageNet 数据集为例,我们注意到首次将数据加载到 Alluxio 可能需要几个小时,这对性能造成了严重影响。据最新消息,Alluxio 也针对这个问题做了优化,提供了专门为 AI 设计的存储方案,目前为商业版,没有开源。

Alluxio 架构图

JuiceFS

我们对 JuiceFS 社区版进行了初步的 POC 测试,尚未在在我们的生产系统中全面部署。

JuiceFS 是一款高性能的云原生分布式文件系统。它的设计目标是在云环境下提供高效的数据存储和访问能力。

在 JuiceFS 中,数据被分块存储在如 S3 等对象存储中;元数据则存储在如 Redis、MySQL 或 PostgreSQL 这样的数据库系统中。这种设计使得元数据管理既高效又灵活。客户端通过挂载 FUSE(Filesystem in Userspace)接口来访问 JuiceFS,这使得它能够在多种操作系统上无缝运行。同时,JuiceFS 还为用户提供了一个熟悉的文件系统接口 POSIX。另外,JuiceFS 的缓存功能可以直接支持 burst buffer。

JuiceFS 社区版架构图

从成本角度来看,JuiceFS 的运营成本远低于传统的磁盘阵列。这主要得益于其云原生的设计,能够有效利用云存储资源,减少物理硬件的依赖。

03 测评工具和 PoC 结果

在评估文件系统性能时,iozone, mdtest 和 fio 等 benchmark 工具被广泛用于测试 IOPS 和带宽。然而,标准的 benchmark 工具无法完整地反映真实业务场景下的需求和负载特性,为了得到更接近实际工作负载的性能评估,MLPerf 这样的工具被设计出来。

MLPerf 模拟了真实的 AI 工作负载进行评估,提供了一系列的测试。在计算机视觉领域,它可采用 ResNet 模型进行测试;而在文本处理领域,可能会使用 GPT-3 或 BERT 模型,并在维基百科或 C4 数据集上进行测试。

下面这张图表概述了在不同领域中 AI 性能基准测试的标准,包括视觉、语言处理和推荐系统等。它指定了每个测试所用的数据集,旨在达到的性能目标(如准确率、错误率等),以及各个测试的参考模型(如 ResNet、BERT、GPT-3等)。这为评估和比较 AI 模型的性能提供了一套统一的框架。

AI 基准测试和参考模型

PoC 结果

以下是我们的初步测试结果。我们使用 fio 进行了测试,比较了 Lustre 、JuiceFS 和 XFS。

  • 在 IOPS 和带宽读取性能上,配置了全 NVMe 闪存的 Lustre 表现出了非常高的性能。

  • 在 PyTorch 上运行 ImageNet 数据集的测试中,所有文件系统完成任务的时间都相近,JuiceFS + S3 和 xfs + local SSD 共享最低。

  • 在进行大型语言模型(LLM)的 checkpoint 测试时,Lustre + all flash 只用了1分钟,远快于 Lustre + HDD 的 10 分钟。

fio 基准测试:Lustre vs XFS vs JuiceFS 社区版

04 小结

本文分享了 HPC、大数据和 AI 等需要处理大规模数据的场景及其数据特性。介绍了适用于 AI 场景的常见文件系统及其优缺点,并展示了人大高性能计算中心的内部测试结果。

企业在选择文件系统时,不仅要参考 benchmark 结果,还需考虑实际业务需求和成本。对于运维能力有限的企业,像 Lustre 这样有着完善支持的文件系统更加合适。而有运维能力的公司可能会倾向于成本效益更高的开源解决方案。最终的选择需要综合考虑成本、运维能力和其他因素。

希望这篇内容能够对你有一些帮助,如果有其他疑问欢迎加入 JuiceFS 社区与大家共同交流。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LLM 加速技巧:Muti Query Attention

MQA 是 19 年提出的一种新的 Attention 机制,其能够在保证模型效果的同时加快 decoder 生成 token 的速度。在大语言模型时代被广泛使用,很多LLM都采用了MQA,如Falcon、PaLM、StarCoder等。 在介绍MQA 之前,我们先回顾一下传统的…

利用GPT开发应用001:GPT基础知识及LLM发展

文章目录 一、惊艳的GPT二、大语言模型LLMs三、自然语言处理NLP四、大语言模型LLM发展 一、惊艳的GPT 想象一下,您可以与计算机的交流速度与与朋友交流一样快。那会是什么样子?您可以创建哪些应用程序?这正是OpenAI正在助力构建的世界&#x…

Ethersacn的交易数据是什么样的(2)

分析 Raw Transanction RLP(Recursive Length Prefix)是一种以太坊中用于序列化数据的编码方式。它被用于将各种数据结构转换为二进制格式,以便在以太坊中传输和存储。RLP 是一种递归的编码方式,允许对复杂的数据结构进行编码。所…

word如何实现不同章节显示不同页眉

一、问题描述 写论文时遇到如下情形,第二章页眉跟第一章一样,如下图 二、解决方法 在第二章前一页空白处,选择依次布局→分隔符→下一页,如下图 双击第二章页眉,进入页眉编辑状态,点击链接到前一节按钮&a…

SOC设计:关于时钟门控的细节

有如下几个信号 输入信号 1、同步后的rstnsync_clk 2、时钟:clk 3、test_mode 4、软件控制信号:clk_sub_en 输出信号 1、clk_sub 功能:软件配置的使能信号clk_sub_en经过时钟clk 2拍同步处理后产生clk 域下的enable信号,然…

2024年腾讯云服务器99元一年,最新价格整理

腾讯云服务器99元一年是真的吗?真的,只是又降价了,现在只要61元一年,配置为2核2G3M轻量应用服务器,40GB SSD盘,腾讯云百科txybk.com分享腾讯云官方活动购买链接 https://curl.qcloud.com/oRMoSucP 活动打开…

Python编程实验六:面向对象应用

目录 一、实验目的与要求 二、实验内容 三、主要程序清单和程序运行结果 第1题 第2题 四、实验结果分析与体会 一、实验目的与要求 (1)通过本次实验,学生应掌握类的定义与对象的创建、类的继承与方法的覆盖; (2…

鸿道Intewell-Win_V2.1.3_kyland软件版本发布说明

一、软件发布版本信息 版本号:V2.1.3_kyland 版本发布类型:trail试用版本 二、版本特点 适配 E211-1370(J6412,8GB,256GB SSD)设备 三、运行环境推荐 Intewell developer可以运行在windows7及windows10 64位 四、支…

程序员书单推荐:从入门到精通的必读之作

在程序员的职业生涯中,阅读技术书籍是不断学习和提升自我的重要途径。本文将为你推荐一系列从入门到精通的程序员书单,帮助你系统地掌握编程知识、提高技能水平,并在职业生涯中取得更大的进步。 一、入门篇 《Head First C语言》&#xff1…

掌握流量主变现秘诀!视频号”今日话题”赛道,详解保姆式教学一体化实操玩法,助你轻松驾驭!

其实,这个领域的制作相当简单。 只需按照下面我提供的教程操作,基本上十分钟内就能完成一个视频。 掌握流量主变现秘诀!视频号”今日话题”赛道,详解保姆式教学一体化实操玩法,助你轻松驾驭! 就收益而言,…

何为时间复杂度和空间复杂度

时间复杂度和空间复杂度是用来评估算法性能的两个重要指标。 1. **时间复杂度**: - 时间复杂度描述了算法执行所需的时间量随输入数据规模的增加而增加的趋势。通常用大O符号(O)表示,表示算法的渐近上界。例如,O(n…

STM32(8)NVIC编程

中断源由部分片上外设产生 在misc.h中找,杂项 配置NVIC GPIO和AFIO不能产生中断源,但能通过EXTI,由EXTI产生中断源 NVIC不需要开启时钟,因为NVIC模块位于内核内部,芯片一上电就能工作。 中断响应函数 中断向量表在启…

rtthread stm32h743的使用(七)dac设备使用

我们要在rtthread studio 开发环境中建立stm32h743xih6芯片的工程。我们使用一块stm32h743及fpga的核心板完成相关实验,核心板如图: 1.我们还是先建立工程 2.生成工程后打开mx进行配置,时钟配置如前所讲,不在赘述 3.更改mx文件…

观其大略之HybridCLR学习笔记

问题背景 1 现有热更方案的开发效率、性能没有到达极限,还有提升的空间 2 ios多平台政策导致热更新受限问题,ios禁止jit。根据我查找的资料,ios的代码段启动的时候就确定了,不能增加新的代码段。IOS封了内存(或者堆&…

你不得不知道的Python AI库

Python是人工智能(AI)和机器学习(ML)领域中使用最广泛的编程语言之一,拥有丰富的库支持各种AI和ML任务。本文介绍一些经典的Python AI库。 1. NumPy 简介:NumPy(Numerical Python)…

开源工业软件:SCADA系统开源

PyScada是一个开源的scada系统 源代码地址 http://www.gitpp.com/huangtomy/pyscada-cn SCADA系统是Supervisory Control And Data Acquisition的缩写,即数据采集与监视控制系统。它是以计算机为基础的DCS与电力自动化监控系统,应用领域非常广&#x…

LeetCode.2917. 找出数组中的 K-or 值

题目 2917. 找出数组中的 K-or 值 分析 这道题其实是要我们求第i位二进制为1的元素个数至少为k,把符合条件的2^i全部加到一起。 因此,我们的思路就是枚举数组的每一位,并且进行以下两个步骤: 统计所有元素第i位1的个数cnt。…

哪个职业是科学育婴的好帮手?3月7日蚂蚁新村今日答案:育婴师

蚂蚁新村是一个虚拟社区。在这个虚拟社区中,用户可以参与各种活动,比如生产能量豆、做慈善捐赠等。同时,蚂蚁新村也提供了一些知识问答环节,用户在参与的过程中可以增进知识。这些问答内容往往涉及广泛的主题,如文化、…

Docker本地部署Redis容器结合内网穿透实现无公网ip远程连接

文章目录 前言1. 安装Docker步骤2. 使用docker拉取redis镜像3. 启动redis容器4. 本地连接测试4.1 安装redis图形化界面工具4.2 使用RDM连接测试 5. 公网远程访问本地redis5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 前言 本文主要介绍如何在Ub…

Vue项目实战--空间论坛(1)

环境准备 安装好node.js,Vue后 添加插件 router---路由,多页面的应用 vuex---在多个组件之间维护同一个数据 添加依赖 bootstrap---美工 popperjs/core vue项目介绍 views-----对应vue文件,页面 router-----路由,页面,c…