相关文章推荐
气宇轩昂的铁链  ·  PHP 很有用的一个函数 ...·  1 年前    · 
从未表白的小蝌蚪  ·  Java面试葵花宝典打印版【6】-腾讯云开发 ...·  2 年前    · 
高兴的硬币  ·  淘宝开放平台 - 文档中心·  2 年前    · 
强健的回锅肉  ·  Practice - 在 Swift ...·  2 年前    · 
大气的伏特加  ·  c#中dateTimePicker怎么获取当 ...·  2 年前    · 
Code  ›  如何在GPU上设计高性能的神经网络开发者社区
机器学习 矩阵 矩阵乘法 神经网络
https://cloud.tencent.com/developer/article/1662861
聪明的领结
1 年前
deephub

如何在GPU上设计高性能的神经网络

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
deephub
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 如何在GPU上设计高性能的神经网络

如何在GPU上设计高性能的神经网络

作者头像
deephub
发布 于 2020-07-16 13:04:04
1.2K 0
发布 于 2020-07-16 13:04:04
举报
文章被收录于专栏: DeepHub IMBA

gpu对于机器学习是必不可少的。可以通过AWS或谷歌cloud轻松地启动这些机器的集群。NVIDIA拥有业内领先的GPU,其张量核心为 V100和 A100加速哪种方法最适合你的神经网络?为了以最低的成本设计出最快的神经网络,机器学习架构师必须解决许多问题。此外,仅仅使用带有GPU和张量核心的机器并不能保证最高性能。那么,作为一个机器学习架构师,应该如何处理这个问题呢?当然,您不能是硬件不可知论者。您需要了解硬件的功能,以便以最低的成本获得最大的性能。

作为一个机器学习架构师,你应该如何设计神经网络来最大化GPU的性能?

在本文中,我们将深入了解机器学习架构师实现性能最大化的手段。我们将特别关注矩阵-矩阵乘法,因为它是机器学习中最常见和最繁重的数学操作。

让我们从一个简单的全连接的一个隐藏层神经网络开始:

图1:在神经网络的每一层进行矩阵乘法,每一步的矩阵乘法的形状如括号所示。例如(B, L1)是B行L1列的矩阵的形状。MM1, MM2,…MM5是各种矩阵-矩阵乘法。

从基本神经网络可以看出,在第L2层,我们进行了3次矩阵-矩阵乘法(1向前,2向后)。在第L1层,我们执行2个矩阵-矩阵乘法(1向前,1向后)。事实上,除了第一层(L1)之外,我们在每一层都执行了3次矩阵乘法。如果神经网络有n层,则需要进行3n-1个矩阵-矩阵乘法,即时,它随神经网络的大小线性增长。

一个快速观察方法是将批大小设置成1,我们看下B=1时的情况,即一次只学习一个数据点。在这种情况下,矩阵-矩阵退化为矩阵-向量的乘法。然而,在实践中,批大小从不为1。在梯度下降中,在每个学习步骤中考虑整个数据集,而在随机梯度下降中,在每个学习步骤中考虑一批B > 1(但比整个数据集要少得多)。

在本文中,让我们关注两个维数(M, K)和(K, N)的矩阵a和B之间的单个矩阵-矩阵乘法,分别得到维数(M, N)的矩阵C。

维数M, N, K由每层神经网络的结构决定。例如,在AlexNet中,批处理大小为128,有几个密集的层(4096个节点)和一个输出层(1000个节点)。这将导致(128,4096)和(409,1000)矩阵的乘法。这些是相当大的矩阵。

图2。平铺的矩阵乘法

 
推荐文章
气宇轩昂的铁链  ·  PHP 很有用的一个函数 ignore_user_abort - wgw8299 - 博客园
1 年前
从未表白的小蝌蚪  ·  Java面试葵花宝典打印版【6】-腾讯云开发者社区-腾讯云
2 年前
高兴的硬币  ·  淘宝开放平台 - 文档中心
2 年前
强健的回锅肉  ·  Practice - 在 Swift 中对集合类型元素的弱引用 - 掘金
2 年前
大气的伏特加  ·  c#中dateTimePicker怎么获取当前的日期_51CTO博客_c#获取当前时间
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号