『运筹OR帷幄』AI|OR|DS算法知识星球建立啦~

『运筹OR帷幄』AI|OR|DS算法知识星球建立啦~

编者按

近几年AI行业的火热程度大家有目共睹,越来越多的人想要加入这一行业。但很多同学不知道如何学习AI和转行AI,遇到面试也不知道如何应对。

随着算法相关专业热度和难度岗位对专业人才要求的提高,考研、读博、留学申请、求职的难度也在相应飙升。『运筹OR帷幄』特建立『运筹OR帷幄算法社区』知识星球,依托社区30w+专业受众和25+细分领域硕博微信群,特邀腾讯,百度,阿里,华为等公司大咖以及国内外名校教授、博士与大家一起聊算法,快来扫码加入!

文章作者:@霍华德
责任编辑:@霍华德
文章发表于微信公众号【运筹OR帷幄】:AI | AI/OR/DS面试实习求职知识星球建立啦~
欢迎原链接转发,转载请私信@运筹OR帷幄获取信息,盗版必究。
敬请关注和扩散本专栏及同名公众号,会邀请全球知名学者发布运筹学、人工智能中优化理论等相关干货、知乎Live及行业动态:『运筹OR帷幄』大数据人工智能时代的运筹学

昨天小A苦恼的来求助我,遇到变态算法面试题,完全不知道该怎么答。我说你说来听听。接下来我就来给大家讲讲小A遇到的面试三连。


第一连:怎么计算一个模型

参数量?

一个模型里有参数的层主要包括:

  • Linear(M->N): 参数数目:M×N
  • Conv2d(Cin, Cout, K): 参数数目:Cin × Cout × K × K
  • BatchNorm(N): 参数数目: 2N
  • Embedding(N,W): 参数数目: N × W

那些层没有参数呢?下面这些层没有参数千万不要弄错:

  • 多数的激活层(Sigmoid/ReLU)
  • 池化层pooling
  • Dropout
  • ...等等

下面来一份秘籍,我们来看看VGG-16模型里的参数怎么算,我们看右边params部分:

我们会发现主要贡献参数的是卷积层和全连接层,VGG-16总共模型的参数是1.38亿。


第二连:一个模型的那些部分

会占用显存?

1、模型参数占用

有了参数量,我们就可以计算模型的显存占用:

参数占用显存 = 参数数目×n, 其中n是字节数,具体关系看下面。

float32占四个字节 n = 4; float16占两个字节n = 2; double64占8个字节 n = 8

2、优化器的梯度和动量占用

对于最简单的随机梯度下降优化器SGD:

除了模型参数W,显存里还要保存参数对应的梯度

,因此显存占用等于参数占用的显存的两倍,

如果是带动量Momentum-SGD优化器:



除了参数和梯度,还需要动量, 这时候显存占用是简单SGD的三倍。

如果是Adam优化器,动量占用的显存更多,显存是简单SGD的四倍。

总结一下,模型中与输入无关的显存占用包括:

  • 参数 W
  • 梯度 dW(一般与参数一致)
  • 优化器的动量(普通SGD没有动量,momentum-SGD动量与梯度一样,Adam优化器动量的数量是梯度的两倍)

3、输入输出的显存占用

这次我们看秘籍的memory部分,可以看出模型输出的显存占用:

  • 需要计算每一层的多维数组
  • 需要保存输出对应的梯度用以反向传播
  • 显存占用与 batch size 成正比
  • 模型输出不需要存储相应的动量信息。

深度学习中神经网络的显存占用,我们可以得到如下公式:

显存占用 = 模型显存占用 + batch_size × 每个样本的显存占用

所以可以看出,显存占用并不是和batch_size成正比,特别是embedding或者全连接层特别大的情况下。


第三连:怎么计算一个模型

计算量(FLOPS)?

对于深度学习模型,浮点数运算量(FLOPS)对于模型是一个很重要的指标,因为对于想要部署到手机或者汽车上的模型,对于模型大小和计算量有严格的要求。

我们来看看英伟达论文里对FLOPS计算过程的介绍:

下面用这个CNN示意图介绍上面公式里FLOPS的计算过程:

对于下面这张5X5的图片那么H和W就是5,使用3X3的卷积核进行扫描,K就是3,每一步需要考虑卷积核的乘法运算次数 3x3=9。假设输入的图片是黑白图片,那么输入的通道数Cin就是1。假设输出的通道数Cout是16,那么根据公式我们就可以算出:

FLOPs = 2*5*5(1*9+1)*16 = 8000

我们来看看AlexNet的计算量:

可以看出:

  • 全连接层占据了绝大多数的参数
  • 卷积层的计算量最大

对于一般模型的参数量和FLOPs,有一个很好的统计:


hpcuserforum.com/presen

大家看完是不是还不过瘾。现在由于算法岗面试难度的提高,面试题越来越难。经常有很多同学,向我咨询算法和面试方面的经验和建议,以及要求指导。有时候由于时间忙,没有足够的时间回复。

为了不辜负大家的学习期待,『运筹OR帷幄』特建立【算法社区】知识星球,涵盖运筹学、数据科学、人工智能等一切和算法相关的专业。

一方面集结社区20W专业受众的力量交流算法干货,一方面写写算法面试经验,让大家面对算法面试游刃有余。

合伙人介绍

@留德华叫兽【运筹OR维幄】、【DIY飞跃计划】创始人,知乎|头条共计15w+粉丝,美国克莱姆森大学运筹学硕士,德国海德堡大学数学博士,欧盟玛丽居里学者,IBM Cplex意大利实习半年,巴黎综合理工访问学者,现德国某汽车集团无人驾驶感知研发工程师。擅长欧美留学申请,运筹学、数据科学、人工智能职业规划和德国求职咨询。

@霍华德【AI】板块主编,知乎8w+粉丝,新加坡电子及计算机工程博士,资深自然语言处理算法工程师,现任职于腾讯,熟悉搜索引擎及其各种模块。可提供新加坡留学申请指导,面试培训、offer选择、职业规划及公司实习、校招和社招内推等咨询。

豪华嘉宾阵容(不断扩展中):

目前星球特邀嘉宾(曾)就职的公司包括:

腾讯、百度、阿里(菜鸟、达摩院、盒马)、华为、微软、英伟达、顺丰科技、Momenta、旷视、小米、SAP、NEC、美团、苏宁、网易、福特、阿里妈妈、东芝、松下、佳能、拼多多、环球易购、携程、滴滴、京东、览众数据、杉数科技、Sabre、悠桦林、Pier、奇弦智能等

加入『运筹OR帷幄』知识星球,您将收获以下福利

  • 全球Top名校教授|博士和名企研发高管一起交流算法相关学术|研发干货
  • 中国你能说出名字的几乎所有大厂|欧美数家大厂(资深)算法工程师入驻
  • 依托『运筹OR帷幄』30w+专业受众和30+细分领域硕博微信群的算法技术交流
  • 以上所有公司|高校独家内推招聘|实习机会、多家offer选择指导
  • 以面试题|作业题|业界项目为学习资料学习算法干货,从小白变成大咖
  • 不定期的线上、线下交流会和聚会,拓展人脉

相关文章推荐

俞刚,作为旷视研究院Detection组负责人,他讲述了作为过来人的经验,也给出了对新人的建议;大佬的话语不一定是真理,但他们的故事绝对是会让我们受益的。

AI | 俞刚:我在旷视研究院做检测

板块招聘信息

AI板块副主编招聘要求:

1.计算机视觉、语音识别、自然语言处理方向硕士毕业或博士在读,及以上学历也可。

2.有文字编辑经验,博客或知乎专栏写作经历,善于沟通与协调

3.有时间,有责任心,保证每周工作 2-3个小时。

关于我们:『运筹OR帷幄』团队掠影

请将简历发送至:operations_r@163.com

欢迎加入我们这个大家庭!


温馨提示

可以在 本公众号后台 回复关键词:“ AI ” 获取大量由我平台编辑精心整理的AI资料,如果觉得有用, 请勿吝啬你的留言和赞哦!~


扫二维码关注『运筹OR帷幄』公众号:

点击查看『运筹OR帷幄』志愿者招募介绍及加入方式

编辑于 2019-11-10

文章被以下专栏收录