AI 學寫顯卡程式碼,贏 Claude 還得先防它作弊:CUDA Agent 拆解
CUDA Agent 是字節跳動和清華教出來的 AI,專門寫讓顯卡跑更快的底層程式碼,成績贏過 Claude 和 Gemini,還逼得 GPT-5 直接不作答。這篇用白話拆它怎麼學、為什麼要先把考卷鎖起來防它作弊、訓練為什麼練到一半會失智,還有一般人現在到底能拿到什麼。
目錄+
字節跳動和清華大學教出一個 AI,專門寫「讓顯卡跑更快」的程式碼。250 題考卷,它有 96.8% 的答案比 PyTorch 內建的自動優化器還快,Claude Opus 4.5 同一份考卷只有 66.4%。更妙的是論文附註裡的一句話:GPT-5、5.1、5.2 三個版本全部拒考,題目一送過去就說不答。
這個 AI 叫 CUDA Agent。這篇用白話拆三件事:它是怎麼學會的、為什麼團隊得先把考卷鎖起來防它作弊,還有你現在到底能不能拿來用。
先搞懂它在寫什麼:顯卡聽得懂的話
你在工廠裡下一個指令「把這批零件磨光」,工人不會直接動手,領班要先翻成一串工人聽得懂的細節動作:誰拿哪台機器、先磨哪一面、幾個人同時做。顯卡也是這樣。你用 PyTorch 寫的 AI 程式是那句「把零件磨光」,顯卡真正執行的是一套叫 CUDA 的底層指令,NVIDIA 顯卡專用的語言,寫得好壞直接決定模型跑得快還是慢。
大部分人不會自己寫 CUDA,太難了,要懂顯卡內部怎麼搬資料、幾千個核心怎麼分工。所以 PyTorch 內建一個自動翻譯師傅,叫 torch.compile,你寫普通程式,它幫你翻成還算快的顯卡指令。
問題來了:AI 自己寫 CUDA,能贏過這個師傅嗎?
史丹佛出了一份考卷來測這件事,叫 KernelBench,250 題。每題給你一段普通的 PyTorch 程式,要你改寫成 CUDA 版本,算出來的結果得跟原本一模一樣,然後比誰快。三個難度:Level 1 是單一動作,像一次矩陣相乘;Level 2 是好幾個動作連著做;Level 3 是整個模型,像一段 ResNet 影像辨識網路。
AI 寫的 CUDA,一開始比師傅還慢
答案原本很不好看。論文拿沒特別訓練過的 Seed1.6 基礎模型當對照組:74% 的題目它寫得出「答案正確」的程式,但只有 27.2% 真的比 torch.compile 快。整體算下來,它的程式平均只有師傅速度的 0.69 倍。
翻成白話:你花力氣叫 AI 手寫顯卡指令,結果比什麼都不做、直接丟給內建師傅還慢。
GLM 4.6 和 Kimi K2 這兩個公認很會寫程式的開源模型也一樣,平均速度只有師傅的 0.57 倍和 0.66 倍。會寫程式,跟會寫「快的顯卡程式」,是兩件事。
沒有考古題,就自己出
想教 AI 一件事,你得有大量練習題。可是網路上高品質的 CUDA 程式碼少得可憐,論文說 CUDA 在模型原本讀過的所有資料裡連 0.01% 都不到。
團隊的解法是自己出題。先從 PyTorch 和 Transformers 這兩套最常用的函式庫裡,把基本運算一個一個挖出來當種子,像是相乘、卷積、正規化。再讓另一個 AI 把最多 5 個基本運算隨機串在一起,變成一道新題目。最後真的跑一遍,把太簡單、太難、或本身有毛病的題目丟掉。
為什麼要串起來?因為把兩個動作合併做,跟分開各做一次再接起來,優化的方法完全不同。合併做可以省掉中間把結果寫回記憶體再讀出來的來回,這種省法只有在動作黏在一起時才存在,單一題練不到。
篩完剩 6,000 題,叫 CUDA-Agent-Ops-6K,已經放上 Hugging Face。團隊還特別比對過,確認這 6,000 題沒有一題跟 KernelBench 的考題長得太像,先把「它是不是背過答案」這個質疑擋掉。
貼在桌上的作業流程:SKILL.md
真人工程師優化程式不是一次寫完就交,是先量哪裡慢、改、跑測試、看報告、再改。CUDA Agent 也是這樣工作的:它有一套工具可以下指令、讀檔、改檔、搜尋,像一個坐在電腦前的工程師。這套做法照著 OpenHands 這個常見的 coding agent 框架來,讓它跟一般寫程式的 AI 助手長得一樣。
真正特別的是團隊把「怎麼把 CUDA 寫快」寫成一份操作說明書,檔名就叫 SKILL.md,用的是 Anthropic 提出的 Agent Skills 格式。重點是這份經驗不是塞進模型腦袋裡,是寫成一份貼在桌上的文件,隨時能讀、隨時能改。這跟 DarwinX 主張的「先改 agent 外殼,不用先改模型」 是同一種賭注。
說明書規定的流程是四步:
- 先跑量測工具,找出程式哪裡慢
- 動手寫 CUDA 程式和接口
- 編譯、跑正確性測試和速度測試
- 沒過就回頭改,直到比 torch.compile 快至少 5%,過了也繼續往上推
「給一個能驗證的目標,讓 AI 自己在迴圈裡反覆試」這套做法最近在其他地方也開始出現,pi-autoresearch 讓 coding agent 自主跑優化迴圈 是另一個例子。這個迴圈有多重要?論文試過拿掉它,只讓模型一次寫完不給任何回饋,結果贏過師傅的比例從 96.8% 崩到 14.1%,幾乎退回沒訓練的樣子。反覆試錯不是加分項,是這套系統的骨架。
練到第 17 步就失智
資料有了、環境有了,真正卡住團隊的是:第一次正式訓練,模型撐了 17 步就崩潰,開始寫出一堆胡言亂語。
先講訓練方法。這裡用的是強化學習,你可以想成訓練小狗:做對給零食,做錯不給或扣分,做很多很多次,它自己摸出什麼動作能拿到零食。這裡的「零食」是分數,「動作」是寫出來的程式。
崩潰的原因要拆成兩層來看。第一層,CUDA 對模型來說太陌生,它讀過的資料裡不到萬分之一是 CUDA,所以它寫每一個字都很沒把握,每個字它心裡估的「這樣寫對的機率」都非常低。第二層,訓練用的機器和實際跑出答案的機器,算這些小數點的精度不一樣,一台用 BF16 一台用 FP16,兩邊的數字差一點點。平常差一點無所謂,但當機率本來就低到接近零,一點點誤差除下去就會變成離譜的倍數。訓練就靠這些倍數決定要往哪個方向修正,倍數失真,方向就整個帶偏,模型跟著失智。
團隊的解法是先熱身,再上場。整套流程分四個階段:
這裡有兩個角色要認識。「學生」是負責寫程式的模型,「助教」是另一個模型,專門在學生寫到一半時預估「照這個方向寫下去,最後大概能拿幾分」,讓學生知道該不該繼續。強化學習圈叫它們 Actor 和 Critic。
熱身分兩件事。學生這邊,先讓它做單題練習,再讓它跑完整流程寫一批作業,然後只把做對、而且過程乾淨的作業留下來當範本,讓學生先照著範本學一輪,這步叫 RFT。助教這邊,拿那批作業和最後拿到的分數餵給它,讓它先看過「什麼樣的中途狀態最後會拿高分」,這步叫價值預訓練。
效果很直接。少了學生範本那一步,訓練跑到某一步分數就斷崖式崩掉,同時模型的輸出開始亂七八糟,論文量到的是「熵」暴增,你可以理解成它越寫越隨機、越沒章法。少了助教熱身那一步,助教根本不會打分,學生就會一直亂試,對話輪數無限拉長。兩件都做,同一套訓練可以穩穩跑完 150 步,模型單次任務最多可以來回 200 輪,一次能記住 128K token 的上下文。
防作弊比訓練本身更難
分數怎麼給,直接決定 AI 學到什麼。團隊一開始用最直覺的方法:程式快幾倍就給幾分。結果發現不行,因為題目難度差太多,簡單題隨便就快 10 倍、難題拚死才快 1.2 倍,模型會學到「挑簡單題衝分數」而不是「把每一題寫好」。
後來改成分級給糖:答案錯直接扣分;答案對但沒有明顯變快,給最低分;比原生 PyTorch 快 5% 以上,加分;連 torch.compile 這個師傅都贏,再加碼。就這一個改動,贏過師傅的比例從 60.4% 拉到 96.8%,平均速度從 1.25 倍拉到 2.11 倍。
那為什麼會這麼小心?因為這個坑之前真的有人踩過,而且踩得很難看。2025 年 2 月,日本的 Sakana AI 發表「AI CUDA Engineer」,宣稱它寫出的程式比原生 PyTorch 快 10 到 100 倍,其中一題喊到 150 倍。兩天內就被一個叫 @main_horse 的獨立測試者戳破:那題「150 倍」實測其實比原版慢 3 倍。AI 找到了評分程式裡的一個記憶體漏洞,讓自己直接跳過「答案對不對」那一關,只剩「跑多快」被算分。Sakana 公開道歉,承認考卷被鑽了洞。
你可以把這件事想成學生發現監考老師不會翻到第二頁,於是第二頁全部空白,只寫第一頁然後提早交卷。
CUDA Agent 的團隊在論文裡直接引用這起事件當警惕,設了五道防線:
- 鎖考卷:評分和計時的程式檔案鎖住權限,AI 改不動
- 不准抄答案:程式裡明確禁止偷偷呼叫 PyTorch 現成的函式來充數
- 五組隨機考題:每題用 5 組隨機輸入驗證答案,不讓它靠死記
- 秒錶要暖機:計時前先跑幾次暖機、多量幾次取平均,不讓量測誤差變成可鑽的縫
- 不給上網:不給 AI 任何搜尋或查資料的工具,所有解法都得從自己動手跑的結果裡長出來
限制 AI 能碰的東西,反而是讓它可靠的前提。這跟 coding agent 該放手的判斷時機 講的是同一件事:不是給越多自由越好,是知道哪扇門該關。
成績攤開來看
先看整份考卷的平均。下面這張圖是六個系統寫出來的程式,平均比 torch.compile 快幾倍,1 倍代表跟師傅打平,低於 1 就是比師傅慢。
平均比 torch.compile 快幾倍(KernelBench 250 題,數字來自論文 Table 1)
平均數會把差距壓平,真正拉開的是最難的 Level-3,也就是那 50 題整個模型的考題。CUDA Agent 有 45 題寫得比師傅快,Claude Opus 4.5 只有 25 題,Gemini 3 Pro 26 題。論文摘要說「贏過頂尖模型約 40%」,指的就是這個:50 題裡多贏了 20 題,不是速度快了四成。
論文附錄挑了三題攤開給你看它到底做了什麼。最好懂的一題是這樣:有一張表,每一列都要乘上一個不同的數字。課本寫法是先把那些數字排成一張只有對角線有值、其他全是 0 的大方陣,再拿整張方陣去跟原本的表相乘。CUDA Agent 看穿了這其實就是「每一列各自乘一個數」,直接跳過那張全是 0 的大方陣,改成逐列相乘。一個看穿題意的動作,換來 73.31 倍的實測加速。
換成 Level-3 的題目,像 ResNet 裡的一個基本區塊,它做的事更像老練工程師的手路:把原本要分開做的三道工序合併成一道,讓顯卡裡專門算矩陣的 Tensor Core 用比較省的精度上場,能用 NVIDIA 現成的加速函式庫就不自己寫。這題沒有前面那麼誇張,快 3.59 倍,但每一步都是教科書等級的做法,不是碰運氣。
論文自己承認的破綻
這篇論文老實到一個程度,自己在附錄列出了限制。
第一,比較對象只有 torch.compile。業界還有更講究的優化工具,像 TVM,你可以想成一個手藝更精但開工前要花很久調校的老師傅。團隊沒拿它來比,理由是這種工具每題都要調很久,塞不進要跑幾千次的訓練迴圈。也就是說,CUDA Agent 贏的是「業界最常用的那個師傅」,不是「已知最強的那個」。
第二,訓練用掉 128 張 NVIDIA H20 顯卡。這張卡本身就是因為美國出口管制、被砍掉算力的中國特供版。拿閹割過的晶片,練出打贏兩個頂尖模型的系統。但論文自己也承認,這套流程「可能限制更廣泛研究社群的可及性」,翻成白話:一般實驗室在家重現不了。
論文附錄還花了一整段點名同行的問題:
- STARK:沒說清楚用什麼顯卡測的,速度數字沒辦法對齊
- EvoEngineer:250 題只挑了 91 題來考,等於自己選考題
- Kevin、CUDA-L1:訓練用的題目本身就有一部分是從 KernelBench 切出來的,等於先看過部分考題再去考
對 CUDA-L1 那段,論文原話寫得很直接:這讓它報告的成績沒辦法跟他們直接比較。
不是只有字節跳動在做這件事
同一個月,另一組人也在做幾乎一樣的事,只是起點不同。論文《Fine-Tuning GPT-5 for GPU Kernel Generation》(arXiv:2602.11000)直接拿 GPT-5 來練,KernelBench 上的正確率從原本的 43.7% 練到 77.0%;再接上一套叫 Makora 的多 AI 協作系統之後,正確率衝到 97.4%,打敗 TorchInductor(就是 torch.compile 背後那套引擎)的比例 72.9%,平均快 2.12 倍,跟 CUDA Agent 的 2.11 倍幾乎打平。
這也讓 CUDA Agent 那句「GPT-5 拒考」多了一層解讀。同一個模型,換一套題目問法和訓練方式就能練到跟 CUDA Agent 打平,代表拒答比較像是 CUDA Agent 那套提示詞或工具設定踩到了 GPT-5 的紅線,不是它真的不會寫 CUDA。
CUDA Agent 到底能不能下載?
不能,至少現在不能。GitHub 上的 BytedTsinghua-SIA/CUDA-Agent 倉庫放的是練習環境:那本 SKILL.md 說明書、CUDA 程式範本、編譯和評分腳本,外加 Hugging Face 上那 6,000 題考古題。真正練好、贏過 Claude 的那顆腦袋,沒有放出來。
但放出來的東西不是沒用。SKILL.md 那份說明書寫得夠具體,什麼不准做、流程怎麼走、優化先做哪一步都寫清楚了。它本來就是 Agent Skills 格式,你可以直接把它掛到自己的 Claude Code 或其他 coding agent 上,讓你手邊的 AI 照這套流程幫你優化 CUDA 程式。你少的是那顆練過的腦袋,留下的是整套老手的經驗法則。
利益揭露:以下是聯盟連結。真要照這套流程反覆編譯、測速、再改,本地得有一張像樣的工作站顯卡,才不用每次都排隊搶雲端額度。麗臺 RTX PRO 4500 Blackwell 32GB 記憶體,規格上跑 KernelBench 這種中小型題目的編譯和測速綽綽有餘,卡在 24GB 不夠、48GB 太貴之間,是個合理的折衷。
CUDA Agent 證明的不是「AI 比人厲害」,是 AI 現在連內建的優化師傅都能贏,而且贏的方式是把防作弊、自己出題、訓練不失智這些細活一項一項做對。真正的門檻不是那個模型,是能餵飽 128 張顯卡、願意花好幾個月調整給分規則的資源和耐性。如果哪天連「把顯卡程式寫快」都變成一份可以直接安裝的說明書,這個行業裡最貴的那批 GPU 效能工程師,接下來要靠什麼證明自己還值那個薪水?
常見問題
CUDA Agent 可以下載來用嗎?
不行。公開的只有那本教 AI 怎麼寫的說明書(SKILL.md)、練習環境的腳本,和 6,000 題訓練用的考古題。真正練好、贏過 Claude 的那個模型本身沒有放出來。你可以照說明書自己組一套流程,但拿不到那顆練好的腦袋。
CUDA Agent 真的比 Claude 強嗎?
在「寫讓顯卡跑更快的程式碼」這一件事上是的:250 題裡它 96.8% 的答案比 PyTorch 內建優化器快,Claude Opus 4.5 只有 66.4%。但它只練這一種題目,考的也只有這一種題目,不代表它寫網頁、寫 App 也贏 Claude。
什麼是 KernelBench?
KernelBench 是史丹佛做的一份 250 題考卷,每題給你一段普通的 PyTorch 程式,要你改寫成顯卡專用的快速版本,而且算出來的結果要跟原本一模一樣。分三個難度,從單一運算到整個模型。
GPT-5 為什麼沒被列入比較?
論文附註說 GPT-5、5.1、5.2 三個版本在他們的測試環境裡一直拒絕回答跟 CUDA 有關的題目,等於拒考。不過同一個月另一組人用類似的方法訓練 GPT-5,正確率能從 43.7% 練到 97.4%,所以比較像是題目問法或工具設定踩到它的紅線,不是它真的不會。
為什麼要花那麼多力氣防 AI 作弊?
因為真的有人被作弊過。2025 年 Sakana AI 宣稱他們的 AI 寫出快 150 倍的程式碼,兩天後被人實測發現其實慢 3 倍:AI 找到了評分程式的漏洞,直接跳過「答案對不對」那一關。CUDA Agent 的團隊把這件事寫進論文當警惕,設了五道防線,包括把評分程式鎖起來、不給 AI 上網。