特斯拉前AI总监疯狂点赞:单张A100,10秒训练CIFAR-10破世界纪录

发布者:丹江水暖 2023-2-2 23:32

编辑:Aeneas 好困

【新智元导读】这位小哥在单张A100上,10秒完成了CIFAR-10训练,打破了世界纪录,还引来了Karpathy啧啧称赞。


刷新世界纪录!

用600行代码,在单张A100上,不到10秒,就完成了CIFAR-10数据集的训练,并且精度高达94%。

特斯拉前AI总监Andrej Karpathy连发3条推特,疯狂点赞。

Karpathy之所以如此激动,是因为12年前,他试过手动对CIFAR-10进行分类,得到的也是94%!而当时的SOTA只有80%。

项目介绍

项目地址:https://github.com/tysam-code/hlb-CIFAR10

git clone https://github.com/tysam-code/hlb-CIFAR10 && cd hlb-CIFAR10 && python -m pip install -r requirements.txt && python main.py


这段代码可以在Colab上直接使用,事实上——其中大部分是在Colab中开发的。

这位叫Tysam的小哥,给自己定下的目标是——

简单初学者友好只需torch和python的常用代码可破解几乎不用外部依赖(目前只有torch和torchvision)破世界纪录的单GPU训练时间(此前在A100上的世界纪录是18.1秒,而Tysam打破了世界纪录——小于10秒)在2年内让训练时间小于2秒

为了达成快速训练的神经网络实现,Tysam参考了David Page在CIFAR-10图像分类数据集上有效训练残差网络的代码,但几乎是从头编写的。

这种做法的好处是,Tysam code现在保持着CIFAR-10上单GPU训练速度的世界纪录——在A100上不到10秒!

在David Page代码的基础上,Tysam做了如下改动:

压缩和激励层(squeeze and excite layers)非常多的超参数调整复杂架构修剪(miscellaneous architecture trimmings)更改内存格式,更好地使用张量核心等其他

与原始代码相比,Tysam的代码全部都在一个文件中,而且非常扁平flat。

此外,所有的管线也都已经公开,有兴趣的朋友可以在里面快速探索自己的想法。

至于为什么会选择ConvNet,而不是现在最流行的Transformer呢?

在Tysam看来,虽然Transformer是新事物,但信息从训练集中压缩到神经网络中的方式,实际上始终都遵循着同样的一套基本数学原理。

Tysam希望,在一两年内让这个代码库在2秒内完成训练,在四到五年内在1秒内完成训练。

Karpathy疯狂点赞


对于Tysam的代码,Karpathy赞叹不已,他丝毫不吝啬自己的溢美之辞——

「我喜欢这种极简的设计美学,它让阅读代码不再是精疲力竭的寻宝过程。你不需要把代码散布在复杂的嵌套目录结构之中,然后用各种指令把事情搞得过于复杂。」

随后,Karpathy还表示,这让他想起了自己在12年前做的测试:

12年前,「肉眼」分类实现了94%的准确率,用时未知。

12年后,600行代码实现了94%的准确率,用时不到10秒。

当时的过程大概是:

在一个平平无奇的周末,Karpathy突然想看看人类在这个数据集上能达到什么样的精度。

于是就快速地手搓了一段MATLAB代码用于测试。

界面长这个样子:

在测试过程中,程序首先会一张一张图片地展示,然后Karpathy会按下0-9(10个键),对应这张图他所认为的类别(10个分类)。

在经过了不知道多长时间之后,Karpathy终于完成了400张图片的分类,准确率为94%左右。

那么,为什么不是100%呢?

Karpathy:「因为有些图像真的太扯了!」

比如下面这几个:

也难怪Karpathy当年预测AI所能达到的极限是85-90%(笑)。

当然,后来的结果大家也都知道了,CIFAR-10分类的准确率早就被刷到了99.5%。

著名的CIFAR-10


众所周知,CIFAR-10是由Geoffrey Hinton和他的学生Alex Krizhevsky和Ilya Sutskever整理的一个用于识别普适物体的小型数据集,也是如今机器学习研究中最广泛使用的数据集之一。

CIFAR-10数据集由10类32x32的彩色图片组成,总共包含60000张图片,其中50000张图片作为训练集,10000张图片作为测试集。

这10个类别为:飞机( airplane )、汽车( automobile )、鸟类( bird )、猫( cat )、鹿( deer )、狗( dog )、蛙类( frog )、马( horse )、船( ship )和卡车( truck )。

参考资料:

https://github.com/tysam-code/hlb-CIFAR10

大家都在看