应用AI芯片加速 Hadoop 3.0 纠删码的计算性能

本文由云+社区发表算法

作为大数据生态系统中最重要的底层存储文件系统HDFS,为了保证系统的可靠性,HDFS经过多副本的冗余来防止数据的丢失。一般,HDFS中每一份数据都设置两个副本,这也使得存储利用率仅为1/3,每TB数据都须要占用3TB的存储空间。随着数据量的增加,复制的代价也变得愈来愈明显:传统的3份复制至关于增长了200%的存储开销,给存储空间和网络带宽带来了很大的压力。所以,在保证可靠性的前提下如何提升存储利用率已成为当前HDFS应用的主要问题之一。网络

针对这些问题,英特尔、Cloudera、华为以及其余的Apache Hadoop communit共同参与开始引入纠删码(Erasure Coding,EC)技术,在保证数据可靠性的同时大幅下降存储开销,节省2倍的存储空间。该feature计划在Hadoop3.0版本发布。架构

什么是纠删码 EC

Erasure coding纠删码技术简称EC,是一种数据保护技术。最先用于通讯行业中数据传输中的数据恢复,是一种编码容错技术。他经过在原始数据中加入新的校验数据,使得各个部分的数据产生关联性。在必定范围的数据出错状况下,经过纠删码技术均可以进行恢复。框架

在存储系统中,纠删码技术主要是经过利用纠删码算法将原始的数据进行编码获得校验,并将数据和校验一并存储起来,以达到容错的目的。其基本思想是将k块原始的数据元素经过必定的编码计算,获得m块校验元素。对于这k+m块元素,当其中任意的m块元素出错(包括数据和校验出错),都可以经过对应的重构算法恢复出原来的k块数据。生成校验的过程被成为编码(encoding),恢复丢失数据块的过程被称为解码(decoding)。oop

Reed-Solomon(RS)码是存储系统较为经常使用的一种纠删码,它有两个参数k和m,记为RS(k,m)。如图1所示,k个数据块组成一个向量被乘上一个生成矩阵(Generator Matrix)GT从而获得一个码字(codeword)向量,该向量由k个数据块和m个校验块构成。若是一个数据块丢失,能够用(GT)-1乘以码字向量来恢复出丢失的数据块。RS(k,m)最多可容忍m个块(包括数据块和校验块)丢失。布局

imgEC性能

HDFS引入EC码的优点和劣势

优点

EC码的优点是显而易见的,能够大幅度的下降数据的存储空间。特别是PB、EB级的场景下,会极大的削减存储的成本。学习

劣势

EC技术的优点确实明显,可是他的使用也是须要一些代价的,一旦数据须要恢复,他会形成两大资源的消耗:fetch

网络带宽消耗(数据恢复须要去读其余的数据块和校验块),CPU消耗(编解码计算)。大数据

GPU、TPU加速纠删码的运算

从上面的EC码优缺点对比能够看出,虽然EC码能够大幅的节省空间,可是由于在存储和恢复的过程当中须要额外的运算。用在线上系统的时候,一旦有节点挂掉触发数据恢复,计算量是比较大的,可能会对集群的总体性能形成影响,拖慢正常的计算任务。

在上面的介绍中咱们看到,EC码的计算实际上就是矩阵相乘的计算,而目前AI业界最火热的神经网络的计算也是当量的矩阵相乘相加。由此咱们能够大胆的想象,是否能够利用目前GPU和TPU对矩阵运算的优化,来加速EC码的计算性能呢?

目前业界比较领先的两个AI计算加速芯片分别为NVIDIA的Volta GPU架构和Google的TPU。

对于纯矩阵相加相乘的运算,GPU或TPU相比于CPU,性能的提高能够达到50~80倍。

NVIDIA

NVIDIA的Tesla V100提供了120个专门用于矩阵运算的Tensor Core。每一个 Tensor Core 包含一个 4x4x4 的矩阵处理阵列来完成 D=A x B + C 的运算,其中 A、B、C、D 是 4×4 的矩阵,以下图所示。矩阵相乘的输入 A 和 B 是 FP16 矩阵,相加矩阵 C 和 D 多是 FP16 矩阵或 FP32 矩阵。

imgTensor Core

每一个 Tensor Core 每一个时钟可执行 64 次浮点 FMA 混合精度运算(FP16 乘法与 FP32 累加),一个 SM 单元中的 8 个 Tensor Core 每一个时钟可执行共计 1024 次浮点运算。相比于使用标准 FP32 计算的 Pascal GP100 而言,单个 SM 下的每一个深度学习应用的吞吐量提高了 8 倍,因此这最终使得 Volta V100 GPU 相比于 Pascal P100 GPU 的吞吐量一共提高了 12 倍。Tensor Core 在与 FP32 累加结合后的 FP16 输入数据之上操做。FP16 的乘法获得了一个全精度结果,该结果在 FP32 和其余给定的 4x4x4 矩阵乘法点积的乘积运算之中进行累加。

img

TPU

TPU是Google为TensorFlow定制化的AI加速芯片。这个TPU芯片是面向datacenter inference应用。它的核心是由65,536个8-bit MAC组成的矩阵乘法单元(matrix multiply unit),峰值能够达到92 TeraOps/second (TOPS) 。有一个很大的片上存储器,一共28 MiB。它能够支持MLP,CNN和LSTM这些常见的NN网络,而且支持TensorFLow框架。摘要里面还能够看出,传统CPU和GPU使用的技术(caches, out-of-order execution, multithreading, multiprocessing, prefetching)它都没用,缘由是它面向的应用都是deterministic execution model,这也是它能够实现高效的缘由。它的平均性能(TOPS)能够达到CPU和GPU的15到30倍,能耗效率(TOPS/W)能到30到80倍。若是使用GPU的DDR5 memory,这两个数值能够达到大约GPU的70倍和CPU的200倍。

imgTPU

前景分析

因为HDFS的内部逻辑已然十分复杂,社区对于HDFS EC码的改造须要分几个步奏来实现:

  1. 用户能够读和写一个条形布局(Striping Layout)的文件;若是该文件的一个块丢失,后台可以检查出并恢复;若是在读的过程当中发现数据丢失,可以当即解码出丢失的数据从而不影响读操做。
  2. 支持将一个多备份模式(HDFS原有模式)的文件转换成连续布局(Contiguous Layout),以及从连续布局转换成多备份模式。
  3. 编码器将做为插件,用户可指定文件所使用的编码器。

编码器能够做为独立的插件,从而能够将使用AI加速硬件的编码器做为独立的插件,分发到有GPU或TPU硬件资源的集群中。特别是Hadoop 3.0的yarn组件目前也在也k8s深度整合,作一些GPU硬件资源的调度和管理。

此文已由做者受权腾讯云+社区在各渠道发布

获取更多新鲜技术干货,能够关注咱们腾讯云技术社区-云加社区官方号及知乎机构号

相关文章
相关标签/搜索