任何事物一旦進入泡沫期,就不免讓人擔心什?時候會崩盤,而當下的 AI 芯片已經(jīng)進入公認的泡沫期。
從 ASPLOS'14 上寒武紀的 DianNao,到當下 Google 的 TPUv3,AI 芯片只花了五年時間就取得了巨大的成功。搭上 AI 算力爆發(fā)的快車道,叫嚷著摩爾定律終結,Domain Specific Architecture(領域定制架構) 似乎成了Ψ一的出·。
可是當無數(shù)的巨頭和初創(chuàng)公司設計出一塊又一塊大同小異的 AI 芯片,我們需要回答這樣一個問題:真的需要這?多 AI 芯片嗎?
軟件復雜度
AI 芯片的快速發(fā)展,其中一個回避不了的問題就是軟件復雜度的指數(shù)級提升。很多公司花了兩年甚至更短的時間做出一款芯片,卻發(fā)現(xiàn)需要更長的時間支持繁多的框架、緊跟算法的進步,適配從手機到數(shù)據(jù)中心的各類平臺。當錯過了部署和量產(chǎn)的窗口期,即便做出了芯片也會很快落伍。
與設計通用架構不同,設計 AI 芯片這樣的專用架構需要同時考慮到軟件的設計和優(yōu)化。芯片公司往往樂觀估計了軟件適配和優(yōu)化的成本,指望通過中間件和編譯器來解決所有問題。事實上,從 Intel 到 Google 再到 Nvidia,大量的軟件工程師正被投入到適配各種平臺,手動優(yōu)化網(wǎng)絡性能當中。而對于初創(chuàng)公司,芯片早已 tapeout 卻一再延期交付的問題比比皆是。
從本質(zhì)來看,當我們開始不斷挖掘芯片架構的潛力時,軟件層的抽象也會變的越來越困難,因為其不得不在上層抽象中引入底層的架構的模型或參數(shù)?,F(xiàn)在的通常做法是做底層芯片架構與上層軟件之間的中間件,然而開發(fā)這些中間件的代價也往往被低估。前段時間某芯片初創(chuàng)公司的同學咨詢我,開發(fā)一套類似 TensorRT 這樣的 Inference 中間件需要多少人力和多長時間?這并不是一個容易回答的問題,于是我反問他們有多少資源可以做這個項目。
令人意外的是,他的老板只給了三四個人頭,因為他們假設自己已經(jīng)有了一套底層的編譯器和一套上層的模型轉換工具,于是這樣一個用于架構抽象的中間件并不需要太大力氣。我猜這樣的投入應該可以做出一個功能完好的產(chǎn)品,但我不相信最終的產(chǎn)品在實際應用中可以達到理想的性能指標,畢竟做芯片并不只是用來跑 ResNet-50 這樣的 Benchmark。
碎片化
只需要編寫一套代碼即可運行在不同平臺,是軟件工程師們的長久訴求。不同架構的 AI 芯片帶來的碎片化會極大的打擊他們在實際軟件產(chǎn)品中應用 AI 的積極性。與以往的經(jīng)驗不同,深度學習糟糕的解釋性會帶來許多意想不到的缺陷。比如這樣一個常見的困擾,一個私有的模型可以在本地 CPU 上得到滿意的結果,然而卻在部署到某款設備后性能大幅下降。如何調(diào)試這些問題,誰來負責調(diào)試,通過怎樣的工具來調(diào)試,甚至調(diào)試的工程師能否拿到私有的模型?這些問題都難以回答。
碎片化還表現(xiàn)在,專有架構為了挖掘絕對性能往往會放棄向前兼容性。如上文提到的中間件,它的一端是碎片化的 AI 軟件框架,另一端則是一代又一代的芯片架構。如何同時維護多個部分不兼容的指令集架構,并保證?一次軟件更新都能完整的覆蓋所有的設備?除了投入更多的人力,別無他法。一個常見的論調(diào)是像當下的消費級芯片一樣只保持一個短期的(2-3年的)軟件支持,然而當下 AI 芯片的常見應用領域,如智能攝像頭、工業(yè)智能、以及自動駕駛,一款芯片的生命周期可能長達十年。很難想象一家公司需要多大的量級才能提供持久的技術支持,如果預估一家初創(chuàng)公司活不過兩三年,如何才能放心的部署其產(chǎn)品到一款面向消費者的量產(chǎn)車上?
AI 芯片只是過渡期產(chǎn)物
從一個軟件工程師的角度,我個人堅信定制化的 AI 處理器只會是一個過渡期產(chǎn)物。一個統(tǒng)一的、可編程的、高并發(fā)的架構才應該是我們追求的方向?;叵脒^去的二十年,我們見證了專用架構的小型機市場的萎縮,圖形處理器到通用向量處理器的發(fā)展,甚至連我們的手機和電腦的平臺都將趨于統(tǒng)一。有理由相信,現(xiàn)在再把資源投入到定制化的 AI 芯片絕不是一個好的投資。