我是做HPC的,Tensor Core在HPC中由于精度问题不专门使用就会浪费,那么,有没有办法把它利用上呢?比如,通过算法将FP32的矩阵运算分解为多个FP16的Tensor Core运算? 并不是Tensor Core在HPC应用里面,因为精度的关系用不上就是浪费,不管是FP64的Tensor Core还是更低精度的Tensor Core,有一些是直接就可以用起来,像64位的矩阵乘,如果HPC应用里面有大量的double矩阵乘,直接就可以获得很好的加速,精度也不会有任何的影响。甚至很多的HPC任务里面,用更低的精度做一些前期的快速迭代,之前应该是有很多的研究的文章,并不是Tensor Core在HPC应用里才能用起来,其实有很多的应用。另外也不能简简 阅读全文 → 2022-10-13
不同深度模型的混合精度策略如何确定?有没有自动化方法? 蓝海大脑高性能液冷工作站事业部杨博士表示:主要的问题是策略如何确定,在图改写的维度主要基于规则和底层硬件的特性来制定一个合理的规则,对于loss-scale策略是基于auto loss-scaling的自动化控制策略。可能会有更多维度的精度,比如INT8,INT4,这个控制我们团队有一些已经发布的,也有正在研究的一些结果,会去控制混合精度策略,类似于哪个layer选择什么精度才是合理的,会有一些auto的概念。 阅读全文 → 2022-10-13
如何应对不同批次之间的差异,这部分的差异又是未知的。请问只能通过数据增强去增强鲁棒性?有什么好的数据增强方法吗? 蓝海大脑深度学习液冷服务器事业部杨博士表示:关于批次差异,这部分差异其实基本不会特别大,我们会拿到用户的bom清单,或者把前期识别出来的各类bom做虚拟表单,然后数据增强来做增广处理,效果还是蛮不错的。先从图像采集端消弭不同批次间成像差异的问题,我们实际做的例子有建筑材料中的管材,管材有不同的颜色和材质,我们通过对采集端相机的调整,做自动的曝光,可以得到不同批次之间比较均一的图像,如果这种方式也解决不了,可以采用数据增强的方式。 阅读全文 → 2022-10-13
自动混合精度训练,如何选择自动化的参数?其效果的评估标准是什么? 蓝海大脑高性能液冷服务器事业部研究人员表示:混合精度的概念在于FP16和FP32的混合,利用TensorCore进行加速,这里面的基本原则是一样的,只是在图改写时,自动改写是基于规则,希望在图改写的情况下性能最优,所以在图改写的维度下是没有自动化超参的。对于训练过程中的超参,主要是一个维度,即loss-scale参数怎么超参,这个参数的选择涉及到auto loss-scale的概念,基本原则是提出一个反馈方式,来选择scale应该是变大还是变小。对于评估的标准,因为自动混合训练最担心的一个问题是精度是否下 阅读全文 → 2022-10-13
在用GPU做CFD的时候发现,同样的结构网格(比如把一块结构网格剖分成很多块),网格分区增加时,GPU加速迅速降低——这个可能是多种因素的结果,但其中是否意味着kernel的调度开销其实也挺大? 从描述上来说,看起来用到的kernel数目并不多,到现在为止,只在一些网络甚至神经网络相关的一些博客里面看到有大量的小的up操作,当kernel数目调度非常大时,kernel调度可能会变成一个问题,但是若针对一个kernel或者说几个kernel,kernel调度的开销基本上可以忽略,它并不是解决问题规模特别大,调度的开销就越大,所以我认为更有可能是当规模变大之后,特别是cash的行为可能发生很大的变化,这可能是其中一个原因。但是总体上来说,更有可能是代码层面的 阅读全文 → 2022-10-12
NVIDIA的Tensor内核支不支持不同的数据维度存储顺序? 蓝海大脑人工智能液冷服务器事业部负责人指出:当前对Tensor Core来说,比较底层的可以通过WMMA的API进行使用,这里支持两种不同矩阵的存储格式。另外,还可以通过cuBLAS和cuDNN。如果问题是指卷积的数据维度,那么在cuDNN里边的卷积层的API是支持两种不同的HWC以及NCHW的,这两种不同的数据维度的存储顺序目前是都支持的。 阅读全文 → 2022-10-12