Fluid 是云原生基金会 CNCF 下的云原生数据编排和加速项目,由南京大学、阿里云及 Alluxio 社区联合发起并开源。本文主要介绍云知声 Atlas 超算平台基于 Fluid + Alluxio 的计算加速实践,以及 Fluid 是如何为 Atlas 带来全新的数据集管理方式的。
Atlas平台介绍
云知声是一家专注物联网人工智能服务公司。云知声的 AI 技术栈涵盖了信号、语音、图像、文本的感知和表达能力,知识、理解、分析、决策等认知技术,并朝着多模态人工智能系统方向发展。云知声 Atlas 超算平台作为底层基础架构,支持着公司在 AI 各个领域的模型训练与推理服务的开展。云知声很早就开始布局建设业界领先的 GPU/CPU 异构 Atlas 计算平台和分布式文件存储系统,该计算集群可为 AI 计算提供高性能计算和海量数据的存储访问能力。
云知声团队基于 Kubernetes 开源架构之上,进行了相应的核心功能研发,成功构建了浮点处理能力超过10 PFLOPS(一亿亿次/秒)的 AI 超级计算服务平台。该平台支持主流机器学习架构,开发者能够实现语音、语言、大数据、多模态等核心技术的高效研发。平台也开放了相应的算力与存储,为中小微企业和院校机构提供定制化计算服务。
问题与挑战
Atlas 计算平台采用是计算与存储分离的架构,目前整个平台的存储服务器、计算服务器之间以及计算与存储服务器之间的底层网络架构是由 100GB 的 InfiniBand 进行互联。
计算平台的模型训练数据存储系统由多套 PB 量级的高性能分布式文件系统 Lustre 组成。Lustre 分布式文件系统兼容 POSIX 接口,多种深度学习框架能够直接进行数据读取。计算与存储分离的架构使计算跟存储能够独立进行扩容,整体架构较为灵活。但是之前平台也遇到了数据访问效率低与底层存储带宽瓶颈等问题:
存储宽带瓶颈
在存储资源相对固定的情况下,随着平台用户的增加,其带宽、元数据负载以及服务器的负载都呈现出来较大的上升。集群存在多个单机任务运行在同一个 GPU 节点,造成 IO 资源的竞争,由于 IO 的竞争导致了整个训练周期拉长了,大大降低了研发影响效率。
海量小文件
第二个问题是模型训练数据集本身的特点问题。在降噪场景中有用户的任务存在接近 TB 量级的小文件,导致底层分布式文件系统的的元数据服务压力很大。大量的小文件使得程序本身读数据的效率较低,数据读取缓慢造成 GPU 大部分时间在等数据,整体 GPU 的整体利用率较低,延长了模型的训练周期。
数据种类多
由于平台支持的业务类型较广,用户的数据类型较多,文件大小类型也不同,很难通过调优一套存储的参数来适配多种业务类型。结合用户的业务类型分析,我们发现平台数据主要还是用来做模型训练占的比重比较大,其余部分主要进行模型的推理与 CPU 密集型数据生成任务。
数据冗余
在平台中存在数据集重叠的问题,同一个组内或者不同组有使用到相同的数据集,但是却存储了多份,造成了存储空间的浪费。
早期解决方案
如何通过最小的预算与架构改动来应对存储总带宽的瓶颈以及减少元数据服务器的压力,云知声 Atlas 也进行一系列的探索与研发。