首页 > 其他分享 >【转载】从 HPC 到 AI:探索文件系统的发展及性能评估

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

时间:2024-12-17 21:43:08浏览次数:7  
标签:AI Lustre 文件系统 HPC JuiceFS 数据

2024-03-06 鲁蔚征

随着 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 Cluster Architecture

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

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

大数据

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

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

大数据分析架构 大数据分析架构

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

AI

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

AI pipeline AI pipeline

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

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

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

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

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

来源:https://arxiv.org/abs/2306.01116 来源: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 文件系统优劣势对比 POSIX 与 非 POSIX 文件系统优劣势对比

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

Lustre

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

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 架构图 Alluxio 架构图

JuiceFS

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

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

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

JuiceFS 社区版架构图 JuiceFS 社区版架构图

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

03 测评工具和 PoC 结果

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

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

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

Area Benchmark Dataset Quality target Reference implementation model
Vision Image classification ImageNet 75.90% classification ResNet-50 v1.5
Vision Image segmentation (medical) KiTS19 0.908 Mean DICE score 3D U-Net
Vision Object detection (light weight) Open Images 34.0% mAP RetinaNet
Vision Object detection (heavy weight) COCO 0.377 Box min AP and 0.339 Mask min AP Mask R-CNN
Language Speech recognition LibriSpeech 0.058 Word Error Rate RNN-T
Language NLP Wikipedia 2020/01/01 0.72 Mask-LM accuracy BERT-large
Language LLM C4 2.69 log perplexity GPT3
Commerce Recommendation Criteo 4TB multi-hot 0.8032 AUC DLRM-dcnv2

PoC 结果

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

  • 在 IOPS 和带宽读取性能上,配置了全 NVMe 闪存的 Lustre 表现出了非常高的性能。
  • 在 PyTorch 上运行 ImageNet 数据集的测试中,所有文件系统完成任务的时间都相近,JuiceFS + S3 和 xfs + local SSD 共享最低。
  • 在进行大型语言模型(LLM)的 checkpoint 测试时,Lustre + all flash 只用了1分钟,远快于 Lustre + HDD 的 10 分钟。
Item Lustre + all flash Lustre + HDD JuiceFS + S3 XFS + local SSD
Fio IOPS READ 2,700k 20k 14k 40k
Fio BW READ 30 GB/s 12 GB/s 2.6 GB/s 0.9 GB/s
ImageNet PyTorch 1,600s 1,640s 1,570s 1,570s
LLM checkpoint (LLaMA 70B) 1 min 10 min

04 小结

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

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

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

视频回顾

<iframe allowfullscreen="true" border="0" frameborder="no" framespacing="0" scrolling="no" src="https://player.bilibili.com/player.html?aid=241979850&bvid=BV1ce41177Dt&cid=1422818313&p=1&autoplay=flase"> </iframe>

Author

鲁蔚征

中国人民大学校级高性能计算平台技术负责人

标签:AI,Lustre,文件系统,HPC,JuiceFS,数据
From: https://www.cnblogs.com/honghu0420/p/18613462

相关文章

  • DTS003: AI and Entrepreneurial Innovation
    ModulecodeandTitleDTS003:AIandEntrepreneurialInnovationSchoolTitleSchoolofAIandAdvanced ComputingAssignmentTitleIndividualCourseworkSubmission Deadline22December 2024, 00:00FinalWordCountN/ADTS0......
  • 【ECCV 2024】Face Adapter for Pre-Trained Diffusion Models with Fine-Grained ID
    【ECCV2024】FaceAdapterforPre-TrainedDiffusionModelswithFine-GrainedIDandAttributeControl一、前言文章核心观点AbstractIntroduction本文的具体方法实现过程?网络的输入输出,条件是什么?损失函数是怎么设计的?网络输入输出,条件损失函数详细介绍SpatialCo......
  • SimAI万卡集群模拟器,LLM大模型训练通信计算模拟
    SimAI,是阿里巴巴构建的一个统一的模拟器,旨在大规模精确有效地模拟LLM训练过程。通过将训练框架、内核计算和集体通信库有选择地高保真集成到仿真过程中,SimAI在仿真中实现了高精度。简单点来说,SimAI就是模拟,大模型在大规模集群上的训练过程视频分享在这:SimAI万卡集群模拟器,LL......
  • 不错的AI项目集合
    最近收集了一些不错的AI项目。AutoGPT:AutoGPT的愿景是让每个人都可以使用和构建无障碍AI。我们的使命是提供工具,以便您可以专注于重要的事情。StableDiffusionwebUI:图片生成工具,StableDiffusionwebUI。langchain:构建上下文感知推理应用程序,AI框架。AppFlowy:使用AI将......
  • 服务器raid5磁盘阵列硬盘报警离线损坏了两块怎么恢复数据?
    这台服务器是由四块2.5寸希捷1TBSAS盘组的RAID5阵列,硬盘型号是ST91000640SS,有两块盘损坏亮黄灯报警离线,其中0号盘是fail状态,三号盘是offline状态。经过检测,两块故障盘在数据恢复设备里可以直接读取,但都有大量坏块,我们先通过设备尽可能完整的把镜像做出来,然后跟其他两块好盘的镜像......
  • 掌握高效能计算(HPC):企业数字化转型的核心
    掌握高效能计算(HPC):企业数字化转型的核心引言在当今快速发展的科技时代,企业面临着前所未有的挑战和机遇。随着数据量的爆炸式增长、复杂业务需求的增加以及对实时分析能力的需求提升,企业需要寻求更高效、更智能的方式来处理这些挑战。其中,高效能计算(HighPerformanceComputing,......
  • 浅谈LangChain框架及其在大模型应用开发中的实践
    1.LangChain框架介绍思考:1)开发一个大模型应用,需要哪些能力?或者说需要解决哪些问题?2)大模型应用中,大模型承担了什么样的角色?1.1LangChain框架发展历程从功能发展上来看:LangChain第一个版本在2022年10月发布。提供了基础的提示词(Prompt)管理功能。将工具(Tool)与语言模型......
  • Linux系统中安装HDFS(Hadoop分布式文件系统)的详细步骤
    一、前提条件安装好Linux操作系统(如Ubuntu、CentOS等)。确保系统已经安装了Java运行环境(JDK),因为Hadoop是基于Java开发的。可以通过在终端输入java-version来检查是否安装了JDK。如果没有安装,需要先安装适合您系统的JDK版本,并配置好环境变量。二、下载Hadoop访问Hadoop官方......
  • Showrunner AI技术浅析(三):扩散模型
    1.扩散模型概述扩散模型是一种生成模型,通过逐步向数据添加噪声(正向过程)然后学习如何逆转这个过程(反向过程)来生成数据。其核心思想是通过迭代去噪过程,逐步生成高质量的数据样本。在Showrunner AI中,扩散模型用于生成与剧本一致的图像和动画帧,确保视觉效果与故事情节一致。2.......
  • CMake学习2024.12.9问AI的问题的记录
    vim如何将命令行窗口放入一个子页面中在Vim中将命令行窗口放入一个子页面(分割窗口)中,可以使用内置的终端功能。以下是具体步骤:##前提条件确保你使用的Vim版本支持终端功能。Vim8.0及以上版本和Neovim都支持内置终端。如果你使用的是较旧的Vim版本,建议升级或使用Ne......