特斯拉前AI總監Karpathy瘋狂點贊:單張A100,10秒訓練CIFAR-10,破世界紀錄!
刷新世界紀錄!
用600行代碼,在單張A100上,不到10秒,就完成了CIFAR-10數據集的訓練,并且精度高達94%。
特斯拉前AI總監Andrej Karpathy連發3條推特,瘋狂點贊。
Karpathy之所以如此激動,是因為12年前,他試過手動對CIFAR-10進行分類,得到的也是94%!而當時的SOTA只有80%。
項目介紹
項目地址:https://github.com/tysam-code/hlb-CIFAR10
這段代碼可以在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