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

news2024/9/23 22:44:44
分享嘉宾:
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任务提供近似本地处理的性能,并且将成本最小化。

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

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

相关文章

生命源集团2024全球品牌发布会成功举办

生命源集团2024全球品牌发布会圆满落幕 3月20日,生命源集团在杭州隆重举办了主题为“生命源启,荣耀之巅”的2024全球品牌发布会。 活动伊始,嘉宾们陆续签到入场,现场气氛热烈而庄重。随后,生命源集团十二大事业部总裁…

3.3 数据定义 数据库与系统概论

目录 3.3.1 模式的定义与删除 1. 定义模式 2. 删除模式 CASCADE(级联) RESTRICT(限制) 3.3.2 基本表的定义、删除与修改 表的定义 2.数据类型 3. 模式与表 4. 修改基本表 5. 删除基本表 3.3.3 索引的建立与删除 1. …

ZYNQ学习之Ubuntu系统的简单设置与文本编辑

基本都是摘抄正点原子的文章&#xff1a;<领航者 ZYNQ 之嵌入式Linux 开发指南 V3.2.pdf&#xff0c;因初次学习&#xff0c;仅作学习摘录之用&#xff0c;有不懂之处后续会继续更新~ 一、Ubuntu的简单操作 1.1 切换拼音输入法 Ubuntu 自带的拼音输入法&#xff0c;有两种…

[NKCTF 2024]web解析

文章目录 my first cms全世界最简单的CTF解法一解法二 my first cms 打开题目在最下面发现是CMS Made Simple&#xff0c;版本为2.2.19 扫一下发现存在后台登陆界面&#xff0c;直接访问 用字典爆破下admin的密码为Admin123 然后直接登录&#xff0c;去漏洞库搜一下其实存在…

从人工智能入门到理解ChatGPT的原理与架构的第一天(First)(含机器学习特征工程详解)

目录 一.ChatGPT的发展历程 二.Attention is all you need 三.对于GPT-4的智能水平评估 四.大语言模型的技术演化 1.从符号主义到连接主义 2.特征工程 2.1数据探索 2.2数据清洗 2.3数据预处理 2.3.1无量纲化 2.3.1.1标准化 2.3.1.2区间缩放法 2.3.1.3标准化与归一…

layui框架实战案例(25):laydate中mark的数据后端生成

mark&#xff0c;自定义日期标记。该属性是对 calendar 属性的进一步延伸&#xff0c;灵活度更高。属性可批量设置多个日期标记&#xff0c;如&#xff1a; mark: {0-10-14: 生日, //每年每月的某一天0-0-10: 工资, // 每月 10 号2008-8-8: 开幕, // 指定的日期 }其中日期的格式…

剧变:人类社会与国家危机的转折点 - 三余书屋 3ysw.net

精读文稿 今天我们解读的这本书是《巨变》。副标题是人类社会与国家危机的转折点&#xff0c;这是一个充满风险和危机的时代。比如作为个人&#xff0c;我们可能会遭遇失业、离婚、亲朋好友的意外去世。作为国家&#xff0c;会遭遇经济危机、社会动荡甚至战争。整个世界也会陷入…

设计模式之桥接模式解析

桥接模式 1&#xff09;概述 1.定义 桥接模式(Bridge Pattern) 将抽象部分与它的实现部分分离&#xff0c;使它们都可以独立地变化。 2.作用 如果系统中某个类存在两个独立变化的维度&#xff0c;通过该模式可以将这两个维度分离出来&#xff0c;使两者可以独立扩展。 3.…

Android开发简易登录界面

title: Android开发第四天 search: 2024-03-22 tags: Android开发 Android开发简易登录界面 文章目录 Android开发简易登录界面一、定义style样式二、完成 activity_main.xml 界面具体设计三、代码简述 背景 &#xff1a;在初学 android 开发的时候&#xff0c;为了尽量熟悉学…

看漫画学Python:有趣好玩

书籍介绍 Python是一门既简单又强大的编程语言&#xff0c;被广泛应用于数据分析、大数据、网络爬虫、自动化运维、科学计算和人工智能等领域。Python也越来越重要&#xff0c;成为国家计算机等级考试科目&#xff0c;某些中小学也开设了Python编程课程。本书秉承有趣、有料、…

js实现操作浏览器返回时,页面有弹窗则关闭弹窗而不实际返回

关于popstate、pushState参考:HTML5的popstate、pushState、replaceState如何玩转浏览器历史记录-CSDN博客文章浏览阅读1.3w次,点赞8次,收藏30次。一、popstate用来做什么的?简而言之就是HTML5新增的用来控制浏览器历史记录的api。二、过去如何操纵浏览器历史记录?window.…

自定义组件学习

效果 自定义组件模块 <template> <div class"flex-1"><div :style"{width: wrapWidth}" class"flex-margin mb8"><OprateSteps :operateHtml"operateHtml" /></div><ul class"datacollect-…

Ftrans安全数据摆渡系统 构建便捷的内外网数据交换通道

安全数据摆渡系统是一种设计用于解决内外网环境下&#xff0c;数据传输、管理、共享问题的安全系统&#xff0c;通过加密、访问控制等策略&#xff0c;提供安全可靠的数据传输和共享服务&#xff0c;尤其适用于对网络安全建设要求高的行业&#xff0c;比如研发型企业、党政机构…

异步引入组件

defineAsyncComponent 函数&#xff1a;用于异步引入组件。 Suspense 标签&#xff1a;异步组件加载时&#xff0c;显示的默认内容。 应用场景&#xff1a;当子组件的数据量较大&#xff0c;导致父组件延迟显示时使用。 语法格式 异步引入组件&#xff1a; import { define…

Java:ArrayList与顺序表

一、线性表 线性表是n个具有相同特征的数据元素的有限序列&#xff0c;它是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表有&#xff1a;顺序表、链表、栈、队列...... 如图&#xff1a;顺序表与链表的区别看了标题的伙伴就应该知道&#xff0c;我们这次要讲解的主…

Java多线程实战-从零手搓一个简易线程池(一)定义任务等待队列

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

router.push是同步还是异步?push.then和子组件onMounted谁先触发?

直接做实验&#xff1a; <el-button type"danger" click"test">toAbout</el-button>// -----const test () >{router.push(about).then((e)>{console.log(then里面, e);}).finally((e)>{console.log(finally里面, e);})console.log…

【Unity3D小功能】Unity3D中实现点击‘文字’出现‘UI面板’

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群&#xff1a;398291828 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 宠粉博主又来了&#xff0c;今天有粉丝问我如何实…

机器学习 - 神经网络分类

什么叫做分类问题&#xff1f; A classification problem involves predicting whether something is one thing or another. Problem typeWhat is it?ExampleBinary classificationTarget can be one of two options, e.g. yes or noPredict whether or not someone has hea…

AXI_Lite协议详解

文章目录 摘要一、AXI_Lite接口全局信号&#xff1a;1、写地址通道&#xff1a;2、写数据通道&#xff1a;3、写响应通道&#xff1a;4、读地址通道&#xff1a;5、读数据通道&#xff1a; 二、仿真波形 摘要 AXI4-lite是AXI4-full的简化版。用于简单、低吞吐量的内存映射通信…