編譯 | 核子可樂、Tina
今年,英偉達(dá)可謂是全力押注,明確表示要確保 Python 成為 CUDA 并行編程框架中的“一等公民”。
多年以來,英偉達(dá)為 GPU 開發(fā)的 CUDA 軟件工具包始終缺少原生 Python 支持,現(xiàn)如今這種情況終于有所轉(zhuǎn)變。在近期的 GTC 大會上,英偉達(dá)宣布其 CUDA 工具包將為 Python 提供原生支持并全面與之集成。也就是說,開發(fā)人員能夠使用 Python 直接在 GPU 上執(zhí)行算法式計算。
據(jù)悉,2025 年被英偉達(dá)視為“CUDA Python 元年”,這一觀點(diǎn)已經(jīng)在公司內(nèi)部達(dá)成共識,并成為 GTC 大會的核心主題之一。這次發(fā)布標(biāo)志著 Python 在整個生態(tài)系統(tǒng)中的地位進(jìn)一步提升,而英偉達(dá)也在這一領(lǐng)域投入了大量資源。
對于程序員們來說,此舉無疑影響巨大。盡管 CUDA 最初是基于 C 和 C++ 開發(fā)的,但如今程序員們無需掌握這些編程語言,也能使用該工具包進(jìn)行開發(fā)。
原生 Python 打開新的大門
過去,尤其是早期,甚至直到一兩年前,英偉達(dá)主要依賴 C 和 C++ 這類面向系統(tǒng)編程的底層語言作為其主要的編程接口。開發(fā)者們通常需要在此基礎(chǔ)上構(gòu)建 Python 庫,實(shí)現(xiàn)更高級別的應(yīng)用。
事實(shí)上,許多開發(fā)者已經(jīng)構(gòu)建了這樣的 Python 庫,例如廣受歡迎的 PyTorch。它作為一個強(qiáng)大的 Python 接口,底層連接著高性能的 C++ 代碼(用于 CPU)和 CUDA C++ 代碼(用于 GPU)。這些庫的廣泛應(yīng)用,甚至在某些方面超越了英偉達(dá)自家提供的解決方案,贏得了更多的關(guān)注。
還有 OpenAI 的 Triton 等項(xiàng)目,它允許開發(fā)者用 Python 編寫代碼——其實(shí)是一種特定風(fēng)格或子語言(domain-specific language),然后通過編譯器把這些 Python 風(fēng)格代碼轉(zhuǎn)化為 GPU 可運(yùn)行的內(nèi)容。
這些項(xiàng)目表明,在 GPU 編程的 Python 化方向上,已經(jīng)有許多開發(fā)者先行一步,他們甚至比英偉達(dá)行動更快。不過,英偉達(dá)也注意到了這一趨勢,開始加大了投入。
在去年 GTC 大會上,CUDA 架構(gòu)師 Stephen Jones 指出,“在過去幾年中,我非常關(guān)注 Python。當(dāng)我審視 Python 開發(fā)者的生態(tài)時,我發(fā)現(xiàn)我的上層用戶規(guī)模會呈現(xiàn)出爆炸式增長。我的核心用戶不再是一百萬,而是一千萬級別。因此,這意味著,底層的改進(jìn),都將通過 Python 生態(tài)系統(tǒng),在上層用戶群體中產(chǎn)生更為廣泛而深遠(yuǎn)的影響。”
同時,Jones 也特別關(guān)注了 Triton 項(xiàng)目,“Triton 提供了一種全新的方式,讓開發(fā)者能夠使用 Python 編寫自定義的 GPU 內(nèi)核。其語法類似于 NumPy 函數(shù),但底層卻能生成高度優(yōu)化的 CUDA 內(nèi)核。該項(xiàng)目充分利用了英偉達(dá)的編譯器技術(shù)和底層優(yōu)化工具鏈。”
因此,英偉達(dá)認(rèn)為,為了充分發(fā)揮 Python 在 GPU 計算中的潛力,必須在技術(shù)棧的各個層面進(jìn)行投入。他們的整體愿景,也是 CUDA 團(tuán)隊的愿景,是為 Python 開發(fā)者提供完整的 NVIDIA 體驗(yàn),即讓整個 CUDA 生態(tài)系統(tǒng)都能通過 Python 編程語言進(jìn)行訪問和使用。
這是一個生態(tài)擴(kuò)展的過程。NVIDIA 并不是放棄 C++,而是在擴(kuò)大整個開發(fā)者圈層,尤其是對 Python 社區(qū)的支持上,他們正在顯著加碼。
英偉達(dá)加速 Python 開發(fā)
在今年的 GTC 大會上,Stephen Jones 強(qiáng)調(diào),Python 中的 CUDA 應(yīng)該保持 Python 的自然風(fēng)格,讓程序員們可以使用自然的 Python 接口和腳本模型,輕松創(chuàng)建運(yùn)行在英偉達(dá) GPU 上的 AI 程序。Jones 還指出,Python CUDA 絕不僅僅是將 C 代碼轉(zhuǎn)換為 Python 語法。它必須要讓 Python 開發(fā)者們感到自然且親切。
今年英偉達(dá)對 Python 的投入和接口更新,不只是開發(fā)體驗(yàn)上的改善,更是 NVIDIA 在構(gòu)建一個更加開放、多層次開發(fā)者生態(tài)系統(tǒng)方面的又一次進(jìn)化。
例如,CuTile 是一個比傳統(tǒng) CUDA 更高層級的抽象(目前還沒有正式發(fā)布),雖然底層仍依賴部分 C++ 實(shí)現(xiàn),但開發(fā)者所接觸的接口已完全是 Python。這意味著,開發(fā)者無需直接接觸 C++,即可利用這些接口進(jìn)行開發(fā)。
另一個例子是新的 Python 接口版本的 Cutlass。Cutlass 原本是一個專注于 GPU 高性能矩陣運(yùn)算的 C++ 庫。而現(xiàn)在英偉達(dá)推出了一個全新的 Python 接口版本,完全不需要寫 C++。開發(fā)者可以直接在 Python 里構(gòu)建算子,甚至進(jìn)行一些低級別的優(yōu)化,同時保留原有性能。
可以把它理解為英偉達(dá)正在打造一個金字塔:最底層是核心的 CUDA C++,適合極致性能的系統(tǒng)開發(fā)者;中間層是像 Triton 或 Python Cutlass 這種面向?qū)I(yè)開發(fā)者的高性能 Python 接口;而頂層則是 PyTorch、這樣更面向 AI 構(gòu)建者和產(chǎn)品工程師的抽象層。
這種分層的方式非常重要,開發(fā)者可以先利用頂層工具快速進(jìn)行原型設(shè)計,當(dāng)需要更高的性能或更強(qiáng)的定制能力時,再逐步深入到更底層的接口,覆蓋了不同層級的開發(fā)者。從某種意義上說,這是一種“民主化”GPU 編程的過程。它讓那些熟悉 Python、但不一定懂底層系統(tǒng)編程的人,也能參與進(jìn)來,從而加速整個生態(tài)的發(fā)展。
布道師 Charles Frye 認(rèn)為,“這對 AI 開發(fā)者、研究者,甚至初創(chuàng)公司來說都是一個巨大利好。你不需要一個專門的 CUDA 工程師團(tuán)隊才能充分發(fā)揮 GPU 的性能。你可以用熟悉的工具,用更快的速度迭代、調(diào)優(yōu)和部署你的模型或應(yīng)用。”
“總的來說,我覺得這次 GTC 上 Cutlass 4 和相關(guān) Python 接口的發(fā)布,標(biāo)志著一個真正的轉(zhuǎn)折點(diǎn)——從‘GPU 編程是專家游戲’,到‘人人都可以上手’的轉(zhuǎn)變正在加速進(jìn)行中。”
而且,據(jù) The New Stack 報道,英偉達(dá)在將 Python 提升為 CUDA 并行編程框架核心語言的同時,也在積極招募程序員,以期在項(xiàng)目中支持包括 Rust 和 Julia 在內(nèi)的更多編程語言。
Python 式 CUDA 是怎樣煉成的
CUDA 項(xiàng)目涵蓋庫、SDK、編譯器、主機(jī)運(yùn)行時、工具以及預(yù)打包的軟件和算法。英偉達(dá)已經(jīng)將部分組件添加至整個 Python 式 CUDA 技術(shù)棧內(nèi)。
英偉達(dá)的關(guān)注重點(diǎn),是在無需脫離 Python 環(huán)境的前提下實(shí)現(xiàn) GPU 加速。Jones 解釋道,CUDA Python 不能只是內(nèi)核產(chǎn)品,而需要在整個技術(shù)棧內(nèi)匹配完整且流暢的執(zhí)行流程。
Jones 強(qiáng)調(diào),“除了編寫內(nèi)核并將其納入 PyTorch 之外,我們還必須能夠調(diào)用 Python 庫及所有其他組件。”
實(shí)際上,由于項(xiàng)目是圍繞即時(JIT)編譯構(gòu)建而成,因此不存在編譯器層,從而大大減少了技術(shù)棧 GPU 樹中的依賴項(xiàng)數(shù)量。
Jones 表示,“保持所有各層之間的互操作性,將極大提高生產(chǎn)力并實(shí)現(xiàn)對 Python 的端到端使用。”
最初,英偉達(dá)先是構(gòu)建了基礎(chǔ) Python 綁定(其中包括運(yùn)行時編譯器)與 cuPyNumeric(Python 中使用最就我 計算庫 NumPy 的替代方案)等 Python 庫。cuPyNumeric 僅變更了一條導(dǎo)入指令,即可將 NumPy 代碼從 CPU 上運(yùn)行轉(zhuǎn)變?yōu)?GPU 上運(yùn)行。
去年,英偉達(dá)構(gòu)建了 CUDA Core,Jones 稱其是“對 CUDA 運(yùn)行時的 Python 式重構(gòu),確保其自然而然實(shí)現(xiàn) Python 原生化。”
CUDA Core 提供 Python 執(zhí)行流程,且高度依賴于 JIT 即時編譯。
Jones 強(qiáng)調(diào),“我們要做的不是放棄命令行編譯器之類的要素,而是將一切融入到流程當(dāng)中”,并補(bǔ)充稱這大大減少了技術(shù)棧 GPU 樹中的依賴項(xiàng)數(shù)量。
英偉達(dá)還開發(fā)了一套名為 NVMath Python 的庫,其具備用于主機(jī)端和設(shè)備端庫調(diào)用的統(tǒng)一接口。Jones 指出,這種將庫調(diào)用加以融合的設(shè)計帶來了巨大的性能提升。
該公司還構(gòu)建了能夠直接通過 Python 代碼訪問加速 C++ 庫的多個新庫。
Jones 解釋道,“由于新成果建立在我們多年積累的底層基礎(chǔ)架構(gòu)之上……因此我們并不需要用 Python 做重新實(shí)現(xiàn)。只需要確保將其鏈接到經(jīng)過微調(diào)的 C++ 底層代碼,因此產(chǎn)生的性能影響幾乎可以忽略不計。”
英偉達(dá)還添加了用于分析器和代碼分析器的工具。
更契合 Python 特性的編程模型
Python 大大降低了編碼難度,確保程序員不必分心于底層硬件。為了更好地達(dá)成這個目標(biāo),英偉達(dá)決定添加一個在 GPU 上執(zhí)行,且與更高級別抽象相一致的編碼層。這套編程模型就是 CuTile,最初為 Python 式 CUDA 開發(fā),隨后又針對 C++ CUDA 提供了擴(kuò)展。
CuTile“從本質(zhì)上來講更契合 Python 特性”,因?yàn)槿缃?Python 程序員更多關(guān)注數(shù)組而非線程(關(guān)注線程更接近 C++ 的特性)。開發(fā)人員不可能像變魔術(shù)一樣直接把 Python 代碼導(dǎo)出到 GPU 上,來直接獲得加速性能。CUDA 需要先將問題拆分成成千上萬個較小的塊,然后在 GPU 上分別做處理。這些塊被拆分成更小的 tiles,由其運(yùn)行起成千上萬個線程以實(shí)現(xiàn)單一元素處理。各線程組合起來,就形成了一項(xiàng)操作。
這種并行處理線程級單一元素的能力,賦予了 GPU 強(qiáng)大的計算性能。
但英偉達(dá)認(rèn)為 GPU 執(zhí)行不該始終局限于線程級別。相反,處理也可以在 tiles 層級上實(shí)現(xiàn)中途完成,這也是 CuTile 編程模型的意義所在。
CuTile 能夠高效將數(shù)組映射至相對不太細(xì)粒度的 GPU 上,使得代碼更易于理解和調(diào)試。Jones 表示,“重要的是,在根本上繼續(xù)保持相同的性能。”
Tiles 中的數(shù)據(jù)可以構(gòu)造為向量、張量或者數(shù)組,而編譯器則能夠更好地將整個數(shù)組操作從線程塊映射至 GPU。
Jones 解釋道,“編譯器通常比程序員們做得更好,因?yàn)樗苌羁汤斫忾_發(fā)者在做什么……而且熟悉 GPU 的運(yùn)行細(xì)節(jié)。”
不同于 C++,Python 在設(shè)計上并不強(qiáng)調(diào)細(xì)粒度。
Jones 在總結(jié)時再次稱贊了 OpenAI 的項(xiàng)目,“目前有很多相關(guān)成果,OpenAI Triton 就是個典型用例。我認(rèn)為這些項(xiàng)目都特別契合 Python 程序。“
https://www.youtube.com/watch?v=Ml5lAtCSHxY
https://thenewstack.io/nvidia-finally-adds-native-python-support-to-cuda/
https://www.youtube.com/watch?v=pC0SIzZGFS
chttps://x.com/blelbach/status/1902113767066103949/photo/3
聲明:本文為 InfoQ 整理,不代表平臺觀點(diǎn),未經(jīng)許可禁止轉(zhuǎn)載。
會議推薦
在 AI 大模型重塑軟件開發(fā)的時代,我們?nèi)绾伟盐兆兏铮咳绾瓮黄萍夹g(shù)邊界?4 月 10-12 日,QCon 全球軟件開發(fā)大會· 北京站 邀你共赴 3 天沉浸式學(xué)習(xí)之約,跳出「技術(shù)繭房」,探索前沿科技的無限可能。
本次大會將匯聚頂尖技術(shù)專家、創(chuàng)新實(shí)踐者,共同探討多行業(yè) AI 落地應(yīng)用,分享一手實(shí)踐經(jīng)驗(yàn),深度參與 DeepSeek 主題圓桌,洞見未來趨勢。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.