热门关键词:
首页 综合资讯

脸书开源服务器端推理函式库FBGEMM,以低精度运算加速机器学习推理

导读: 与科学计算中使用的传统线性代数函式库不同,FBGEMM不使用FP32或FP64精度,而是透过降低精度计算以加速深度学习模型。
图片来源: 

脸书

脸书开源特别针对服务器推理进行最佳化的高效能核心函式库FBGEMM,与其他函式库不同的是,FBGEMM最佳化了CPU效能,透过降低精度计算以加速深度学习模型,目前脸书已经在自己的服务中使用了这个函示库,对照于现今的生产基准,带来了两倍的性能提升。

为了让大规模生产服务器有效执行先进的深度学习模型,脸书因而建构了FBGEMM,这是一种低精度、高效能的矩阵相乘以及卷积网络函式库,FBGEMM针对服务器端的推理做了最佳化,在深度学习框架执行量化推理时,能够同时兼顾准确性和效率,让脸书基于CPU的系统,实现比前一代还要快两倍的效能。

脸书把所有低精度推理需要的模组都打包进单一函式库,开发者现在可以透过Caffe2前端来部署FBGEMM,并且在不久的将来,还能透过PyTorch 1.0的Python前端进行呼叫,而FBGEMM与前些时日开源的QNNPACK,同作为支援PyTorch 1.0平台的一部分,全面支援量化推理。

FBGEMM最大的特色在于对低精准度资料的最佳化,与科学计算中使用的传统线性代数函式库不同,FBGEMM不使用FP32或FP64精度,能为小批次提供有效的低精度通用矩阵相乘(GEMM)运算,并且支援精准度损失最小化技术,像是Row-wise量化和异常值感知量化。

FBGEMM已经在脸书中大规模部署,加速了许多端到端的人工智能服务,包括将英文翻译成西班牙文的速度提高了1.3倍,减少了40%推荐系统资讯来源动态内存带宽使用,并为机器学习系统Rosetta加速了2.4倍的字符检测速度。Rosetta是脸书用来理解文字、图片和影片内容的系统,被应用在脸书以及Instagram上的各式使用案例,包括自动识别违反社群规则或是个性化产品服务。

脸书提到,矩阵相乘的运算效率对机器学习来说至关重要,对脸书的资料中心来说,完全连接运算子(Fully connected Operators)是深度学习模型中浮点数运算的大宗。在脸书对自家资料中心进行分析,测量了24小时深度学习推理浮点数运算的分布,完全连接运算子占全部推理浮点数运算的77%。

由于完全连接运算子就是一般的矩阵相乘运算,因此整体效率也就直接取决于矩阵相乘的效率,脸书提到,不少深度学习框架卷积依矩阵相乘运算实作为im2col,因为高效能运算领域中的线性代数函式库,提供了高效能的矩阵相乘运算实作,但是im2col输入资料的副本与复制动作,带来了额外的成本,所以不少深度学习函式库也实做了无im2col的卷积来提高效率。

而脸书提供了融合im2col和主要矩阵相乘运算核心的方法,以最大程度降低im2col带来的额外成本,脸书提到,高效能矩阵相乘运算核心是一个重要的关键,通常在深度学习的高效能运算函式库供给和需求都存在错误配对,高效能运算函式库通常不支援有效率的量化矩阵相乘相关运算,也没有针对深度学习推理中常见的矩阵形状以及大小进行最佳化。

深度学习模型通常使用FP32资料类型来表达活跃度和权重,但使用具有混合精度资料类型的计算,通常更加有效率,脸书表示,最近的研究也都显示,使用混合精度的推理,并不会对精确度产生不利的影响,FBGEMM透过这种替代性策略,加上量化模型来提高推理效能。

新一代的GPU、CPU和专用张量处理器,本身都支援低精度算子,像是Nvidia张量核心中支援FP16和INT8,还有Google处理器也支援INT8,脸书提到,深度学习社群正往低精度模型发展,这也代表量化推理是正确的方向,而FBGEMM提供当前和下一代CPU,一种有效执行量化推理的方法。