华人澳洲中文论坛

热图推荐

    如何用Alluxio来减速云上深度学习训练?

    [复制链接]

    2022-8-9 06:55:10 23 0

    导读:本文的主题是如何用Alluxio来减速云上深度学习训练,次要包罗下列三大部份内容:
    Alluxio及其POSIX API简介使用Alluxio减速云上训练(三个档次)Alluxio POSIX API的开展01
    Alluxio及其POSIX API简介


    Alluxio是一个java的开源名目,是云上的对于数据剖析以及深度学习训练的一个数据笼统层。在Alluxio之上能够对接不同的数据运用,包罗Spark、Flink这类ETL工具,presto这类query工具,以及TensorFlow、PyTorch等深度学习框架。在Alluxio上面也能够衔接不同数据源,好比阿里云、腾讯云、HDFS等。


    使用Alluxio,能够对数据运用以及数据源进行无缝衔接。Alluxio担任处置与不同数据源以及不同零碎的对接。


    Alluxio的一个很首要功用是可以对数据进行读写缓存。大家可能得多数据是在云存储上,或者是在远真个HDFS和Ceph集群上,假如每一个次的数据运用都要去远端不停反复地拿一样的数据,那末全部拿数据的流程是十分耗时的,并且可能会致使咱们总体训练或数据处置效力不高。经过Alluxio,咱们能够把一些热数据在凑近数据运用的集群进行缓存,从而晋升反复数据获得的机能。


    另外一方面,咱们也能够对元数据进行当地缓存。每一个次获得元数据都要经过网络去获得是对比慢的。假如经过Alluxio,能够间接从当地集群获得元数据,延时会大大缩短。同时,模型训练的元数据需要是十分低压的,咱们在与蚂蚁金服的试验中,能够看到不计其数QPS。假如整个压力都压到存储零碎中,存储零碎可能会不不乱,或进行一定的限流处置,致使一些读取过错。经过Alluxio能够很好地分担这部份元数据的压力。


    接上去重点讲授一下Alluxio的POSIX API
    深度学习训练框架PyTorch、TensorFlow、Caffe,它们的原生数据源都是当地文件零碎。企业数据量日趋扩张,致使咱们需求去使用散布式数据源。Alluxio能够把来自不同的远端存储零碎,以及散布式文件零碎的数据都挂载到Alluxio一致的命名空间以内。经过Alluxio POSIX API,把这些数据变为相似于当地文件的方式,提供应各种训练工作。


    上图直观地展示了Alluxio POSIX API把远真个散布式数据变为了当地文件夹的方式。
    02
    使用Alluxio减速云上训练
    上面来详细讲授如何使用Alluxio来减速云上训练。
    1. Level 1 读取缓存与减速
    一级弄法对比简略,就是间接经过Alluxio来减速对底层存储零碎中的数据拜候。


    如上图示例,咱们有一些数据存储在咱们的存储零碎中,它多是曾经通过数据预处置的数据,也多是一些原始数据。咱们的训练在云上的K8s集群上,与数据源之间存在一定的地舆差别,获得数据存在延时。咱们的训练需求反复去获得一样的数据源,在这类状况下,使用Alluxio集群,在凑近训练的集群内进行数据的缓存能够极大地晋升咱们获得数据的机能。


    能够用简略的命令来设置数据源,以及一些平安参数,让Alluxio能够去拜候这些数据源提供了数据源地址以及平安参数之后,就能把它挂载到Alluxio命名空间内的一个文件夹目录上面。挂载后,能够用一个命令来把一切的数据都一键地散布式加载到Alluxio傍边,这样一切数据都会进行散布式的缓存,为咱们的训练工作提供当地数据机能。


    上图是阿里巴巴进行的一个实测,假如他们的训练间接经过他们的oss Fuse间接去拜候阿里云存储,全部机能多是几百兆每秒。而经过Alluxio进行缓存后,能够达到千兆每秒。


    在Microsoft,他们的场景是:训练数据整个存在Microsoft Azure外面,有超过400个工作需求从Azure读数据,并写回到Azure中。这400个工作会波及到上千个节点,而他们的训练数据又是对比一致的。在使用Alluxio以前,他们的计划是把一份数据从Azure中不断地拷贝到上千台机器上。全部进程耗时大,而且因为工作量太大了,经常会致使Azure对他们的数据申请进行限流处置,从而致使下载失败,还要人工去恢复下载。经过使用Alluxio之后,Alluxio能够从Azure拿取一份数据,而后一样的一份数据能够供应不同的训练工作以及不同的机器。这样load一次数据,就能进行屡次读取。


    在使用Alluxio之后,训练工作无需等候数据彻底下载到当地就能开始训练了。训练完结之后,也能够经过Alluxio间接写回到Azure。全部流程十分便利,而且GPU的使用率对比不乱。
    2. Level 2 数据预处置和训练
    接上去看二级弄法。之所以会有二级弄法,次要是由于一级弄法有一些先决前提,要末数据曾经处置好就放在你的存储零碎中,要末你的训练脚本曾经包孕了数据预处置的步骤,数据预处置与训练同时进行。但是咱们发当初得多用户场景中,其实不具备这些前提。


    在得多用户的场景里,他们需求用其它形式来先对数据进行预处置,而后这部份预处置后的数据能力供应训练。好比会用Spark、Flink等大数据ETL工具来进行数据预处置,处置好的数据写到Alluxio,之后由Alluxio供应给训练集群。同时,对这部份数据能够进行备份、减速,来更快地提供应训练集群。


    咱们经过一个详细案例来理解这个流程。
    在BOSS直聘,他们有两个工作,首先是用Spark/Flink来对数据进行预处置,之后再对这部份预处置好的数据进行模型训练。一切的两头后果和最初处置好的数据,都间接耐久化到Ceph上,再由Ceph为模型训练提供数据。把两头处置后果也放到Ceph中,会给Ceph减少得多的压力。低压的模型训练给Ceph形成很大压力。当ETL任务以及训练多的时分,Ceph十分不不乱,总体机能遭到影响。他们的解决方法就是把Alluxio加到Spark/Flink和模型训练之间。


    Spark/Flink把两头后果写到Alluxio之中,由Alluxio来提供应模型训练。Alluxio在面前异步地把这部份数据耐久化到Ceph中,以包管这些预处置好的数据不会丧失。所以无论咱们的数据源是在当地仍是远端,即便数据耐久化的速度对比慢,也不影响咱们的训练流程。而且Alluxio能够是一些独自的集群,假如ETL或training工作多的时分,能够起更多的Alluxio cluster来分担这些工作,也能够对不同的Alluxio集群进行资源调配、读写限额、权限管制等。


    这个流程能够晋升存储零碎的不乱性,同时减速从数据预处置到训练的全部流程,而且能够用更多的Alluxio集群来应答更多的ETL或训练需要。


    咱们发现大家会有不同的数据预处置形式。有些用户用C++、python顺序来进行数据清算、转换等数据预处置。他们使用Alluxio把原始数据从底层存储零碎中加载到Alluxio的缓存内,由Alluxio提供这部份数据预处置的框架,处置好的后果再写回到Alluxio傍边,模型训练就能用这部份预处置好的数据进行训练。
    3. Level 3 数据笼统层
    Alluxio的三级弄法,就是把Alluxio作为全部数据的笼统层。


    全部训练集群,不论它需求的数据源来自何方,来自一些存储零碎,由大数据ETL处置好的数据,或者是C++、python处置好的数据,均可以经过Alluxio进行读缓存,供应给训练。


    另外一方面,一切数据预处置的两头数据,以及训练的两头数据,均可以经过Alluxio进行临时的写缓存。关于数据预处置和训练的后果,咱们也能够经过Alluxio耐久化到不同的存储零碎之中。


    不论大家有甚么样的数据运用,均可以经过Alluxio来对不同的数据源中的数据进行读写操作。


    好比陌陌,有得多Alluxio集群,数千个节点,存储超过100TB的数据,办事于搜寻以及训练工作,他们还在不停地开发新的运用场景。


    陌陌把Alluxio用作一个二十亿的小文件的训练。


    他们使用Alluxio来减速保举零碎模型的加载,以及ANN零碎index的加载。


    总结一下,Alluxio可能在下列这些场景帮忙到你:
    想要进行散布式训练。有少量的数据,可能无奈在当地磁盘残缺地存上去,或者有少量的小文件/小图片。想要经过网络I/O间接去读取数据,但网络I/O机能无奈知足GPU需要。有不同数据源,以及多种不同的训练/计算框架。包管存储零碎的不乱性,防止超越限额的状况。在多个不同的训练工作中进行数据分享。03
    Alluxio POSIX API的开展


    在这里想重点感激一下咱们全部社区。
    Alluxio在AI以及深度学习场景的使用,彻底由社区推进。后来阿里巴巴以及南大团队提出这个需要,咱们一同来解决这个问题。在那之后,来自腾讯、微软、Bilibili、AntFinance的一系列十分优秀的工程师都参加到社区,一同把这个名目做起来,而且把它在出产环境中做扎实。目前全部名目曾经在得多大公司中进行了出产部署。


    最新的2.8版本曾经公布。在2.8版本中解决了在出产训练中发现的一些不乱性以及机能的问题,让大家在各种场景中更好的去使用Alluxio。
    咱们每两周会有一次社区技术交流大会,探讨如何把这个名目做得更好。


    明天的分享就到这里,谢谢大家。
    分享佳宾:邱璐 Alluxio 中心研发工程师
    编纂整顿:Liyao DataFun
    出品平台:DataFunTalk
    01/分享佳宾


    邱璐|Alluxio中心研发工程师
    结业于美国乔治华盛顿大学数据迷信专业,是alluxio开源社区的 PMC maintainer,担任 Alluxio AI/ML 场景的研发工程。以前也担任研发 alluxio 的高可用零碎,日志零碎,和监控零碎。
    02/报名看直播 收费领PPT


    03/对于咱们
    DataFun:专一于大数据、人工智能技术运用的分享与交流。发动于2017年,在北京、上海、深圳、杭州等城市举行超过100+线下和100+线上沙龙、论坛及峰会,已约请超过2000位专家和学者参预分享。其大众号 DataFunTalk 累计出产原创文章700+,百万+浏览,14万+精准粉丝。

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    返回列表 本版积分规则

    :
    注册会员
    :
    论坛短信
    :
    未填写
    :
    未填写
    :
    未填写

    主题25

    帖子36

    积分163

    图文推荐