我們都知道大模型都是由各種算法組成的,那怎么看似簡單的代碼,如何變成讓人驚艷的“智能大腦”的?這篇文章,我們來分析下算法、結(jié)構(gòu)的路程和進(jìn)步。
你有沒有想過,AI 是如何從一個個看似簡單的算法,變成了如今無所不能的“智能大腦”?
算法研究員和工程師不斷設(shè)計新的 AI 算法和 AI 模型提升預(yù)測效果,其預(yù)測效果不斷取得突破性進(jìn)展。
但是新的算法和模型結(jié)構(gòu),需要 AI 開發(fā)框架提供便于對 AI 范式的編程表達(dá)力和靈活性,對執(zhí)行性能優(yōu)化有可能會改變原有假設(shè),進(jìn)而產(chǎn)生了對 AI 系統(tǒng)對于 AI 開發(fā)框架的開發(fā)過程和 AI 編譯器的執(zhí)行過程優(yōu)化提出了新的挑戰(zhàn),因而促進(jìn)了 AI 系統(tǒng)的發(fā)展。
一、精度超越傳統(tǒng)機(jī)器學(xué)習(xí)
以 MNIST 手寫數(shù)字識別任務(wù)為例,其作為一個手寫數(shù)字圖像數(shù)據(jù)集,在早期通常用于訓(xùn)練和研究圖像分類任務(wù),由于其樣本與數(shù)據(jù)規(guī)模較小,當(dāng)前也常常用于教學(xué)。
從圖中可以觀察了解到不同的機(jī)器學(xué)習(xí)算法取得的效果以及趨勢:1998 年,簡單的 CNN 可以接近 SVM 最好效果。
2012 年,CNN 可以將錯誤率降低到 0.23% (2012),這樣的結(jié)果已經(jīng)可以和人所達(dá)到的錯誤率 0.2% 非常接近。
神經(jīng)網(wǎng)絡(luò)模型在 MNIST 數(shù)據(jù)集上相比傳統(tǒng)機(jī)器學(xué)習(xí)模型的表現(xiàn),讓研究者們看到了神經(jīng)網(wǎng)絡(luò)模型提升預(yù)測效果的潛力,進(jìn)而不斷嘗試新的神經(jīng)網(wǎng)絡(luò)模型和在更復(fù)雜的數(shù)據(jù)集上進(jìn)行驗證。
神經(jīng)網(wǎng)絡(luò)算法在準(zhǔn)確度和錯誤率上的效果提升,讓不同應(yīng)用場景上的問題,取得突破進(jìn)展或讓領(lǐng)域研發(fā)人員看到相應(yīng)潛力,是驅(qū)動不同行業(yè)不斷投入研發(fā) AI 算法的動力。
二、公開數(shù)據(jù)集上突破
隨著每年 ImageNet 數(shù)據(jù)集上的新模型取得突破,新的神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)和訓(xùn)練方式的潛力。更深、更大的模型結(jié)構(gòu)有潛力提升當(dāng)前預(yù)測的效果。
1998 年的 Lenet 到 2012 年的 AlexNet,不僅效果提升,模型變大,同時引入了 GPU 訓(xùn)練,新的計算層(如 ReLU 等)。
到 2015 年的 Inception,模型的計算圖進(jìn)一步復(fù)雜,且有新的計算層被提出。
2015 年 ResNet 模型層數(shù)進(jìn)一步加深,甚至達(dá)到上百層。
到 2019 年 MobileNet3 的 NAS,模型設(shè)計逐漸朝著自動化的方式進(jìn)行設(shè)計,錯誤率進(jìn)一步降低到 6.7% 以下。
新的模型不斷在以下方面演化進(jìn)而提升效果:1)更好的激活函數(shù)和層,如 ReLU、Batch Norm 等;2)更深更大的網(wǎng)絡(luò)結(jié)構(gòu)和更多的模型權(quán)重;3)更好的訓(xùn)練技巧: 正則化(Regularization)、初始化(Initialization)、學(xué)習(xí)方法(Learning Methods),自動化機(jī)器學(xué)習(xí)與模型結(jié)構(gòu)搜索等。
上述取得更好效果的技巧和設(shè)計,驅(qū)動算法工程師與研究員不斷投入,同時也要求 AI 系統(tǒng)提供新的算子(Operator)支持與優(yōu)化,進(jìn)而驅(qū)動 AI 開發(fā)框架和 AI 編譯器對前端、中間表達(dá)和系統(tǒng)算法協(xié)同設(shè)計的演進(jìn)和發(fā)展。
三、算力與體系結(jié)構(gòu)進(jìn)步
從 1960 年以來,計算機(jī)性能的增長主要來自摩爾定律,到二十世紀(jì)初大概增長了 108 倍。但是由于摩爾定律的停滯,性能的增長逐漸放緩了。單純靠工藝尺寸的進(jìn)步,無法滿足各種應(yīng)用對性能的要求。
于是,人們就開始為應(yīng)用定制專用芯片,通過消除通用處理器中冗余的功能部分,來進(jìn)一步提高對特定應(yīng)用的計算性能。如圖形圖像處理器 GPU 就對圖像類算法進(jìn)行專用硬件加速。如圖所示后來出現(xiàn) GPGPU,即通用 GPU,對適合于抽象為單指令流多數(shù)據(jù)流(SIMD)或者單指令多線程(SIMT)的并行算法與工作應(yīng)用負(fù)載都能起到驚人的加速效果。
為了更高的性能,近年來 AI 芯片也大放光彩。
其中一個代表就是谷歌 TPU(Tensor Processing Unit),通過對深度學(xué)習(xí)模型中的算子進(jìn)行抽象,轉(zhuǎn)換為矩陣乘法或非線性變換,根據(jù)專用負(fù)載特點進(jìn)一步定制流水線化執(zhí)行的脈動陣列(Systolic Array),進(jìn)一步減少訪存提升計算密度,提高了 AI 模型的執(zhí)行性能。
華為騰 NPU(神經(jīng)網(wǎng)絡(luò)處理器)針對矩陣運(yùn)算專門優(yōu)化設(shè)計,可解決傳統(tǒng)芯片在神經(jīng)網(wǎng)絡(luò)運(yùn)算時效率低下的問題。
此外,華為達(dá)芬奇架構(gòu)面向 AI 計算設(shè)計,通過獨創(chuàng) 3D Cube 設(shè)計,每時鐘周期可進(jìn)行 4096 次 MAC 運(yùn)算,為 AI 提供強(qiáng)大算力支持。
除了算子層面驅(qū)動的定制,AI 層面的計算負(fù)載本身在算法層常常應(yīng)用的稀疏性和量化等加速手段也逐漸被硬件廠商,根據(jù)通用算子定制到專用加速器中,在專用計算領(lǐng)域進(jìn)一步協(xié)同優(yōu)化加速。通過定制化硬件,廠商又將處理器性能提升了大約 105 量級。
然而可惜的是,經(jīng)過這么多年的發(fā)展,雖然處理器性能提升這么多,我們機(jī)器的數(shù)值運(yùn)算能力早已是人類望塵莫及了,AI 芯片內(nèi)部執(zhí)行的程序代碼仍然是人類指定的固定代碼,智能程度還遠(yuǎn)遠(yuǎn)不及生物大腦。從智力程度來說,大約也就只相當(dāng)于嚙齒動物,距離人類還有一定距離。
可以看到隨著硬件的發(fā)展,雖然算力逐漸逼近人腦,讓 AI 取得了突破。
但是我們也看到,算力還是可能在短期內(nèi)成為瓶頸,那么 AI 系統(tǒng)的性能下一代的出路在哪?
我們在后面會看到,除了單獨芯片的不斷迭代進(jìn)行性能放大(Scale Up),系統(tǒng)工程師不斷設(shè)計更好的分布式計算系統(tǒng)將計算并行,來達(dá)到向外擴(kuò)展(Scale Out),同時發(fā)掘深度學(xué)習(xí)的作業(yè)特點,如稀疏性等通過算法,系統(tǒng)硬件協(xié)同設(shè)計,進(jìn)一步提升計算效率和性能。
本文由 @章魚AI小丸子 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)