深度 软硬兼施:英特尔开发者论坛上都谈
选自Intl 机器之心编译 参与:吴攀、杜夏德、李亚洲 当地时间8月16-18日,英特尔正在美国旧金山举办其年度开发者论坛(IDF:IntlDvloprForum)。论坛的第一天,英特尔就谈到了「融合现实(mrgdrality)」、自动驾驶、智慧城市、物联网等各方面布局和技术。机器之心在本文中对英特尔今天谈到的一些机器学习方面的内容进行了盘点,内容涵盖英特尔的机器学习硬件、软件、整体架构和长期规划。本文涵盖的PPT原文件可点击文后「阅读原文」下载。 本文目录: 一、FPGA的压缩应用 二、英特尔架构上的深度学习框架和优化路径 三、英特尔XonPhi如何并行化神经网络(xNNs) 四、在ApachSpark上加速机器学习 五、在ApachSpark上为分布式学习建立端到端通道 一、FPGA的压缩应用 演讲者:SuchitSubhaschandra 二、英特尔架构上的深度学习框架和优化路径 演讲者: AndrsRodriguz–解决方案架构师,英特尔数据中心组 RaviPanchumarthy–系统工程师,英特尔数据中心组 ElvisJons–解决方案架构师,AmazonWbSrvics 演讲流程: 深度学习和框架概览 英特尔MathKrnlLibrary(MKL)和MKL-DNN中的优化 英特尔在AmazonWbSrvics(AWS)上优化过的框架 深度学习和框架概览 P3-P12介绍了深度学习可以完成的多种任务,包括: 分类:给图片做标签 检测:检测和标注物体 语义分割:标注每个像素 自然语言目标检索:比如查询图片中「右边的人」 视觉和文本问答 视觉运动控制 语音检测:比如英语和汉语普通话语音检测可以使用同样的架构 问答自然语言理解 个人助理:Siri、AmazonEcho、Cortana、GooglNow等 P13:深度学习工具 深度学习的顶级框架包括:Caff、DL4J、TnsorFlow、Torch、MXNET、H2O.ai、Spark、Thano等等 深度学习编程语言包括:Python、C/C++、R、Go、Lua等等 英特尔MathKrnlLibrary(MKL)和MKL-DNN中的优化 P15:深度学习的多样化 网络有多种拓扑结构:常用于NLP/ASR的循环神经网络、GoogLNt的DAG、记忆网络…… 但也有一些定义良好的构造模块:常用于图像识别任务的卷积模块、用于循环网络层(可能是稀疏的)的GEMM、RLU、tanh、softmax P16:英特尔MathKrnl库(MKL) 优化过的AVX-2和AVX-指令 英特尔Xon和XonPhi处理器 支持所有常见类型的层 即将到来:基于Winograd的卷积 P17:英特尔深度学习软件堆 P18:最基本的卷积 P19:对缓存友好的卷积 P20:为英特尔架构优化过的Caff 保留了BVLCCaff的所有优点,另外还整合了英特尔MKL,还支持多节点分布式训练 英特尔在AmazonWbSrvics(AWS)上优化过的框架 AWS在高性能计算上有很多优势,包括价格灵活、速度快等等。本幻灯片的21-48页介绍了英特尔在亚马逊AWS上优化框架的步骤和工具。 三、英特尔XonPhi如何并行化神经网络(xNNs) 演讲者:英特尔研究科学家NadathurSatish 演讲流程: 1.来自HPC(高性能计算)的经验:并行架构的代码现代化 2.深度学习/机器学习介绍 3.在英特尔XonPhi处理器上加速深度学习 介绍英特尔XonPhi 为深度学习优化构造块 卷积 GEMMs 4.总结 P4:HPC的收敛性和机器学习 传统(HPC) 新兴(机器学习) 都需要大量的计算。 P5-P7:深度学习 P8:深度网络的多样化 网络有多种拓扑结构:常用于NLP/ASR的循环神经网络、GoogLNt的DAG、记忆网络…… 但也有一些定义良好的构造模块:常用于图像识别任务的卷积模块、用于循环网络层(可能是稀疏的)的GEMM、RLU、tanh、softmax P9:深度学习概览 应用:图像理解、视频摘要、语音/NLP理解 框架:Caff、Thano、Torch、TnsorFlow、其他 神经网络拓扑结构:卷积神经网络、循环神经网络、长短记忆网络、强化学习 构造块:SGEMM、Convolution、FFT/Winograd、SSSP/Astar、SpGEMM 架构:英特尔Xon、英特尔XonPhi、FPGA、Fabric、MmoryHBM/NVM P11:英特尔XonPhi处理器:让训练时间更短 突破高度并行性能: 每个插槽速度上升到6SGEMMTFLOPs。 1.38倍更好的扩展效率,多节点的训练需要更少的时间。 消除插入板PCI卸载瓶颈和利用上的限制。 通过集成移除障碍: 集成的英特尔Omni-Path构造(双端口;50GB/s)增加了性价比,降低了深度神经网络的通信延迟。 更好的可编程性: 与英特尔Xon处理器二进制兼容 开放的标准、库和框架 P12:英特尔XonPhi主要的架构特性 P13:在英特尔XonPhi上执行并行的关键 显露应用并行: 架构有很多的并行 能使用OpnMP(#pragmaompparalll,#pragmaompsimd)表示并行 没有万能方法,需要理解应用 P14:使用缓存改进带宽和延迟特性 主要优化策略:blocking/tiling,prftching(模块化,预抓取) P16:神经网络中的卷积 P17-P23:讲解了一个卷积层中的计算 输入图像→内核/过滤器→输出图像 P24:一个卷积层中的计算 大量的并行 P25:需要一个独立的优化实施 P26:一张图片/输入的最基本的卷积回路 在AVX-中,使用混合乘-加指令 P27:最基本的回路带宽限制 需要对回路模块化 P28:缓存模块化 将3D点积分解成更小的点积序列 在一个时间点上计算部分输出 P29-P32:向量化和数据布局 问题:数据布局通常是特定时间点的特征映射——聚集、较差的预取表现。 解决方案:布局输入、输出、权重以在S=SIMD宽度特征映射组上获取带有内部维度的SOA结构 P33-P35:Thrading和工作分割 如果可用,使用独立图像的minibatch。如果minibatch=1怎么办? 在线程之间分割输出空间(输出像素、输出特征映射) 已经使用了一些并行进行blocking、unrolling(模块化、展开) P36:额外的优化 展开回路从而展现指令级的并行 为Krnls增加软件预取支持 可能要为指定卷基层调整策略(如果输出特征数量太小,难以向量化怎么办,等等) JIT方法:能使用Just-in-Tim(即时)汇编方法进行专门化 P37:在英特尔XonPhi 1.2GHz上的结果上表:单核,minibatch大小:,内部卷积 下表:64核,minibatch大小:,内部卷积 P38:在英特尔XonPhi上的结果,pakwrt.1.4GHz,6.1TFLOPS,SGEMM:~4.5TFLOPS P40:GEMMs有偏斜外形(skwdshaps) 关键特性: minibatch维度通常较小(64/) 其它维度大约有个 P41:优化小型SGEMMs 为什么不使用标准的BLAS库 为HPC设计的BLAS库——大型矩阵,以行/列为主 为了内存访问的效率,在运行过程中进行数据架构分块:在BLAS库中的副本开销(ovrhad)牺牲了小矩阵的性能 使用分块数据布局(类似于优化过的卷积),而且在块级上使用细粒性并行 P42:GEMM使用案例:RNN P43:英特尔MKL引进了CNNprimitivs 为卷积和深度神经网络优化基本操作 这些在XonE5-v4上能带来12倍的提升 利用XonPhi的更多的计算资源 P45-46:总结以及下一步 深度学习krnls的表现从HPC类型的性能优化上获益良多 线程化、向量化、模块化和数据布局改变是在高度并行架构上进行性能优化的关键 通过进行这些优化,能得到12倍的性能差异 将你的知识应用到其他krnl上,Winograd、FFT,或者深度学习中最新进展上。 四、在ApachSpark上加速机器学习 演讲者: RadhikaRangarajan:英特尔集团高级项目经理 YuhaoYang:英特尔集团软件工程师 演讲流程: 机器学习和英特尔所治愈白癜风光疗费用北京儿童医院白癜风
|