星方案|StarFS并行文件系统加速深度学习研究

概述

深度学习是人工智能领域的一个新概念,在2006年由Hinton等人提出。深度学习通过建立模拟人脑进行分析的神经网络达到学习的目的,由于深度学习在语音识别、目标检测和计算机视觉等诸多领域相比于传统的机器学习方法有着突破性的进展,所以深度学习技术在学术界和工业界越来越火热。

 

如今深度学习已经成为机器学习领域最具前景的方向之一,并且在语音、视觉、文本等多个方面取得了突破性的成果。深度学习与传统的神经网络最大的区别在于,它并不使用较“浅”,而是选择非常深的网络结构。这些非线性的神经元经过恰当的训练后,能够表示数据中极为复杂的特征,从而达到良好的识别或者分类效果。

挑战

由于高性能计算技术的发展,使得相比神经网络计算量更大的深度学习,能够在可以接受的时间内完成可以使用的深度学习模型。

深度学习常用的学习工具有:Caffee、MxNet、TensorFlow、Torch等,这些软件在训练算法时,同时兼具计算密集型和I/O密集型两个特点,深度学习算法对于速度和规模的需求是相互促进的。为了达到更好的分类和识别效果,我们需要更多高质量的特征。这导致了深层神经网络模型往往具有大量的模型参数,非常复杂的特征抽取层,以及非常深的层次结构。大量的模型参数反过来对数据规模又提出了更高的要求以避免出现过拟合的问题(过拟合问题是指模型参数对训练数据拟合度非常高,但在测试数据上则没有很好效果)。

针对上述分析,对于并行文件系统深度学习场景对于存储的要求总结如下:

 

                                                     为什么选择StarFS?

出众的性能

StarFS是一个性能为中心,围绕简单易用、易安装以及易管理而设计的领先并行文件系统。StarFS不断地发展和持续优化赢得了广大用户的信赖。

 

                                                                                 图1StarFS架构图

针对海量小文件高吞吐率、高效检索技术

深度学习场景具有很多图片和文件参与模型的训练,这些大量的图片和文档大小都比较小,一般都在10M以下并且数量巨大,大的模型甚至有上百万个文件。

目前,存储市场上大部分的存储系统在海量小文件的应用模式下,都存在吞吐率低,检索慢的问题。这个问题的本质原因是整个存储系统处理元数据的效率所导致的。由于目前绝大多数存储系统都是采用单一元数据服务器架构,虽然部分存储系统有两个元数据服务器,但是系统正常情况下只有一个元数据服务器提供服务功能,另一个处于standby状态,因此,当整个存储系统的文件数量达到一定规模时,检索文件的效率变得极其低下,从而导致小文件吞吐率低。

StarFS现有的多元数据服务器集群技术的基础上,结合高性能计算应用文件创建、访问以及目录结构特点,研制了多元数据服务器集群技术,在一套存储系统中可以根据用户生产系统中实际产生文件数量的规模对元数据服务器集群进行动态配置,整个存储系统中所有的元数据服务器同时参与文件的检索和定位工作,消除存储系统中元数据通道的瓶颈,同时还可以根据后续应用特点的变化和需求的增强,做到在线扩展元数据服务器,并且达到即插即用的效果。

同时StarFS充分利用SSD的高IOPS特点,设计了SSD动态缓存技术,提升文件系统在海量小文件场景的IOPS/OPS。

面向多用户环境的增强型权限管理技术

很多深度学习的计算平台是一个多用户共享平台(比如高校用户),每天都有很多用户在计算平台上面运行不同的任务,整个存储系统也需要保证各个用户之间的任务相互独立、数据安全高可用。因此,传统的基于操作系统用户权限的管理技术无法完全满足计算平台的需求。在新研制的存储系统中拟提供增强型权限管理技术,除了兼容原有基于操作系统用户的权限管理之外,还增加了自身所特有的增强型权限管理技术,通过存储系统的后端管理平台直接为某个目录指定哪些用户、或者哪些应用服务器能够访问,哪些目录禁止用户删除、修改等。

深度学习的常用软件中,普遍采用了MPI,OpenMPI等技术来进行并发的计算来加速整个模式的训练。这对并行文件系统要求具有支持字节锁的能力。

普通的本地文件系统只提供文件粒度的锁,文件粒度的锁在文件这一级别上限制了并发,导致很多只是修改文件不同部分的进程或者线程也不能同时修改。而在很多高性能计算应用场景中,文件粒度锁限制了高并发,因为很多场景只是修改文件的一个部分,修改文件不同部分之间的进程或者线程理论上是可以同时进行的,但是文件粒度锁无法有效解决。

为了可以在文件内部可以进行并发读写,StarFS并行文件系统系统提供了字节粒度锁。这样加锁的粒度能够达到字节,修改同一个文件不同部分就可以并行执行,从而提高了同一个文件的IO性能。

面向高性能计算的智能数据缓存技术

高效的数据缓存技术能够帮助存储系统发挥更好的性能,提高计算任务的效率。StarFS采用l多级智能数据缓存技术来实现高效缓存。

首先,通过应用服务器上自主研发客户端内核模块,分析应用访问数据的特点,采用特定的缓存算法在应用服务器上有效缓存应用的访问数据;其次,将所有存储服务器的内存集合起来形成一个大的缓存池,通过存储服务器上独特的缓存算法缓存不同应用访问的数据;最后,将所有元数据服务器的内存集合起来形成一个高效的元数据缓存池,通过复杂的元数据淘汰算法来缓存元数据信息。通过这样多级数据的缓存技术,会使得整个存储系统的性能能够得到大幅提高。