《【Shopee】Alluxio在Shopee加速AI场景的应用.pdf》由会员分享,可在线阅读,更多相关《【Shopee】Alluxio在Shopee加速AI场景的应用.pdf(25页珍藏版)》请在三个皮匠报告上搜索。
1、Alluxio在Shopee加速AI场景的应用孙颢宁Shopee|Data Infra目录 Shopee AI 平台的发展与现状 Alluxio助力 AI 平台 Alluxio加速 AI 实践 未来规划Shopee AI 平台的发展与现状PART 1不同业务部门各自购买云服务进行训练,资源利用率低;构建AI平台的背景不同业务部门使用互不关联的工具和系统,影响了部门之间的协作和工作效率。AI平台涵盖了整个人工智能生命周期,包括数据集管理、模型训练、评估和部署,为人工智能生产提供了专业、便捷的环境。AI 平台的架构性能问题,目前gpu的模型训练速度越来越快,IO速度与gpu的训练速度不匹配,会严重
2、影响模型训练的效率。使用Alluxio可对数据进行预热,加速训练;为什么选择AlluxioAlluxio-FUSE支持POSIX协议,操作文件更便捷;Fluid开箱即用,基于K8S提供灵活部署Alluxio集群的能力。Alluxio助力AI平台PART 2存储服务化,提供FUSE和S3两种便捷的访问方式;提供Forward System,方便跨集群访问数据;加速Presto查询,减少带宽占用;加速AI训练。Alluxio服务架构AI训练的工作流程准备数据模型选择模型训练模型评估模型部署模型维护FetchCleanPrepareTrainmodelEvaluatemodelDeploy mode
3、lMonitor/collect data/evaluateAlluxio加速AI训练架构DI Alluxio集群与AI平台位于不同的机房;AI平台通过S3接口导入数据到Ceph中,然后挂载到使用Fluid创建的Alluxio集群;在K8S启动的Alluxio集群中预加载全部数据;通过FUSE读取数据,进行训练。Alluxio加速AI实践PART 3原方式:用户申请挂载,管理员审批挂载;Migrate data 开放挂载接口现方式:管理员创建规则,用户自动挂载,检查器根据规则判断。AI平台通过S3接口导入HDFS数据到Ceph,Alluxio需要申请挂载的方式不适合平台对接。在保障HDFS数据
4、安全的前提下,自动挂载的方式使AI平台的服务流程自动化。Load metadata新方式 回放snapshot文件在将数据集导入到Ceph时将文件的元数据(path和size)保存到一个snapshot文件中;启动Alluxio master时即加载snapshot文件到本地并进行缓存;load metadata时直接将缓存的元数据适配成listObject所需的格式。测试100w文件的数据集,load metadata效率提高了100%,避免向Ceph发送大量的listObject请求。Ceph处理listObject请求会将bucket全部扫描一遍,通过prefix来匹配,大量请求导致Ce
5、ph故障。Load data S3的读放大问题Load显示的throughput明显小于几个worker节点流量的总和。Load data S3的读放大问题rangebytes from cephbytes to worker(0)24k8k(8k)16k8k(16k)8k8krangebytes from cephbytes to worker(0,8k)8k8k(8k,16k)8k8k(16k,24k)8k8kS3AInputstream在openStream时range只设置startPosition,导致读了更多的数据。借鉴了Dora版本中rangeRead的实现来修复2.x的读放大问
6、题。解决S3的读放大问题,测试带宽占用峰值降低了70%,同时读效率提高了近100%。Load data 数据未完全缓存worker总的容量大于总数据量,空间并没有被完全使用,且数据未被完全缓存。scheduler向worker发送任务不考虑容量,容量满的worker也会被分配任务,此时就会驱逐部分数据来缓存新的数据。可能导致在训练过程中数据缓存率越来越低。Load data 数据未完全缓存按照batch来分配任务,所有worker容量不足时按block来分配,整体容量不足时则允许evict发生;load过程中与worker失去连接则将任务转移给其他worker节点。在load data指令中加
7、入task-plan选项,scheduler在发布任务前会根据worker容量来分配block;Load data预分配可在worker容量充足时保证数据被100%加载到worker,避免了训练过程中数据缓存率越来越低的问题,从而提高客户端的读性能。计算任务分配与发送任务的并行化;Load data 加速loadLoad data前计算任务的分配会占用时间和内存。已提前加载metadata,添加option设置不检查元数据,即disableAreDescendantsLoadedCheck为false。测试千万级文件加速load的效果,load data的throughput提高了80%。Tr
8、aining data FUSE并发读性能下降任务所使用的dataset库每次只读取4K字节;libfuse 的page cache与文件描述符有关,而 Alluxio-FUSE会为并发读取同一文件的不同线程使用不同的文件描述符。线程数耗时(s)118466线程数耗时(s)118419为Alluxio-FUSE添加内存缓存,预加载数据(#17636);并发读使用相同的文件描述符,充分利用缓存(#17731)。在测试4线程并发访问时,读性能可提高260%。解决了多线程并发读引起的性能下降问题。未来规划PART 4AI平台没有提供统一访问HDFS/S3的方式,用户自己配置环境繁琐且重复,稳定性没有
9、保障。AI平台提供统一的数据处理模块访问方式简单快捷;AI平台统一维护,保障服务稳定。AI 平台接入Alluxio单集群读写带宽限制有了数据处理模块,AI平台和HDFS之间的数据流通会越来越频繁,这部分流量需要管控起来,防止占用过多的带宽资源。在Master端配置带宽限制的策略;Master通过心跳机制来为每个Worker分配throughput的限制;可通过fsadmin指令来获取/更新集群的throughput值;满足了数据处理模块对调整总体带宽的需求。升级Alluxio到Dora架构Dora架构在保障集群稳定性、扩大集群规模、提升集群性能上有很大的改进,我们正在进行调研测试。THANKS