数据本地性如何助力企业在云上实现高效机器学习

分享嘉宾:
Lu Qiu, Shawn Sun

本文将讨论数据本地性对于在云上进行高效机器学习的重要性。首先对比现有解决方案的利弊,并综合考虑如何通过数据本地性来降低成本和实现性能最大化。其次会介绍新一代的Alluxio设计与实现,详细说明其在模型训练和部署中的价值。最后会分享从基准测试和实际案例研究中得出的结论。

一、为什么需要数据本地性

数据本地性指的是让计算任务靠近需要访问的数据,在云环境中优化数据本地性主要带来两大益处 —— 提升性能和降低成本

1.1 提升性能

将数据存放在计算引擎附近时,数据访问速度要比从远端存储访问快的多。这对于数据密集型应用(如机器学习和AI任务)的影响尤为重大。数据本地性会减少数据传输时间,进而缩短完成任务所需的总时间。

具体的性能收益包括与远端存储相比,数据访问速度更快; 以及在诸如机器学习和AI等数据密集型应用上的耗时更少。通过就近存放并访问所需数据,减少了数据移动上的耗时,可将更多的时间用于高效计算。

1.2 节约成本

数据本地性除了能帮助更快地完成任务外,也降低了云环境成本。

让计算引擎靠近数据存储,可减少与外部云存储服务之间通过API调用(LIST、GET操作)来重复访问或移动数据,因此能节约高昂的API调用成本。通过减少对云存储的数据和元数据操作,云成本及流量成本也得以降低。数据本地性还可以提高GPU硬件的利用率,从而减少总的GPU租用时间。

总而言之,数据本地性可提高云任务的整体效率并降低操作成本。

二、现有解决方案和局限性

目前市场上有一些用于提升云上机器学习任务数据本地性的方案,每种方案都有其优点和局限性。

2.1 在运行时直接从远端存储读取数据

最简单的方案是根据需要直接从远端云存储读取数据。该方案无需本地性配置,易于实现。缺点就是每个训练周期(epoch)都需要从远端存储重新读取完整的数据集。对于模型训练而言,为提高模型准确性,通常需要进行多个epoch训练,因此数据读取所花费的时间可能比实际用于模型训练计算所花费的时间要长得多。

测试显示,80%的时间都花费在把数据从存储加载到训练集群上,请参见下图中的DataLoader占比。

2.2 训练前将数据从远端拷贝到本地

另一种方案是在训练开始之前手动将数据集从远端云存储拷贝到本地磁盘/存储中。这样可以让数据位于本地,从而具备数据本地性的所有性能和成本优势。该方案的挑战主要在于数据管理。用户必须在作业完成后手动删除已拷贝的数据,为下一个作业腾出有限的本地存储空间,因此会增加操作成本。

2.3 本地缓存层用于数据重用

某些存储系统(如S3)提供内置的缓存优化。此外,也有更高阶的开箱即用解决方案,如使用Alluxio FUSE SDK,作为本地缓存层来缓存远端的数据。缓存的数据可以在作业之间重复使用,确保重用数据的本地性。缓存层自动处理数据驱逐和生命周期管理,无需人工监督。但是,其存储容量仍然受限于本地磁盘,无法缓存巨大的数据集。

2.4 分布式缓存系统

分布式缓存系统可以跨多个节点,创建可存储大量热数据的共享缓存层,此外,它会自动处理数据管理任务,如数据分层和驱逐。

但是,传统的分布式缓存解决方案仍然在master节点可用性方面存在一些局限。海量小文件也会产生瓶颈。此外,可扩展性、可靠性以及满足不断增长的数据需求方面的挑战持续存在。

三、新设计:Alluxio DORA架构

为了克服现有分布式缓存解决方案在可扩展性、可靠性和性能方面的局限,我们提出了一种使用一致性哈希和软亲和调度的新设计—— Alluxio DORA(Decentralized Object Repository Architecture去中心化对象存储架构)。

3.1 用于缓存的一致性哈希

Alluxio DORA主要是利用一致性哈希来确定worker节点上的数据和元数据缓存位置, 让缓存数据操作和数据缓存查找分布到各个worker节点上进行,而不是集中在单个master节点上。

该方案的优势包括:

√ Worker节点有充足的可用于缓存的本地存储空间;

√ 不存在单点故障风险;

√ Master节点不会出现性能瓶颈;

√ 增减节点时自动再平衡和再分配。

3.2 软亲和缓存方案

在一致性哈希基础上采用软亲和缓存算法可进一步优化数据本地性。该算法的步骤如下:

√ 第1步:为每个数据对象配置所需缓存副本数;

√ 第2步:使用一致性哈希确定存放每个缓存副本的首选目标节点;

√ 第3步:根据首选节点重新运行一致性哈希,计算出次选的替代节点;

√ 第4步:重复以上步骤,为每个副本分配多个基于亲和的缓存位置。

这样就为数据缓存目标创建了分级亲和性偏好。再加上去中心化的一致性哈希,软亲和缓存不仅优化了数据本地性能, 也能确保可扩展性和可靠性。

四、实现

这里提到的分布式缓存设计已经在Alluxio最新的企业版产品Alluxio AI中实现。

4.1 实现

Alluxio的新一代架构实现了将软亲和调度算法用于分布式数据缓存。实现的主要亮点包括:

实现了高可扩展性——单个Alluxio worker可处理3000万到5000万个缓存文件。另外,Alluxio新一代架构也包含高可用性设计,旨在实现99.99%的正常运行时间,不出现单点故障。此外,一个云原生的Kubernetes operator就能处理诸如部署、扩展和生命周期管理等任务。

4.2 针对训练的CSI和FUSE

新一代的Alluxio通过CSI和FUSE接口与Kubernetes集成,从而实现从训练Pod对缓存层的直接访问。

FUSE将远程缓存数据暴露为本地文件夹,极大地简化了挂载和使用。CSI集成仅在实际访问数据集时才按需启动工作Pod,因而提高了效率。

上述形成了三级缓存——内核(kernel)、磁盘SSD和Alluxio分布式缓存, 从而优化了数据本地性。

4.3 性能基准测试

在单个worker节点的性能基准测试中,使用了三个不同文件数量参数——480万个文件、2400万个文件和4800万个文件。worker节点能够在不出现任何显著性能下降的情况下读、写4800万个文件。

在数据加载性能测试中,使用imagenet的子集进行计算机视觉测试,并使用yelp学术数据集进行NLP(自然语言处理)测试。测试结果显示,就IOPS和吞吐量而言,Alluxio FUSE比S3FS-FUSE快2~4倍。

就计算机视觉训练而言,由于数据加载时间缩短,GPU利用率从17%提高到93%。

五、生产案例研究:知乎

作为一家头部的在线问答平台,知乎将Alluxio部署为LLM训练和服务的高性能数据访问层。Alluxio将模型训练速度提高2~3倍,GPU利用率提高2倍,并将模型部署时间从几小时或几天缩短到分钟数量级。

点击查看完整案例

六、总结

本文要点总结如下:

√ 数据本地性对于优化云上机器学习任务的性能和成本至关重要。将数据存放在计算引擎附近不仅可降低数据访问延迟,也可节省云存储成本;

√ 包括直接访问远端数据、拷贝数据和使用本地缓存层在内的现有解决方案各有利弊,但都难以将提供的数据本地性提升到更大或者超大的规模;

√ 新的解决方案——Alluxio DORA,采用分布式缓存架构,利用去中心化的一致性哈希以及软亲和调度算法来优化数据存放,既能保持高可用性也能提高本地性;

√ 基准测试和真实的生产案例研究显示,Alluxio DORA能够为处理巨大数据集的AI任务提供近似本地处理的性能,并且将成本最小化。

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

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

相关文章

语言与人生:编程中的“影视风云”

语言与人生:编程中的“影视风云” Language and Life: The “Cinematic Spectacle” in Programming 编程,于我而言,便如走进一座座影视城,每换一种语言,便仿佛遇见了一位新的影视人物,性格迥异&#xff0c…

使用Windows的“远程桌面连接”Ubuntu主机连接不上问题解决

问题描述: 使用Windows自带的“远程桌面连接”来连接自己的Ubuntu的系统的过程中,自己已经成功安装了 xrdp 文件包,但是在使用“远程桌面连接”时,自己的“远程桌面连接”软件在输入Ubuntu系统的用户名和密码后,连接不…

day13-SpringBootWeb 事务AOP

一、事务管理 1 事务回顾 概念 事务 是一组操作的集合,它是一个不可分割的工作单位,这些操作 要么同时成功,要么同时失败。 操作 开启事务(一组操作开始前,开启事务):start transaction / begi…

全过程管理为企业数字化落地保驾护航

上海金桥出口加工区开发股份有限公司(以下简称“金桥股份”)成立于1992年,主要从事上海金桥经济技术开发区的开发建设、招商引资、产业发展和载体运营管理。经过30年的努力,金桥股份已经成长为资本市场中资产质量优良、业绩稳定、…

linux之Haproxy

介绍 haproxy是一种开源的TCP和HTTP负载均衡代理服务器软件。客户端通过Haproxy代理服务器获得站点页面,而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器 下载Haproxy yum install haproxy -y 开启服务 systemctl start haproxy 配…

信息学奥赛之MAC端VSCode C++环境配置

前提 安装 Visual Studio CodeVSCode 中安装 C/C扩展确保 Clang 已经安装(在终端中输入命令:clang --version 来确认是否安装)未安装,在命令行执行xcode-select --install 命令,会自行安装,安装文件有点大…

CSS 脱离标准文档流 浮动

浮动 在标准流当中,元素或者标签在页面上摆放的时候会出现不如意的地方。要想解决这些问题可以采用脱离标准流的方式来进行解决这些问题,脱离标准流也称为脱离文档流。 脱离标准流的解决方式有三种,一种是浮动,另外一种是固定定位…

综合案例:使用Scrapy爬取当当网的图片信息

本节将继续讲解 Scrapy 框架的使用。具体包括 Scrapy 爬虫框架以及内部每个组件的使用(Selector 选择器、Spider 爬虫类、Downloader 和 Spider 中间件、ItemPipeline 管道类等)。 本例目标是爬取当当图书网站中所有关于 “python” 关键字的图片信息&a…

网站没有SSL证书会遇到什么问题?怎么解决?

简单来说,如果一个网站没装SSL证书,会有以下几个大问题: 1.信息容易被偷看: - 就像写信不封口一样,网站和用户之间的交流信息是透明的,谁都能看到。比如你在网站上输入的账号密码、联系信息、银行卡号等重要…

最全APP抓包大法

前言:最近工作中遇到一些比较奇葩的App,一边测试一边搜集整理出了比较全的姿势。如有错误之处,还请各位师傅多多指教。 如何判断:连接Fiddler代理–>抓不到包–>关闭Fiddler后正常通信。 解决方法:PC端模拟器如…

计算机视觉项目-单目测距/双目测距/3D目标检测/语义分割/姿态识别及姿态估计

往期热门大项目合集: yolov5单目测距速度测量目标跟踪YOLOv8界面-目标检测语义分割追踪姿态识别(姿态估计)界面DeepSort/ByteTrack-PyQt-GUI_yolov8显示速度-CSDN博客 3D目标检测(教程代码)_3d目标检测原理-CSDN博客…

基于Springboot+Vue的前后端分离的简单Demo案例(一)

后端创建Springboot项目 创建数据库表结构及表信息 添加依赖&#xff08;pom.xml&#xff09; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/X…

CSDN欢迎使用Markdown编辑器你好,写文章快捷键与格式

了 解一下Markdown的基本语法知识。 1.全新的界面设计&#xff0c;将会带来全新的写作体验; 2.在创作中心设置你喜爱的代码高亮样式Markdown 将代码片显示选择的高亮样式进行展示; 3.增加了 图片拖拽 功能&#xff0c;你可以将本地的图片直接拖拽到编辑区域直接展示; 4.全新的 …

19.作业

1.作业样例图 2.学习视频 19.作业讲解

安卓使用MQTT实现阿里云物联网云台订阅和发布主题(3)

一、订阅主题代码讲解 private final String mqtt_sub_topic "/sys/k0wih08FdYq/LHAPP/thing/service/property/set";//订阅话题//mqtt客户端订阅主题//QoS0时&#xff0c;报文最多发送一次&#xff0c;有可能丢失//QoS1时&#xff0c;报文至少发送一次&#xff0c…

YOLOv9改进策略:block优化 | AIFI (尺度内特征交互)助力YOLO | YOLO终结者?RT-DETR一探究竟

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a; YOLOv9如何魔改卷积进一步提升检测精度&#xff1f;AIFI (尺度内特征交互&#xff09;助力YOLO ,提升尺度内和尺度间特征交互能力&#xff0c;同时降低多个尺度的特征之间进行注意力运算&#xff0c;计算消耗…

C语言例:n是否为素数(质数)

质数是指只能被1和自身整除的正整数。要判断一个数n是否为质数&#xff0c;可以通过以下步骤进行&#xff1a; 首先&#xff0c;判断n是否小于2&#xff0c;如果小于2&#xff0c;则不是质数。然后&#xff0c;从2开始&#xff0c;逐个判断n是否能被2到sqrt(n)之间的数整除。如…

jdk api之SyncFailedException基础、应用、实战

博主18年的互联网软件开发经验&#xff0c;从一名程序员小白逐步成为了一名架构师&#xff0c;我想通过平台将经验分享给大家&#xff0c;因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验&#xff0c;晚上进行用心精简、整理、总结、定稿&…

实体框架EF(Entity Framework)简介

实体框架EF&#xff08;Entity Framework&#xff09;简介 文章目录 实体框架EF&#xff08;Entity Framework&#xff09;简介一、概述二、O/R Mapping是什么采用O/R Mapping带来哪些好处 三、Entity Framework架构3.1 下图展示了Entity Framework的整体架构3.2 Entity Framew…

【机器学习-08】参数调优宝典:网格搜索与贝叶斯搜索等攻略

超参数是估计器的参数中不能通过学习得到的参数。在scikit-learn中&#xff0c;他们作为参数传递给估计器不同类的构造函数。典型的例子有支持向量分类器的参数C&#xff0c;kernel和gamma&#xff0c;Lasso的参数alpha等。 ​ 在超参数集中搜索以获得最佳cross validation交叉…