当前位置: 首页 > news >正文

Alluxio 联手 Solidigm 推出针对 AI 工作负载的高级缓存解决方案

作者:Wayne Gao, Yi Wang, Jie Chen, Sarika Mehta

Alluxio 作为全球领先的 AI 缓存解决方案供应商, 提供针对 GPU 驱动 AI 负载的高速缓存。其可扩展架构支持数万个节点,能显著降低存储带宽的消耗。Alluxio 在解决 AI 存储挑战方面的前沿技术在很大程度上推动了大语言模型( LLM )在全球范围内的成功。

“Solidigm 和 Alluxio 联合推出了高效的分布式 AI 缓存方案。通过将 Solidigm 的 D5-P5336 用作读缓存,D7-PS1010 用于 checkpoint 写入,并搭配 Alluxio 的低操作开销解决方案,我们帮助客户实现了大规模 AI 场景下成本和性能的最佳平衡。优化后的方案充分利用了Solidigm D7-PS1010 Gen5 TLC SSD 的写入带宽和 D5-P5336 Gen4 QLC SSD 的读取带宽,同时将 TLC 和 QLC SSD 的写放大系数保持在 1.02。我们希望与 Alluxio 一道持续为客户提供高效、低成本的AI 解决方案。” - Greg Matson,Solidigm 战略规划与营销高级副总裁。

Alluxio DORA 缓存架构的核心优势

在这里插入图片描述

DORA(Decentralized Object Repository Architecture 的缩写 )是 Alluxio 的新一代架构。

作为分布式缓存存储系统,DORA 具有低延迟、高吞吐量和节省成本的特点,同时旨在为 AI 工作负载提供高性能的数据访问层。

DORA 利用去中心化存储和元数据管理来提供更高的性能和可用性,以及可插拔的数据安全和治理,从而提高大规模数据访问的可扩展性和管理效率。

DORA 的架构目标:

  • 可扩展性:可扩展性是 DORA 的首要目标,旨在支持数百亿个文件,从而满足数据密集型应用(如 AI训练)的需求。
  • 高可用性:DORA的架构设计考虑了高可用性,具有99.99%的正常运行时间,并可以防止在 master 出现单点故障。
  • 性能:性能是 DORA的核心目标,它优先考虑模型训练、模型服务的速度,以及用于 AI 工作负载的GPU 利用率。

DORA 架构包含四个重要组件:服务注册( service registry )、调度器( scheduler )、客户端( client )和 worker。这些组件共同管理服务发现、分布式负载调度和数据存储等任务,同时维持整个系统的最佳性能。

NVMe 存储相关技术亮点

1. 页数据存储能够利用 SSD 的最大性能,并保持最佳的写放大系数(WAF)和耐用性

DORA 使用经严格测试的页存储模块进行缓存存储,从而可以更精细地缓存大文件上的小至中等规模的读取请求。这种可靠的页存储技术已在 Meta、Uber 和 TikTok 等应用中得到验证。DORA 的细粒度缓存使得读放大情况降低到原先的1/150,并使得文件随机读性能提高了 15 倍。

页数据存储通过日志文件系统,将数据分成两级目录,包含固定大小的大文件块。所有写操作都附加到这些文件块中,而当其中的对象文件被标记为删除时,只有在不需要这些文件时才会删除。这种设计确保了即使在使用 PCIe 5.0 TLC SSD 时也能实现最佳性能, 同时也保持 SSD 的写放大系数(WAF)为 1,从而最大限度提高 SSD 的耐用性。

例如, 当使用 QLC SSD 进行 Alluxio 读缓存时,存储引擎会充分利用 QLC 的耐用性,不会导致任何内部写放大或垃圾回收写放大,从而确保 QLC NVMe SSD 的高效运行。
在这里插入图片描述

2. 去中心化的元数据存储

DORA 将元数据传递给每个 worker,确保元数据始终可访问且可用。为了优化元数据访问,DORA 对元数据条目使用两级缓存系统。第一级缓存是内存缓存,它将元数据条目存储在内存中。此缓存具有可配置的最大容量和有效时间 ( TTL ) 设置,可设置过期时限。第二级缓存是持久化缓存,通过RocksDB 将元数据条目存储在磁盘上。持久化缓存具有无限容量,具体取决于可用磁盘空间,并且还使用基于 TTL 的缓存驱逐策略,防止主动同步或主动失效。存储的元数据类似页存储,也是基于完整的 UFS 路径的哈希值来确定分发到哪个 Dora Worker。

内存和持久化缓存的组合有助于确保元数据能够随时可用且可访问,同时还可以高效利用系统资源。元数据的去中心化避免了在元数据主要由 master 节点来管理的架构中可能出现的瓶颈。由于每个 DORA worker 节点可存储多达 3000 万至 5000 万个文件, 整个系统便可以支持拥有数百亿文件的大规模数据密集型应用。

经 Solidigm 验证, 内存元数据设计与 RocksDB 的组合提供了最佳的元数据存储解决方案。该设计充分利用了 PCIe 4.0 QLC SSD ( 读取 7GB/s,写入 3GB/s )和 PCIe 5.0 TLC SSD( 读写均为 14.5GB/s )的读写性能。此外,RocksDB 通过跳表( skiplist-based ) 写缓存将许多小的写入合并为较大的2MB 顺序写,这种方式极其高效,有助于将 SSD 写放大系数(WAF)最小化,进一步提升 SSD 的耐用性。

性能测试::Alluxio 搭配 Solidigm™ 的 D7-PS1010 和 D5-P5336

测试配置

在这里插入图片描述
在最近一项实验中( Solidigm D7-PS1010 和 D5-P5336 SSD,搭配 Intel Gen5 BNC 存储服务器 ),Alluxio 展现其在数据快速摄取以及读性能方面的优势,特别是在 GPU 扩容的情况下。部署 Alluxio 后取得的显著成效:

  • 缓存加载效率: Alluxio 缓存引擎在写入 PCIe 5.0 TLC SSD 时,能够有效跑满 UFS QLC 存储的最大读取带宽。
  • Fuse 读取测试: Alluxio 的 FUSE 框架几乎跑满单个 PCIe 5.0 SSD 的读取带宽,显示处理 NVMe SSD缓存命中时的开销极低。

为了能够快速部署,我们设置了一个单节点测试来展示 Alluxio 存储引擎的强大性能。Alluxio 的最大优势在于能够利用主机侧的分布式复制缓存,可随着 GPU 扩展并显著降低南北向存储带宽开销。即使在单节点配置下,Alluxio 也表现出超高的效率,尤其是在搭配高性能 NVMe SSD 时。在此次测试中,我们将缓存配置为使用 PCIe 5.0 TLC 或 PCIe 4.0 QLC,而底层文件存储( UFS )使用了 PCIe 4.0 QLC。
在这里插入图片描述

重要结论

  1. Alluxio 的缓存加载引擎十分高效,能够跑满 UFS QLC 的最大读取带宽,并将数据摄入到 PCIe 5.0 TLC 缓存 SSD中。即使 UFS 支持 10GB/s 的读取带宽,Alluxio 也能轻松地跑满 Solidigm D7-PS1010 9.3GB/s的写入带宽。
  2. Alluxio 的页缓存存储引擎基于 XFS 日志文件系统,并使用 Solidigm Alluxio FIO仿真器进行了严格的使用寿命测试。测试结果表明,无论使用 TLC 还是 QLC SSD,Alluxio 都能实现 1.02 的写放大(WAF )。这种接近理想的 WAF=1的效果能让 SSD 的性能和耐用性最大化,为终端用户提供最佳性能。
    在这里插入图片描述

重要结论

FUSE 的读开销极小。当执行 FUSE 读取,在 SSD 缓存上 100%缓存命中并且绕过 DRAM 页缓存时,FUSE 框架几乎可以跑满单个 PCIe 5.0 SSD 的读带宽,速度达到 14.8 GB/s。
在这里插入图片描述
对于寻求高效缓存方案的客户来说,Solidigm 的 61.44TB QLC 是理想选择。Alluxio 的存储引擎对于写放大十分友好,作为以读取为主的缓存,其写入量极少,使得 QLC 完美适配其读缓存路径。鉴于 Alluxio 的高效设计,我们可以根据 213 PB 的顺序写总量 (PBW)来估算 QLC 缓存设备的耐用性,这也意味着 Solidigm 支持写入高达 213PB 的数据。即使在 5 年周期内以 50% 的使用率(已是较高的阈值)计算,QLC 仍能支持 2900 MB/s 的写带宽,几乎达到其最大值。此外,QLC 每块 SSD 可提供高达 6GB/s 的随机读带宽,实现高性价比的 Alluxio AI 缓存系统。

Solidigm SSD 如何为 Alluxio 提供合适的存储

就读缓存而言,Solidigm D5-P5336 61.44TB QLC 提供了卓越的性能和可扩展性。对于 checkpoint 写入而言,PCIe 5.0 D7-PS1010 提供了一流的写性能。

“我们与 Solidigm 团队紧密合作,验证了将 Alluxio 分布式缓存技术与 Solidigm SSD 和 NVMe 驱动联合用于 AI 模型训练工作负载的性能优势。通过这次合作,我们进一步优化了 Alluxio,通过充分发挥 Solidigm 驱动的优势,将大规模 AI 工作负载的 I/O 吞吐量最大化。” Alluxio 工程副总裁杜璿表示,“我们期待与 Solidigm 继续开展这项重要合作,共同为我们的客户提供高性能、高成本效益的解决方案,帮助客户构建、训练和部署大规模 AI 模型。”

Alluxio 和 Solidigm 的合作成果表明,Solidigm TLC 和 QLC SSD 都能显著提升 Alluxio 的服务,同时降低运营成本。此外,Solidigm 还提高了质量和可靠性标准,并由专门的客户服务团队为 Alluxio 提供出色的支持。

相关文章:

Alluxio 联手 Solidigm 推出针对 AI 工作负载的高级缓存解决方案

作者:Wayne Gao, Yi Wang, Jie Chen, Sarika Mehta Alluxio 作为全球领先的 AI 缓存解决方案供应商, 提供针对 GPU 驱动 AI 负载的高速缓存。其可扩展架构支持数万个节点,能显著降低存储带宽的消耗。Alluxio 在解决 AI 存储挑战方面的前沿技…...

Oracle 数据库常见字段类型大全及详细解析

在工作期间会遇到数据库建表的业务,经常会使用复制粘帖等操作,而不清楚数据库的字段类型。本文记录了 Oracle 数据库常见字段类型,根据不同的数据需求,可以选择不同的字段类型来存储数据。 文章目录 一、字符类型(Char…...

U3D的.Net学习

Mono:这是 Unity 最初采用的方式,它将 C# 代码编译为中间语言 (IL),然后在目标平台上使用虚拟机 (VM) 将其转换为本地机器码执行。 IL2CPP:这是一种较新的方法,它会将 C# 代码先编译为 C 代码,再由 C 编译器…...

Tomcat下载配置

目录 Win下载安装 Mac下载安装配置 Win 下载 直接从官网下载https://tomcat.apache.org/download-10.cgi 在圈住的位置点击下载自己想要的版本 根据自己电脑下载64位或32位zip版本 安装 Tomcat是绿色版,直接解压到自己想放的位置即可 Mac 下载 官网 https://tomcat.ap…...

adb常用指令(完整版)

1、adb devices 查看是否连接到设备 2、adb install [-r] [-s] 安装app,-r强制,-s安装sd卡上 3、adb uninstall [-k] 卸载app,-k保留配置和参数 4、adb push 把本地文件上传设备 5、adb pull 下载文件到本地 6、cd D:\sdk\platform-tool…...

大数据学习(36)- Hive和YARN

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦&#x1f91…...

C# ASP.NET MVC项目内使用ApiController

1.在App_Start文件夹新建WebApiConfig.cs文件,建立webApi路由的注册方法。 using System.Web.Http;namespace PrivilegeManager {public class WebApiConfig{public static void Register(HttpConfiguration config){config.MapHttpAttributeRoutes();config.Route…...

Kafka 入门与应用实战:吞吐量优化与与 RabbitMQ、RocketMQ 的对比

前言 在现代微服务架构和分布式系统中,消息队列作为解耦组件,承担着重要的职责。它不仅提供了异步处理的能力,还能确保系统的高可用性、容错性和扩展性。常见的消息队列包括 Kafka、RabbitMQ 和 RocketMQ,其中 Kafka 因其高吞吐量…...

“推理”(Inference)在深度学习和机器学习的语境

“推理”(Inference)在深度学习和机器学习的语境中,是指使用经过训练的模型对新数据进行预测的过程。将其简单地理解为“模型的应用阶段”。在这一阶段,我们不再进行模型训练,而是利用已训练好且保存下来的模型来获取对…...

字节腾讯阿里大厂面经汇总:Java集合(容器)大厂面试题及参考答案

ArrayList 的扩容机制以及删除操作的时间复杂度 ArrayList 是 Java 中非常常用的一个集合类,它是基于数组实现的动态数组。当我们创建一个 ArrayList 时,如果不指定初始容量,它会有一个默认的初始容量(通常是 10)。当我们向 ArrayList 中添加元素时,如果元素的数量达到了…...

数据结构(初阶)(一)----算法复杂度

算法复杂度 算法复杂度数据结构算法算法效率复杂度的概念 数据结构 数据结构(Data Structure)是计算机存储、组织数据的⽅式,指相互之间存在⼀种或多种特定关系的数据元素的集合。没有⼀种单⼀的数据结构对所有⽤途都有⽤,所以我们要学各式各样的数据结…...

构建高效稳定的网络环境

概述 网络技术是当今IT行业的重要组成部分,构建高效稳定的网络环境对于企业、个人和互联网发展至关重要。本文将探讨网络技术中的关键要素,包括网络协议、网络架构、网络安全和网络优化,并提供实用的技巧和最佳实践,以帮助您构建…...

使用Edge打开visio文件

使用Edge打开visio文件 打开Edge浏览器搜索‘vsdx edge’ 打开第一个搜索结果 Microsoft Support 根据上述打开的页面进行操作 第一步:安装Visio Viewer 第二步:添加注册表 桌面新增文本文件,将下面的内容放入新建文本中,修…...

ChatGPT Prompt 编写指南

一、第一原则:明确的意图​ 你需要明确地表达你的意图和要求,尽可能具体、描述性、详细地描述所需的上下文、你期望的结果等。你的要求越明确,越有希望获得你想要的答案。​ 糟糕的案例 ❌​ ​ 写一首关于 OpenAI 的诗。​ ​ 更好的案…...

蚁群算法 (Ant Colony Optimization) 算法详解及案例分析

蚁群算法 (Ant Colony Optimization) 算法详解及案例分析 目录 蚁群算法 (Ant Colony Optimization) 算法详解及案例分析1. 引言2. 蚁群算法 (ACO) 算法原理2.1 蚂蚁觅食行为2.2 算法步骤2.3 数学公式3. 蚁群算法的优势与局限性3.1 优势3.2 局限性4. 案例分析4.1 案例1: 旅行商…...

安卓动态设置Unity图形API

命令行方式 Unity图像api设置为自动,安卓动态设置Vulkan、OpenGLES Unity设置 安卓设置 创建自定义活动并将其设置为应用程序入口点。 在自定义活动中,覆盖字符串UnityPlayerActivity。updateunitycommandlineararguments (String cmdLine)方法。 在该方法中,将cmdLine…...

通信协议—WebSocket

一、WebSocket编程概念 1.1 什么是WebSocket WebSocket 是一种全双工通信协议,允许在客户端(通常是浏览器)和服务器之间建立持久连接,以实现实时的双向通信。它是 HTML5 标准的一部分,相比传统的 HTTP 请求&#xff…...

helm推送到harbor私有库--http: server gave HTTP response to HTTPS client

harbor私有库访问的是http模式 harbor 2.8版本以上可以存储helm镜像 docker镜像推送的时候需要docker端配置insecure-registries 发现helm推送只能在harbor部署的本机使用localhost才能推送成功,即 helm push xxx.tgz oci://localhost:80/library 使用helm pus…...

数据结构——实验一·线性表

海~~欢迎来到Tubishu的博客🌸如果你也是一名在校大学生,正在寻找各种变成资源,那么你就来对地方啦🌟 Tubishu是一名计算机本科生,会不定期整理和分享学习中的优质资源,希望能为你的编程之路添砖加瓦⭐&…...

快速搭建深度学习环境(Linux:miniconda+pytorch+jupyter notebook)

本文基于服务器端环境展开,使用的虚拟终端为Xshell。 miniconda miniconda是Anaconda的轻量版,仅包含Conda和Python,如果只做深度学习,可使用miniconda。 [注]:Anaconda、Conda与Miniconda Conda:创建和管…...

OpenCV相机标定与3D重建(66)对立体匹配生成的视差图(disparity map)进行验证的函数validateDisparity()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 使用左右检查来验证视差。矩阵 “cost” 应该由立体对应算法计算。 cv::validateDisparity 函数是 OpenCV 库中用于对立体匹配生成的视差图&…...

2025年新开局!谁在引领汽车AI风潮?

汽车AI革命已来。 在2025年伊始开幕的CES展上,AI汽车、AI座舱无疑成为了今年汽车行业的最大热点。其中不少车企在2025年CES上展示了其新一代AI座舱,为下一代智能汽车的人机交互、场景创新率先打样。 其中,东软集团也携带AI驱动、大数据支撑…...

Spring自定义BeanPostProcessor实现bean的代理Java动态代理知识

上文:https://blog.csdn.net/qq_26437925/article/details/145241149 中大致了解了spring aop的代理的实现,其实就是有个BeanPostProcessor代理了bean对象。顺便复习下java代理相关知识 目录 自定义BeanPostProcessor实现aopJava动态代理知识动态代理的几…...

三篇物联网漏洞挖掘综述

由于物联网设备存在硬件资源受限、硬件复杂异构, 代码、文档未公开的问题, 物联网设备的漏洞挖掘存在较大的挑战: 硬件资源受限性: 通用动态二进分析技术需要在运行程序外围实施监控分析。由于物联网设备存储资源(存储)的受限性,…...

Pytorch深度学习指南 卷I --编程基础(A Beginner‘s Guide) 第1章 一个简单的回归

本章正式开始使用pytorch的接口来实现对应的numpy的学习的过程,来学习模型的实现,我们会介绍numpy是如何学习的,以及我们如何一步步的通过torch的接口来实现简单化的过程,优雅的展示我们的代码,已经我们的代码完成的事…...

【EXCEL_VBA_实战】多工作薄合并深入理解

工作背景:多个工作薄存在冲突的名称,需快速合并 困难点:工作表移动复制时,若有冲突的名称,会不断弹出对话框待人工确认 思路:利用代码确认弹出的对话框 关键代码:Application.DisplayAlerts …...

mysql之表的外键约束

MySQL表的外键约束详细介绍及代码示例 外键约束是数据库中用于维护数据完整性和一致性的重要机制。它确保一个表中的数据与另一个表中的数据相关联,防止无效的数据引用。本文将详细介绍了外键约束的各个方面,并通过具体的代码示例进行演示。 1. 外键约束…...

Tuning the Go HTTP Client Settings

记录一次Go HTTP Client TIME_WAIT的优化 业务流程 分析 通过容器监控发现服务到事件总线的负载均衡之间有大量的短链接,回看一下代码 发送请求的代码 func SendToKEvent(ev *KEvent) error {data, err : json.Marshal(ev.Data)if err ! nil {return err}log.Pri…...

第二十四课 Vue中子组件调用父组件数据

Vue中子组件调用父组件数据 Vue是不建议在不同的组件直接传递值的&#xff0c;我们需要使用props方法来进行组件间的值传递 子组件调用父组件数据 父模板的数据&#xff0c;子组件是无法直接调用的 无法直接调用 1&#xff09;组件调用顶级对象中的data <div class&quo…...

Jenkins-pipeline语法说明

一. 简述&#xff1a; Jenkins Pipeline 是一种持续集成和持续交付&#xff08;CI/CD&#xff09;工具&#xff0c;它允许用户通过代码定义构建、测试和部署流程。 二. 关于jenkinsfile&#xff1a; 1. Sections部分&#xff1a; Pipeline里的Sections通常包含一个或多个Direc…...