12年前的深度学习革命:Karpathy带你回顾AlexNet时代

科技 2024-05-06 09:57 阅读:

想不到,距离2012年AlexNet开启的深度学习革命已经过去了12年。如今,我们正处于大模型的时代。最近,知名AI研究科学家Andrej Karpathy的一条帖子,让许多深度学习领域的大佬们陷入了回忆杀。从图灵奖得主Yann LeCun到GAN之父Ian Goodfellow,纷纷忆往昔。

在帖子中,Karpathy提到了一个有趣的事实:2012年ImageNet/AlexNet的时刻开启了深度学习革命。但很少人知道,支持这次竞赛获胜作品的代码是由Alex Krizhevsky从头开始,用CUDA/C++手工编写的。这个代码仓库叫做cuda-convnet,当时托管在Google Code上。

Karpathy回忆说:“AlexNet是最早将CUDA用于深度学习的著名例子之一。”正是因为使用了CUDA和GPU,AlexNet才能处理如此大规模的数据(ImageNet),在图像识别任务上取得如此出色的表现。AlexNet不仅仅是简单地使用了GPU,还是一个多GPU系统。比如,AlexNet使用了一种叫做模型并行的技术,将卷积运算分成两部分,分别运行在两个GPU上。

Karpathy提醒大家,那可是2012年啊!在2012年(大约12年前),大多数深度学习研究都是在Matlab中进行,跑在CPU上,在玩具级别的数据集上不断迭代各种学习算法、网络架构和优化思路。但AlexNet的作者Alex、Ilya和Geoff却做了一件与当时的主流研究风格完全不同的事情——“不再纠结于算法细节,只需要拿一个相对标准的卷积神经网络(ConvNet),把它做得非常大,在一个大规模的数据集(ImageNet)上训练它,然后用CUDA/C++把整个东西实现出来。”

Alex Krizhevsky直接使用CUDA和C++编写了所有的代码,包括卷积、池化等深度学习中的基本操作。这种做法非常创新也很有挑战性,需要程序员对算法、硬件架构、编程语言等有深入理解。

12年前的深度学习革命并非一个孤立的事件,而是当时整个领域发展趋势的一个缩影。一些研究人员已经意识到深度学习需要更大的规模和更强的计算能力,GPU是一个很有前景的方向。Karpathy写道:“在AlexNet出现之前,深度学习领域已经有了一些向规模化方向发展的迹象。例如,Matlab已经开始初步支持GPU。斯坦福大学吴恩达实验室的很多工作都在朝着使用GPU进行大规模深度学习的方向发展。还有一些其他的并行努力。”

回顾这段历史,Karpathy感慨道:“在编写C/C++代码和CUDA kernel时,有一种有趣的感觉,仿佛回到了AlexNet的时代,回到了cuda-convnet的时代。”现在的“back to the basics”做法与当年AlexNet的做法异曲同工,AlexNet的作者从Matlab转向CUDA/C++,是为了追求更高的性能和更大的规模。虽然现在有了高级框架,但在它们无法轻松实现极致性能时,仍然需要回到最底层,亲自编写CUDA/C++代码。