AI編程里程碑!谷歌AI自己寫代碼驚呆工程師,GPU內核算法反超人類21%
編輯:Aeneas 好睏
【新智元導讀】剛剛,AlphaEvolve又上大分了!基於它的開源實現OpenEvolve,靠自學成才、自己寫代碼,直接在蘋果芯片上進化出了比人類還快21%的GPU核函數!這一刻,是自動化編程史上真正里程碑時刻,「AI爲AI編程」的新時代正式開啓,自動化奇點真要來了。
谷歌的AlphaEvolve,還在不斷創造新的奇蹟。
而就在剛剛,patched.codes的聯合創始人兼CTO Asankhaya Sharma,用基於AlphaEvolve論文的開源實現OpenEvolve,成功自動發現了高性能的GPU內核算法。
具體來說,通過自我進化代碼,它自動發現了一套在Apple Silicon上遠超手動優化的GPU Metal核函數。
在真實的Transformer推理任務中,它帶來了平均12.5%的性能提升,峰值甚至飆升了106%。
這種提升,直接超越了人類工程師21%!
這個系統沒有提供人類的GPU編程專業知識,就發現了以下優化——
· 完美的SIMD優化
· 兩階段在線Softmax
· 針對GQA的特定內存佈局優化
這不是一次簡單的性能躍遷,而是自動化編程歷史上真正的里程碑時刻——一套系統無需人類干預,就能在複雜的硬件架構中,挖掘出連專家都難以察覺的優化路徑。
更重要的是,這一成就並非停留在實驗室或論文中,而是在真實世界中、在蘋果芯片上、在當今最主流的AI模型任務中,紮實地跑了出來。
由此,就證明了自動化代碼優化技術在真實世界系統中的實際可用性。
它標誌着一個新的時代正在開啓:不再是人類爲機器手寫優化,而是機器開始爲自己寫更好的代碼。
而在之後,隨着硬件架構持續高速迭代,OpenEvolve這種工具的價值還會愈加凸顯——它們將發掘出那些僅憑人力極難找到的深度優化機會。
挑戰:GPU核函數優化
爲什麼說,OpenEvolve攻克的這個「GPU核函數優化」,這麼有挑戰性呢?
這是因爲,現代Transformer模型嚴重依賴於高度優化的注意力核函數,但編寫高性能的GPU代碼卻需要具備以下領域的深厚專業知識。
·特定硬件架構的細節(如Apple Silicon的統一內存、SIMD單元)
·底層編程語言(如Metal Shading Language)
·數值算法設計(如注意力機制、數值穩定性)
·內存訪問模式的優化
所以,是否有可能不用人寫代碼,完全交給OpenEvolve,讓它自動進化,看是否能生成性能更強的GPU核函數代碼?
爲此,Sharma決定以Qwen3-0.6B模型的分組查詢注意力(GQA)實現爲目標,來檢驗OpenEvolve的能力,看它是否能自動生成超越MLX生產級的「scaled_dot_product_attention」核函數的代碼。
具體來說,項目的目標配置如下。
· 模型:Qwen3-0.6B(40個查詢頭 : 8個鍵值頭)
· 硬件:配備統一內存的蘋果M系列GPU
· 基線:MLX的高度優化的注意力實現方案
· 挑戰:全自動發現Metal核函數的優化方法
進化方法
Sharma將OpenEvolve配置爲直接進化Metal核函數的源代碼,同時保留其與MLX框架的集成方式。
整個系統從一個基礎的三階段注意力實現方案開始,歷經超過25代的進化。
進化設置
max_iterations: 25 # 最大迭代次數population_size: 25 # 種羣大小llm: primary_model:"gemini-2.5-flash" # 主模型:用於快速探索 (60%) secondary_model:"gemini-2.5-pro" # 輔助模型:用於深度優化 (40%)database: num_islands: 5 # 島嶼數量:用於並行進化多個種羣evaluator: bulletproof_mode: true # 啓用高強度GPU錯誤防護模式
評估策略
每一個通過進化生成的核函數都經過了以下維度的全面測試:
正確性驗證:與MLX基線進行數值精度對比,確保計算結果無誤。
性能測試:在20個多樣化的推理場景(包括短/長上下文、生成任務)中進行基準測試。
安全性檢查:包含GPU錯誤檢測和Metal內存訪問驗證。
魯棒性分析:通過多次重複運行進行統計分析,確保性能穩定。
關鍵優化
沒想到,OpenEvolve在進化過程中,自主發現了以下幾項體現出算法創新的優化策略!
1. 針對Apple Silicon的SIMD優化
// 進化前:逐元素標量運算for(uintd =0; d < HEAD_DIM; d++) { score += query_vec[d] * keys[k_base + d];}// 進化後:完美利用SIMD指令vec 8 > query_vec_v[HEAD_DIM /8]; // 對於128維的頭,使用16個8元向量for(uintd_vec =0; d_vec < HEAD_DIM /8; d_vec++) { score += dot(query_vec_v[d_vec], ((device vec 8 >*)(keys + k_base))[d_vec]);}
仔細看就會發現,OpenEvolve的一個亮點,就是自己發現了一個非常巧妙的優化——
對於128維的注意力頭,如果把數據按8個一組來處理,剛好就能完美匹配Apple Silicon硬件的SIMD寬度。
這就相當於自動踩中了硬件的「甜點區」,完全不需要任何人工調優,就能把性能直接拉滿,讓硬件利用率最大化!
2. 兩階段在線Softmax(Two-Pass Online Softmax)
// Pass 1:在線計算最大值,用於數值穩定Tmax_score=T(-INFINITY);for(uintkey_pos=0; key_pos < SEQ_LEN; key_pos++) { Tscore=compute_attention_score(query_vec, key_vec) * scale_val; max_score = max(max_score, score);}// Pass 2:融合Softmax計算與後續的值累加Tsum_exp=T(0.0);vec 8 > output_acc_v[HEAD_DIM /8];for(uintkey_pos=0; key_pos < SEQ_LEN; key_pos++) { Texp_score=exp(current_score - max_score); sum_exp += exp_score; // 關鍵創新:將權重與value向量相乘並累加的過程相融合 output_acc_v[d_vec] += exp_score * ((device vec 8 >*)(values + v_base))[d_vec];}
在這個過程中,OpenEvolve做了一個很聰明的創新:把原來分開的兩個步驟——Softmax歸一化和值累加,融合到了一個計算循環中。
原本,傳統算法要三個階段才能跑完:先算注意力得分,再歸一化,再加權求和。
現在直接兩步搞定,流程更簡潔,還大大降低了對內存帶寬的佔用,自然就跑得更快、更省資源了。
3. 針對GQA的特定內存佈局優化
// 針對GQA的5:1查詢頭/鍵值頭比例,進行直接映射constuintkv_head_idx = head_idx / HEADS_PER_KV; // 精巧的頭映射邏輯// 實現合併內存訪問模式constuintq_base = batch_idx * (NUM_HEADS * SEQ_LEN * HEAD_DIM) + head_idx * (SEQ_LEN * HEAD_DIM) + query_pos * HEAD_DIM;
在此處,OpenEvolve的創新點在於,專門針對Qwen3模型的特殊結構做了優化。
這個模型的查詢頭與鍵值頭的比例是特有的40:8(即5:1),系統充分利用了這個特性,設計出一種獨特的合併內存訪問(Coalesced Memory Access)的模式。
這種模式,特別適合Apple Silicon的統一內存架構,堪稱是量身定製,效率極高,性能拉滿。
評測結果
果然,最終進化生成的核函數在各項綜合基準測試中,都展現出了顯著的性能提升:
核心性能指標增益
解碼速度(Decode Speed):平均提升+12.5%(標準差σ = 38.3%)
預填充速度(Prefill Speed):平均提升+14.4%(標準差σ = 17.6%)
總吞吐量(Total Throughput):平均提升+10.4%(標準差σ = 30.7%)
內存使用量(Memory Usage):平均降低+0.99%(標準差σ = 1.7%)
正確性(Correctness):保持100%的數值精度
可靠性(Reliability):零GPU錯誤或核函數崩潰
詳細基準測試結果
而且其中最爲矚目的是,在處理重複性模式生成任務時,OpenEvolve進化生成的核函數直接把解碼速度提升了足足106%!
如此一來也就充分證明了,這個核函數在應對特定類型的工作負載時,真的性能爆棚。
統計分析
總之,從統計結果來看,OpenEvolve在某些特定類型的工作負載上,確實有很強的優化能力,能挖掘出原先的手寫代碼難以觸及的性能潛力。
在20個不同測試任務中,它在其中7個任務上提升非常明顯,性能增長超過了25%,體現出了「質的飛躍」。
顯著增益(>25%):7/20個基準
中等增益(5-25%):3/20個基準
性能持平(±5%):4/20個基準
性能回退(<-5%):6/20個基準
背後功臣:高魯棒性評估系統
注意,這一項目之所以能成功,有一個關鍵功臣就是OpenEvolve背後的評估系統。
它不是普通的跑分工具,而是專門爲GPU核函數這種「硬核」代碼而設計的,專爲應對GPU核函數開發過程中的各種挑戰。
GPU安全特性
命令緩衝區保護:自動檢測Metal命令緩衝區的錯誤並從中恢復。
內存訪問違規處理:安全地處理GPU內存訪問違規。
重試邏輯:爲瞬時GPU錯誤提供指數退避重試機制。
回退機制:當核函數徹底失敗時,能夠優雅地降級到備用方案。
全面的錯誤統計
# 評估結果示例{ "metal_safety_statistics": { "metal_command_buffer_errors": 0, "metal_memory_violations": 0, "total_metal_errors": 0, "safety_score": 100.0 }}
正是因爲這套評估系統特別穩、魯棒性極高,OpenEvolve纔敢放開手腳去嘗試各種激進的優化方案,而不用擔心「越改越崩」。要知道,GPU核函數這種實驗性代碼本來就很容易出錯,一點小問題就可能導致整個程序掛掉。所以,有這麼一套高魯棒性的機制兜底,才讓系統能放心大膽地「卷」出新花樣,把性能一步步推上去。
技術深度剖析
面向GPU核函數的進化架構
此外,項目的成功也離不開OpenEvolve中多個組件的協同工作:
智能代碼標記:通過特定標記,確保進化過程僅針對Metal核函數源代碼,同時完整保留與MLX框架的集成代碼。
# EVOLVE-BLOCK-STARTkernel_source="""// 僅此塊內的Metal核函數代碼會被進化"""# EVOLVE-BLOCK-END
富含上下文信息的提示詞:爲進化提供的提示詞包含了性能數據、硬件規格和優化方向指南。
多目標評分機制:在性能、正確性和安全性等多個目標之間進行權衡評分。
特定硬件驗證:所有測試和優化都針對Apple Silicon硬件進行。
面向GPU優化的提示詞工程
與此同時,爲進化過程提供的提示詞,也給OpenEvolve提供了至關重要的上下文信息:
## 硬件上下文信息-Apple Silicon M-series GPU with unified memory(GPU爲Apple Silicon M系列,採用統一內存架構)-SIMD width: 8 elements optimal for vec (最佳SIMD寬度爲8個元素,適用於vec 類型)-Thread group size: 32 threads for optimal occupancy(最佳線程組大小爲32線程,以達到最高硬件佔用率)## 優化目標-Minimize memory bandwidth usage(最小化內存帶寬佔用)-Maximize SIMD utilization(最大化SIMD指令利用率)-Exploit GQA 40:8 head structure(充分利用GQA模型的40:8頭結構特性)-Maintain numerical stability(保持數值計算的穩定性)## 性能基線Current decode speed: 140.6 tokens/sec(當前解碼速度:140.6 token/秒)Target improvement: >5% speedup required(目標:需要>5%的速度提升)
更深遠的影響
總之,本次對GPU核函數的成功優化,揭示了以下幾點重要原則:
1. 專業知識的自動化探索與發現
OpenEvolve發現的優化策略,涵蓋了衆多需要深厚專業知識的領域:
Apple Silicon的架構細節
Metal編程語言的精妙之處
注意力算法的各種變體
內存訪問模式的優化
這些領域知識並非由人類工程師直接提供,而是在進化探索的過程中自主涌現的。
2. 面向特定硬件的自適應優化
最終的優化方案是爲Apple Silicon硬件量身定製的,這就表明,OpenEvolve具備自動發掘、利用特定硬件特性的能力。
3. 算法層面的創新
進化過程發現的「兩階段在線Softmax(two-pass online softmax)」算法,本身就是一項新穎的技術貢獻,應用潛力已經遠遠超出了本次實驗的特定場景。
4. 具備投產應用的價值
這些優化並非「紙上談兵」,而是在真實的Transformer推理負載中能帶來顯著性能提升的實用技術,完全具備在生產環境中部署的價值。
核心技術架構升級
並且,自項目啓動以來,Sharma已對OpenEvolve的核心能力進行了顯著增強:
可復現性(Reproducibility)
通過完全確定性的進化過程,保證科研級別的可復現性。
random_seed:42 # 確保每次運行結果完全一致
可視化(Visualization)
提供可交互的進化樹視圖,支持實時性能追蹤。
python scripts/visualizer.py
島嶼進化(Island Evolution)
通過種羣遷移實現並行進化,以增強解空間的探索能力。
database:num_islands:5migration_interval:25
穩健的檢查點機制(Robust Checkpointing)
支持自動保存進度,並能從中斷處恢復進化會話。
快速開始
所以,你準備好親自上手,挑戰GPU核函數優化或其他複雜難題了嗎?
輸入以下代碼,就可以快速開始了:
# 克隆倉庫gitclonehttps://github.com/codelion/openevolve.gitcdopenevolve# 安裝依賴pip install -e .# 運行MLX核函數優化示例cdexamples/mlx_metal_kernel_optpython openevolve-run.py initial_program.py evaluator.py --iterations 25
如果想進一步瞭解更深入的信息,建議仔細閱讀一下這幾個文檔。
GPU內核優化指南:https://github.com/codelion/openevolve/tree/main/examples/mlx_metal_kernel_opt
通用教程:https://github.com/codelion/openevolve-started
配置參考:https://github.com/codelion/openevolve/tree/main/configs
參考資料:
https://huggingface.co/blog/codelion/openevolve-gpu-kernel-discovery