前几天,听到两个同事在沟通某个神经网络中一处算法的实现。
因为下面的一段对话,让我突然感觉到,搞AI算法,是真的在搬砖盖楼!
对话
A:“这个卷积后面的 tensor ,需要通过维度拆解(split)加维度转置(transpose)进行才行!”
B:“硬件对于低维拆解是不友好的,数据需要低维对齐,调用转置指令的话,性能也不见得会有多好。”
A:“那如果不用 split 和 transpose 来实现,有其他更好的办法么?”
B:“让我想想,把我的图纸拿来!”
A:“图纸,什么图纸?”
B:“网络结构图,我要开始搬砖了。”
于是,同事 B 找来图纸,手里拿着铅笔,开始写写画画,进行算法替换的推导!
...
AI算法工程师
AI算法攻城狮,大致分为两类。
第一类是搞全网优化的算法攻城狮
他们基于整个神经网络做算法实现和优化。主要的手段大致为:数据量化、网络剪枝、模型调参(炼丹)、图融合、指令调度等等。
目的是使得整个AI神经网络有更好的性能,也就是经常可以听到的,做神经网络的优化!
经常会看到某某公司推出了一个新模型,无论识别精度,还是运行性能,都吊打其他公司,这里的性能,其实就是大量的网络优化后,取得的效果。
第二类是搞单个算法优化的算法攻城狮
他们往往只局限于某一个或一类算法进行持续的优化。
最常见的就是卷积和矩阵乘法优化的攻城狮门,也是各大AI算法公司抢手的香饽饽。
但是,不论哪种算法攻城狮,都离不开对于网络结构的了解。
可以说,整个神经网络是一座大厦,卷积这种重要算法是承重墙,其余算法是砖、水泥、钢筋和混凝土,哪里需要搬哪里。
Resnet50全貌
之前一直在写的resnet50这一网络,就是用大量的卷积来搭起来的,下面是 resnet50这一网络的全貌,长图预警。
看完,或许你真的会有一个感觉,从头到尾用代码去实现这样一个神经网络,真的和搬砖盖楼,没有区别!