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

分享嘉宾:
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.rhkb.cn/news/281936.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

刷题28-30(力扣0322/0078/0221)

0322. 零钱兑换 题目: 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以…

一文带你看懂 前后端之间图片的上传与回显

一文带你看懂 前后端之间图片的上传与回显 前言 看了很多类似的文章,发现很多文章,要不就是不对,要不就是代码写的不通俗易懂,所以有了这篇文章,我将会从原理到实战,带你了解 实战包含前端 原生 vue3 rea…

Gold Effects

HDRP、URP、LWRP和标准支持 完全可定制的金币效果。几乎每个属性都是可调整的,您可以更改这些效果的颜色、渐变、噪波纹理和整体形状。支持HDRP、URP和LWRP,当然也支持标准渲染器。易于拖放设置,带有定制示例的演示场景。使用标准Unity Animator为箱子制作动画,因此您可以轻…

Python爬虫与数据可视化源码免费领取

引言 作为一名在软件技术领域深耕多年的专业人士,我不仅在软件开发和项目部署方面积累了丰富的实践经验,更以卓越的技术实力获得了🏅30项软件著作权证书的殊荣。这些成就不仅是对我的技术专长的肯定,也是对我的创新精神和专业承诺…

电子科技大学链时代工作室招新题C语言部分---题号H

1. 题目 最有操作的一道题,有利于对贪心算法有个初步了解。 这道题的开篇向我们介绍了一个叫汉明距离的概念。 汉明距离指的就是两个相同长度的字符串的不同字符的个数。 例如,abc和acd,b与c不同,c与d不同,所以这两个…

每周一算法:迭代加深A*

题目链接 AcWing 180. 排书 题目描述 给定 n n n 本书,编号为 1 ∼ n 1\sim n 1∼n。 在初始状态下,书是任意排列的。 在每一次操作中,可以抽取其中连续的一段,再把这段插入到其他某个位置。 我们的目标状态是把书按照 1 ∼…

牛客题霸-SQL进阶篇(刷题记录一)

本文基于前段时间学习总结的 MySQL 相关的查询语法,在牛客网找了相应的 MySQL 题目进行练习,以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多,因此本文不再展示,只提供 MySQL 代码与示例输出。 部分题目因…

青海200MW光伏项目 35kV开关站图像监控及安全警示系统

一、背景 随着我国新能源产业的快速发展,光伏发电作为清洁能源的重要组成部分,得到了国家政策的大力扶持。青海作为我国光伏资源丰富地区,吸引了众多光伏项目的投资建设。在此背景下,为提高光伏发电项目的运行效率和安全性能&…

基于Java中的SSM框架实现万卷图书馆书籍借阅管理系统项目【项目源码+论文说明】

基于Java中的SSM框架实现万卷图书馆书籍借阅管理系统演示 摘要 图书管理系统,是一个由人、计算机等组成的能进行管理信息的收集、传递、加工、保存、维护和使用的系统。利用信息控制企业的行为;帮助企业实现其规划目标。 图书馆管理系统,能…

二、typescript基础语法

一、条件语句 二、函数 1、有名函数 function add(x:number, y:number):number {return x y;}2、匿名函数 let add function (x:number, y:number):number {return x y;}函数可选参数 function buildName(firstname: string, lastname?:string) {if (lastname) {return fi…

asp.net mvc 重新引导视图路径,改变视图路径

asp.net mvc 重新引导视图路径,改变视图路径 使用指定的控制器上下文和母版视图名称来查找指定的视图 通过本文学习,你可以根据该技法,去实现,站点自定义皮肤,手机站和电脑站,其他设备站点,在不…

3.面向对象中级

文章目录 包访问修饰符封装继承继承使用细节继承内存布局及细节 Supersuper使用细节super与this比较 overwrite多态对象的多态:向上转型:向下转型:多态细节动态绑定机制 Object类equalshashcodetoStringfinalize 包 区分相同名字的类&#x…

LeetCode讲解算法1-排序算法(Python版)

文章目录 一、引言问题提出 二、排序算法1.选择排序(Selection Sort)2.冒泡排序3.插入排序(Insertion Sort)4.希尔排序(Shell Sort)5.归并排序(Merge Sort)6.快速排序(Qu…

linux之shell脚本基础

1.构建基础脚本 1.1 创建shell脚本 1.1.1 第一行需要指定使用的shell # 用作注释行.shell并不会处理脚本中的注释行,但是第一行的注释,会告诉shell使用哪个shell来运行脚本. #!/bin/bash 1.1.2 让shell找到你的脚本 直接运行脚本会提示-bash: a.sh: command not found.因…

Selenium 自动化 —— Selenium IDE录制、回放、导出Java源码

Hello Selenium 示例 之前我们在专栏的第一篇文章中演示了使用使用Selenium进行百度搜索的Hello world示例。 代码不复杂非常简单: public static void main(String[] args) {WebDriver driver null;try {// 设置Chrome驱动的路径 // System.setPro…

Javaweb学习记录(三)请求响应案例

下面为一个请求响应案例,postman发送请求,服务器响应将一个xml文件中的数据通过读取解析,将其用Result类标准的格式返回前端,在前端用json的方式显示 后端Controller代码 1、通过本类的字节码文件得到类加载器并寻找到需要解析的…

如何使用 ArcGIS Pro 生成TIN

三角网是一种常用于表示地表地形的数字地球模型(DEM)方式,我们可以通过 ArcGIS Pro 将等高线和高程点转换为TIN,这里为大家介绍一下转换方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的高…

MATLAB环境下基于振动信号的轴承状态监测和故障诊断

故障预测与健康管理PHM分为故障预测和健康管理与维修两部分,PHM首先借助传感器采集关键零部件的运行状态数据,如振动信号、温度图像、电流电压信号、声音信号及油液分析等,提取设备的运行监测指标,进而实现对设备关键零部件运行状…

python 爬取杭州小区挂牌均价

下载chrome驱动 通过chrome浏览器的 设置-帮助-关于Google Chrome 查看你所使用的Chrome版本 驱动可以从这两个地方找: 【推荐】https://storage.googleapis.com/chrome-for-testing-publichttp://npm.taobao.org/mirrors/chromedriver import zipfile import os import r…

前端面试拼图-知识广度

摘要:最近,看了下慕课2周刷完n道面试题,记录并添加部分可参考的文档,如下... 1. 移动端H5 click有300ms延迟, 如何解决? 背景:double tap to zoom 移动端H5中的300ms点击延迟问题通常是由浏览…