自网易云音乐机器学习平台上线以来,承担着音乐内部推荐、搜索、直播、社交、算法工程等各个业务团队机器学习场景的需求, 这其中也遇到了很大的挑战,尤其是在分布式存储这块上,花费大量时间、精力,解决其中的核心问题。本文是网易数帆存储团队与网易云音乐机器学习平台与框架团队联合创作,向各位看官描述,在机器学习场景,如何利用Ceph作为统一化的分布式存储,并基于此进行的相关的优化。
一、业务背景
随着互联网业务的飞速发展,大数据场景下的数据挖掘、算法模型,为业务发展提供精准的个性化能力,在这个过程中,ML Infrastructure再度被人提起,以支持数以千亿计的个性化请求。其中,分布式存储在ML Infrastructure充当十分重要的角色,并且在不同场景中,为保证ML Infrasturecture的顺畅运行,面临不同挑战。
以网易云音乐(以下简称云音乐)为例,考虑到算法业务飞速发展,我们在2019年开始筹建的Goblin机器学习平台以降本增效为目标,整合了公司的相关资源,通过引入K8s系统提供弹性计算能力,引入CephFS提供共享分布式存储,为各部门的业务工程师们提供统一的ML Infrastructure。我们基于CephFS实现核心功能如下:
为开发环境提供弹性存储。算法、工程人员在计算平台上申请存储资源存储代码、模型、训练样本,同时可以将相同的卷挂载到调试环境进行调试,而无需数据拷贝;特别是分布式开发调试,在引入CephFS之前,模型调试,特别是分布式训练的调试是十分痛苦的,需要将模型、样本数据分发到不同机器,训练结束还需要从各个开发机上将日志,模型等收集到开发机进行分析;引入CephFS之后,只需要为分布式训练任务挂载相同的数据卷,就可以直接进行调试,而训练过程中产生的日志、模型在开发机上都是即时可见的,这极大节省调试时间;
简化数据治理。在模型开发流程中,有很大一部分时间在进行数据治理;比如大量视频进行抽帧;引入CephFS,可以将这些治理好的数据,直接作为数据卷挂载到训练任务,避免了繁琐的数据分发流程,并可以实现数据治理和训练分离,并行处理;
极大简化调度系统。在ML Pipeline中,算法人员在模型开发调试结束后,可以直接将模型所在数据卷配置到调度系统进行调度,极大简化模型上线流程。
二、痛点分析
CephFS为机器学习平台提供了弹性的、可共享的、支持多读多写的存储系统,但开源CephFS在性能和安全性上还不能完全满足真实场景需求:
数据安全性是机器学习平台重中之重功能,虽然CephFS支持多副本存储,但当出现误删等行为时,CephFS就无能为力了;为防止此类事故发生,要求CephFS有回收站功能;
集群有大量存储服务器,如果这些服务器均采用纯机械盘,那么性能可能不太够,如果均采用纯SSD,那么成本可能会比较高,因此期望使用SSD做日志