不犧牲演算法,不挑剔晶片,這個來自中科院的團隊正在加速國產AI晶片破局

机器之心發表於2024-04-09
不降低大模型演算法精度,還能把晶片的算力利用效率提升 2~10 倍,這就是編譯器的魅力。

在《沙丘》構建的未來世界裡,「得香料者得天下」。但在生成式 AI 席捲的智慧世界裡,得 GPU 者得天下。

圖片

前段時間,外媒 The Information 曝出了一則重磅訊息:微軟和 OpenAI 正在規劃一個雄心勃勃的資料中心專案 —— 建造一臺名為「星際之門」的 AI 超級計算機。這臺計算機將配備數百萬個專用伺服器晶片,是目前一些最大資料中心的 100 倍。當然,這個計劃是相當燒錢的,成本可能高達 1000 億美元,令其他公司望而卻步。

在國內,生成式 AI 引發的這場算力競賽也變得愈發激烈。但除了瘋狂堆卡,企業還有沒有其他更加經濟、有效的方法來提升算力,尤其是在 AI 晶片國產化程序加速的當下?對此,中科院計算所編譯團隊負責人、中科加禾創始人崔慧敏提到了一條鮮有人涉足的路徑 —— 編譯技術。

編譯的作用就像一位翻譯,它能把高階程式語言翻譯成晶片可以理解並執行的機器語言。同時編譯器還要做最佳化,讓生成的機器程式碼執行起來更高效。

這種最佳化的力量有多大?崔慧敏提到,「我們能做到的是在不降低演算法精度的情況下,把算力的利用效率給提上來,提供額外的 2~10 倍的效能提升。」這個數字可能超出了很多人的預料,就像崔慧敏所說,「在 AI 這樣的負載裡面,編譯器的作用其實是被遠遠低估了的。」

那麼,她提到的加速是在英偉達 GPU 上實現的,還是在國產卡上也行?是針對特定大模型做的最佳化,還是換個模型也能用?對此,她的答案是兩個字 —— 通用

「我們做的是一層基礎的軟體平臺層。有了這一層以後,底下的晶片就可以隨意切換,上面的模型也可以隨意切換,它們之間不再是一個緊耦合的狀態了。」崔慧敏解釋說。

其實,在當前的國產晶片生態中,這種緊耦合的狀態非常常見。在 AI 晶片加速國產化的程序中,大多數國產晶片做了大量運算元定製化開發工作,這不但大幅增加了開發成本,隨之而來的還有技術標準化程序緩慢和相容性的問題。各家廠商形成一個個獨立的生態小島,造成整個行業趨於碎片化,這無疑限制了技術和產業的快速發展和廣泛應用。

崔慧敏團隊想要做的,就是連結這些生態孤島,透過一個編譯中間平臺,讓模型、應用可以在不同的硬體平臺之間自由移植,同時最佳化移植後的效能,後續出現的新模型、新應用也能無縫適配,保證持續的可用性。

「我們要用一套軟體工具,實現大模型應用在國產算力平臺上的 0 成本適配、0 損耗執行、0 延遲部署。」崔慧敏說。

這有望補齊國內 AI 產業生態的缺位,大幅降低上層應用在國產晶片平臺上的落地門檻和成本,顯著提升多種異構算力的利用和適配效率。

崔慧敏畢業於清華大學計算機系,並於中科院計算所獲得計算機體系結構博士學位,持續從事編譯方向研究工作,曾在晶片和編譯器領域頂級會議和期刊發表論文五十多篇。她已有 20 年以上的編譯器開發經驗,曾作為核心成員主持或參與過多款國產晶片的編譯器研發工作。為了實現上述目標,她以中科院計算所原始編譯團隊為核心組建起了中科加禾的精英隊伍。去年 8 月以來,中科加禾已經完成兩輪,共計近億元融資,股東涉及知名晶片領域投資機構、頭部國產晶片、伺服器、網際網路等上下游廠商,其中不乏有過緊密合作的 AI 晶片產業夥伴。

圖片

近日,我們與崔慧敏進行了一番對話。

在採訪中,崔慧敏向我們介紹了國內編譯技術的發展歷程、國內 AI 晶片產業面臨的挑戰,同時也對未來跨多平臺 AI 算力產品的前景進行了展望。

創業緣起:國產晶片市場走強,湧現市場機會

機器之心:從做學術到創業,您走過了一段怎樣的心路歷程?

崔慧敏:自 97 年開始,我在清華計算機系讀本科和碩士,畢業後在計算所讀博,之後包括工作,就一直在做編譯器和晶片工具軟體相關的科研工作。編譯這個方向比較偏向於理論和實踐的結合,既有前沿的理論探索又有落地的工程開發。在這一過程中,我們一直都伴隨著國產晶片的發展進行實踐,形成了一支伴隨著國產晶片的研發而成長起來的編譯隊伍。

在這個過程中我們做了很多方向,包括面向通用晶片、專用晶片的編譯最佳化,我們在國際頂會和期刊上發表了一些論文,進行了很多學術交流。

近些年來,隨著國家對國產晶片產業的推動,我們團隊承擔了很多構建晶片工具鏈方面的職責。但在這個過程中我們發現,純靠科研的方式,儘管會產生很多創新突破,但可能面臨難以產業落地的困境。一個軟體從原型走到真正能用的工具,這裡面還是有非常多工程化的事情要做。

做編譯器這個事情,大家一直都覺得可能沒有那麼好做。不過,後來出現了兩個驅動力,一個是大模型的出現,它對算力的需求極大,並且計算模式有一定的收斂;另一個就是業內對國產晶片的需求激增,而國產晶片的生態和英偉達相比又存在很大的差距我們覺得在這個過程中,需要編譯層和基礎軟體工具來彌合這個差距,讓國產晶片把現有的生態利用起來,或者融入到整體生態中。我們希望透過增強國產晶片的通用性和適配能力,服務於國產晶片算力崛起,把自主生態的整體可用性提上去,把市場需求轉化落地。

國內稀缺的創業團隊,從學術成果到產業經驗

機器之心:在創業之前,您的團隊主要做出了哪些成果?

崔慧敏:我們之前一直在做很多面向底層晶片的相容工具。最早做二進位制翻譯工具,就是能把 X86 的二進位制程式翻譯到底層不同的其他的指令集架構上。從那開始我們積累了非常多的關於相容性、適配性、跨平臺執行的能力。近些年來圍繞 GPU 等架構,AI、高效能運算等負載,我們做了大量編譯器最佳化的工作。

在這個過程中我們發現,在 AI 這樣的負載裡面,編譯器的作用其實是被遠遠低估了的。透過深度的編譯最佳化,一方面可以讓同一個程式直接執行在不同的平臺上,解決程式移植的難題;另一方面,移植後的程式還能在不同平臺上保持最佳化後的效能,這是編譯器能夠發揮長處的一個機會。

在這些方面,我們前期有非常多的論文的積累,像我們近年在 ASPLOS 上發表的一系列論文。論文結果表明,編譯器可以充分地挖掘硬體算力,在 GPU 和 NPU 上都能夠取得非常好的效能。而且透過編譯器的方案,我們能夠比較徹底地解決問題 —— 它不是隻針對某個場景或者某個晶片,而是比較通用的。

我們這個團隊做了 20 多年編譯,所以我們如果要創業,一定是圍繞著編譯這個核心技術來做。而在大模型出現之前, AI 的負載其實是比較發散的,其中的差異性還是比較大的。所以像 TensorFlow、 PyTorch 這些框架其實做了非常多的工作,對負載多樣性提供了支援,比如說動態性、多樣性,對各種神經網路的形態都能夠支援得很好。那時運算元存在著多樣性,這意味著如果想要去做一層國產晶片上的軟體,然後讓它去支撐所有的負載,難度是相當大的。

大模型的出現,其實可以認為是一種模型結構的收斂可能它不會代表所有,但是已代表了一大類負載,這一大類負載的市場足夠大了。所以針對這一類負載,我們就有機會提供一套端到端的最佳化和編譯的方案。

機器之心:中科加禾的團隊中包含很多參與過國內重要 AI 晶片專案的專家,這些經驗和能力對於目前做的事有哪些幫助?

崔慧敏:要把一顆 AI 晶片利用好,有兩個方面的工作必不可少,一是可程式設計性,能夠方便地把應用對映到晶片上;二是效能,能夠充分地把晶片的算力利用好。

關於這兩個方面,我們團隊的核心成員在 CPU、GPU 和 NPU 上都積累了豐富的編譯最佳化經驗。對於某一款特定的晶片,我們可以用編譯的方法把不同計算單元編排好,提升計算、資料傳輸效率,做到資源的最大化利用。另一方面,我們掌握了怎樣去做一套最佳化,讓它儘可能地適配不同平臺。在這個過程中,我們形成了一套編譯設計、最佳化的理念。

同時,我們會把這些能力盡可能地模組化,其中一部分是公共模組,適用於不同平臺、不同晶片;另外一些是需要定製的模組。這兩部分模組我們都有了很好的前期探索和理解,基於這些理解我們可以更好地構建出一個基礎平臺,當有新的負載或者新的晶片需求,我們可以更容易地去接入到這個平臺上來。

編譯的「魔力」—— 極致最佳化

機器之心:我們知道,像 ChatGPT 這樣的大模型算力消耗非常大,有人認為這裡面可能還有成百、上千倍的最佳化空間……

崔慧敏:所謂上百倍、上千倍的最佳化,裡面既有硬體人的功勞,也有演算法人、軟體人的功勞。在硬體層面上,可以透過研發一些更好的晶片,比如特殊架構的晶片,把成本降下來。在演算法層面,可以透過量化、壓縮、剪枝把模型的計算量降下來。另外一個層面就是我們所做的,透過軟體的部署把成本降下來。

我們做的事情和前面兩個層面是正交的,就是說晶片設計出來如果是低功耗、低成本的,那編譯層可以把晶片的算力充分地榨乾。如果上層演算法做了一些最佳化,那可以把做完最佳化以後的模型再拿到我們這個引擎上來部署。可以理解成:上層做好了演算法,底層做好了硬體,我們來做更好的對映

不過這裡面也有一些權衡,比如說有的人對精度的要求特別高,就不希望透過量化、壓縮犧牲模型的精度。我們能做到的是在不降低演算法精度的情況下,把算力的利用效率給提上來,提供額外的 2~10 倍的效能提升。

機器之心:從編譯技術的角度看,最佳化是如何做到的?

崔慧敏:編譯技術會從三個方面去做最佳化。

首先是如何做運算元融合。大模型有很多運算元,我們可以把這些運算元進行一些比較激進的融合,比如把十幾個運算元壓成一個,這樣就可以把 AI 加速卡的利用率提到一個很高的水平。進一步,如何把融合以後形成的大運算元最佳化對映到不同的硬體平臺上也是編譯最佳化要做的事情。

其次是如何生成高效能的運算元。在大模型中會有很多不同形狀的矩陣計算,如何讓這些計算都能獲得接近硬體峰值的效能,是每個晶片廠商都需要付出大量努力去做的事情。我們會基於編譯器的思想,透過基運算元加組合的方式來自動生成這些運算元,高效能的運算元是大模型能夠高效執行的基礎。

最後是如何編排訪存、計算和通訊。我們總希望晶片大部分時間都在算,而訪存和通訊是要等待的,這就涉及如何更好地去切分和編排任務。考慮到不同的國產卡在計算、通訊、儲存、頻寬等方面存在差異,我們要做的就是怎麼把這些因素抽象出來,再基於這個抽象去決定任務的切分,這也是我們要做的事。

以上這些最佳化集中在一起,就能達到一個整體的效果。

「天下苦 CUDA 久矣」,

探索國產 AI 晶片生態建設

機器之心:說到計算架構,行業內有一個繞不過去的 CUDA,有人說它很大程度上已是英偉達的護城河,如何看待目前行業的現狀?

崔慧敏:我覺得您說得很對,不管是做編譯器還是說做整個軟體生態,我們可能都繞不過 CUDA。我們覺得 CUDA 確實是英偉達的一個護城河,多年來英偉達也確實圍繞 CUDA 構建了非常龐大的生態,甚至可以說整個 AI 都是建在 CUDA 上面的。

有人說「天下苦CUDA久矣」,這背後是兩個問題:如何利用、融合現有的CUDA生態,如何讓國產自主生態生長起來。對於國內來說,各個晶片廠商會有不同的看法。有的晶片廠商會想要建一個自己的生態,就是成為中國的 CUDA;另外也有做 CUDA 相容的晶片廠商。這是兩條不同的路線。

我覺得這兩條路線在長期來說應該是會共存的。即使是在英偉達 GPU 上,大家也是有用 CUDA 的,有用 Triton 等工具的。所以可能在未來很長一段時間,大家都在爭取使用者。這個時間會有多長,其實不好說。在 CPU 上,C 語言用了好多年,一直到現在也在用,大家也在持續提出新的語言,不同的語言反映了不同的設計訴求。所以我們覺得在國產晶片的生態建設過程中,CUDA 可能是繞不過去的一環,但它也肯定不是唯一的路徑。

我們覺得可能相容 CUDA 對硬體廠商來說是一個短期內佔領生態的捷徑,像 Triton 、SYCL 等新的語言,我們也要積極地去擁抱,因為它們或許代表了未來。

國產的晶片自建生態這條路我覺得在一定領域內也是可行的。

所以我們覺得兩條路都是可以,都是應該走的。從這個角度來說,我們的晶片生態比較碎片化,可能這兩條路都是必不可少的。

機器之心:在這其中,中科加禾主要走的路線是哪一條?

崔慧敏:我們主要探索的是與語言和晶片解耦的編譯平臺方向。作為一箇中間平臺,我們對前端語言不依賴,所有不同的語言都可以翻譯到平臺的中間表示上,然後透過中間表示再往不同平臺上去走。

在支援的優先順序上,一方面我們有一部分的運算元會去做 CUDA 源源翻譯,就是透過軟體來做一些運算元轉譯的事。另一方面我們也會去接入像 Triton、SYCL 這樣的新語言。我們會採用一套統一的中間表示,讓任何語言都可以翻譯到這個中間表示上。這樣的話,如果將來再出一個新的語言,或者要推一個新的標準,都可以比較容易地接入到這個平臺上來。

上接各類大模型,下接各家晶片,

突破通用性挑戰,提供商業化最優解

機器之心:你們在做的,是面向大量硬體、大量模型的對接工作?

崔慧敏:對,大概是這樣一個角色。比如傳統行業的公司需要部署一個大模型,目前基本上是以手工的方法來做適配,大家依然面臨通用性的挑戰。而我們的解決方案是在中間做一層基礎的軟體平臺層,有了這一層以後,底下的晶片就可以隨意切換,上面的模型也可以隨意切換,它們之間不再是一個緊耦合的狀態了

在模型收斂、算力巨量、應用激增的情況下,現在很少有開發團隊寫最底層的模型,更多的工作是在微調開源模型,這也導致適配層面的稀薄、脆弱成為共性問題。目前大家都在解決「如何讓已有的應用在國產晶片上執行起來」。按發展態勢來看,「以後要開發新的應用怎麼辦」的問題會加劇顯現出來。

我們在做的通用性的軟體工具就是為了解決這些問題存在的。我們要用一套軟體工具,實現大模型應用在國產算力平臺上的 0 成本適配、0 損耗執行、0 延遲部署。

機器之心:給不同的國產晶片去提供相對統一的一個平臺,是件很有挑戰的事。

崔慧敏:確實是這樣,這也是碎片化的生態帶給應用方的一個挑戰。因為不同的晶片,首先底層的架構就不一樣。國內的晶片大概分成兩種,一種是類 GPU 架構,一種是 NPU 架構。我們肯定不希望應用層需要針對每一家不同的晶片去重新構建自己的程式,也不能要求每一家硬體廠商都提供足夠豐富的運算元讓應用層使用。所以這裡面就有一個挑戰,怎樣透過一套工具把不同的架構歸攏在一起?

這裡我們會有不同層次上的考慮。像大模型,我們就是從框架或引擎的層面上進行統一。比如運算元層有統一的介面,我們就能夠統一納入考慮。另外就是可以透過運算元轉換工具,或是運算元生成、編譯等最佳化方法,這些方面我們都佈局了相關的產品線。

不過,這裡面也有一個矛盾,就是你一旦通用了,效能就會受影響。如何能夠做到既通用又儘可能降低效能損失,這是我們要突破的核心問題,是技術側的挑戰。

因為晶片本身的研發節奏不一樣,我們還會受到不同晶片廠商本身研發節奏和軟體工具鏈研發節奏的影響。

在商用側,成本、效能、效率是繞不開的問題,我們希望透過一套穩定、可靠的適配最佳化平臺,實現軟硬體協同、平衡成本、效能、效率的最優解。

大模型時代,也是編譯器的黃金時代,

建好一座「橋樑」

機器之心:2019 年,兩點陣圖靈獎獲得者 ——John Hennessy 和 David Patterson 刊文說,計算機架構正在迎來一個新的黃金時代。而作為驅動計算機架構革新的重要組成部分,編譯器也在迎來它的黃金時代。能否根據您過去幾年的經歷、體會談談對這句話的理解?

崔慧敏:對,我覺得確實是這樣。這個黃金時代不光是科研工作的黃金時代,也是建設國產晶片生態的黃金時代

從學術角度來看,近幾年頂會上冒出來非常多 AI 編譯相關的文章,包括底層編譯,而且一直在飛速增長。以前這類文章很難發在頂會上,比如 ASPLOS 這樣的頂會。

圖片

中科加禾兩篇模型推理相關論文發表於計算機體系結構頂會 ASPLOS’2024,相關技術已經融入公司產品。來源:https://mp.weixin.qq.com/s/vx8mfmDmhJz3InhdZSQuSQ

從產業角度來看,在國外,提出「編譯器黃金時代」的大牛 Chris Lattner 本身也創辦了自己的公司 ——Modular AI。在國內,受 Modular AI 的啟發,投資人判斷國內也有這樣一個機會。其實,大家最初的出發點非常樸素,就是說從晶片的多樣性上來說,中國一定是一個晶片最多樣化的市場,這個市場一定會對編譯提出一個統一的需求。在公司成立之後,許多投資人和產業夥伴來聯絡我們,希望達成合作。我們看到,無論是投資圈還是產業圈,大家都有一個共識,那就是編譯器領域存在明顯的市場機會。

在發展程序上,編譯器是稍微滯後於體系架構的。所以當體系架構的黃金時代到來之後,緊接著就會迎來編譯器的黃金時代。我們也是跟做硬體、軟體、演算法的夥伴都做了交流探討之後,才終於確信這對我們來說是一個很好的機會。

機器之心:根據您的觀察,在大模型時代,AI 加速的需求正在發生怎樣的變化?

崔慧敏:我覺得分為兩個方面。一方面,AI 大模型會給未來的硬體帶來一些新的機會,因為它們確實和以前的模型不一樣了,它們會對最佳化方式提出很多不一樣的要求。所以我們看到做 LPU 的 Grok 就針對大模型提出了新的硬體架構。其實國內的很多廠商也在探索類似的事情,就是怎麼針對 Transformer 做更好的硬體加速。我覺得這方面迭代會很快。

另外一方面就是大模型需要的絕對算力確實是太大了,所以它對效能的要求是極致的,要從整個鏈條的環節上去壓縮成本。AI 1.0 時代的模型,晶片效能發揮到百分之四五十也可以。但是現在,你要把每一點價值都充分挖掘出來,一定要極致地去壓榨晶片的效能,所以它對最佳化 —— 無論是硬體的最佳化還是軟體的最佳化 —— 都提出了不一樣的挑戰。

在這個背景下,我們覺得,大模型推理側的市場會非常大。在大模型推理側,大家面向的場景可能會非常不一樣,對模型大小的需求也不一樣,所以這會是第一個非常多樣的市場,就是多種大模型推理晶片共存,所以對碎片化生態的整合需求也比較大

機器之心:我們看到,在這次的大模型浪潮中,AI 晶片的國產替代程序正在加快,那麼與之強關聯的編譯器能做到多大?

崔慧敏:編譯器分兩個概念,一個是晶片本身的編譯器,我們把它叫做底層編譯器,這個肯定是每個晶片公司來做的。我們做的是更上層的編譯工具軟體,這個軟體基本上是用來完成開放生態和國產晶片底層的對接這件事。我們之間是相互配合的關係。AI 晶片的國產化替代是一個不可避免的過程,而且本身大模型對卡的需求也會有一個增長,所以我們覺得未來國產晶片的市場還是會快速增長的。

2023 年,中國 AI 晶片市場規模已經超千億元,英偉達仍然獨佔最大份額,如果國產晶片替代率可以在 3 到 5 年內達到 50% 或更高,再加上 AI 算力本身需求的增長,國產 AI 晶片的市場規模可能也會很快達到千億人民幣的水平。伴隨著大模型和算力市場的雙重推動,我們做基礎設施軟體的機會還是很大的。

在成立之初,我們定下的目標就是爭取讓我們的軟體裝到每一塊國產卡上去。當然,這不是說我們要管每一個國產晶片廠商去收錢。我們的付費使用者可能是多方的,比如整合商、雲的建設方、智算中心的建設方…… 我覺得只要我們能把國產卡變得更好用,那市場是認可來給這個軟體付費的,畢竟現在 AI 能創造的價值太大了。

機器之心:現在大模型落地的速度很快:手機 SoC 正在加入大模型最佳化機制,電腦也出現了 AI PC 的概念。在消費電子端,國內公司在計算架構層是否會有機會?

崔慧敏:機會還是挺多的。像現在的智慧屏、學習機、兒童互動遊戲設施已經把大模型的對話能力、語言能力利用起來了。因為這些領域落地成本沒那麼高,市場需求也比較明朗,比較容易針對家庭環境、家庭成員來做定製,所以我覺得大模型會在家居場景中很快落地。另外值得關注的就是 AI PC,以及端側 NPU 的加入對大模型落地的推動,這可能帶來新的辦公模式。

機器之心:中科加禾會往這方面佈局嗎?

崔慧敏:也會發展。我們的大模型推理引擎分雲側和端側,所以端側我們也在做,也在接觸一些廠商了。

機器之心:您之前演講提到,隨著 AI 時代的到來,編譯器的內涵和外延正在不斷擴大,能否解釋一下這個現狀?

崔慧敏:我們覺得 PyTorch 的路徑是能夠代表這個方向的。其實最早我們說編譯器的時候可能做類比的就是 CUDA,CUDA 往下叫編譯器。這是嚴格意義上傳統的晶片編譯器,就是類似 CUDA 把程式翻譯到英偉達的 GPU 上去。對應到我們國產晶片也都有各自的底層晶片編譯器。

到了 AI 時代,大家在框架層面也做了很多編譯器的事情。大家會把這一層叫 AI 編譯,包括 TVM、XLA 等。這個時候,編譯的概念就往上走了一些。但是進到上層,大家原來做的事情並沒有那麼多,可能更多是圖的融合、張量的最佳化之類的。

但是我們現在看 PyTorch 2.0 其實是把整個編譯的概念大大延伸了,它把圖上的編譯、動態性的處理等都納入到它的架構裡了。當然,它的這個設計也是為了未來讓更多的晶片能夠比較容易地接入進來。它中間有很多層,每一層都有很多編譯技術的支撐,讓它能夠更靈活、更通用。

我覺得編譯的目的就是讓整個系統變得更靈活、更通用。因為整個 AI 系統一開始構建起來的時候,走的是一個快速路線,即讓更多人更容易地用起來。但是在對硬體的支撐和適配方面,原來沒有考慮那麼多,考慮更多的還是運算元的接入,也就是硬接入的方式。PyTorch 2.0 更多的是把對運算元的依賴變成自動生成運算元:工程師在上面寫一個運算元,它可以一點一點自動生成。作為一個晶片後端,只要把這個接入做好,就能很好地接入到整個生態裡面去了。大家都在朝著這個目標去努力。

所以我們看到編譯的外延其實逐漸被延伸到了整個的 AI 框架裡。大家在每一個層面上都會包含很多編譯的能力和理念。包括像 MLIR 這樣的編譯的基礎平臺,也是希望能夠透過從最高層接入編譯的一些知識,中間層是編譯的分析,最底層是編譯的對映,這種架構設計,讓應用能夠更容易、更快地對映到不同的平臺上去。

我覺得對於編譯而言,問題還是在於怎麼能在軟體和硬體之間建立一個更好的橋樑。在 AI 時代,這個橋樑可能不是一下子就建好的,需要一層一層來建。這就是我們正在做的事情。

聚晶片之合力,築國產之生態」,讓國產晶片更好用是我們的初心,也是我們的夢想。

相關文章