新智元報道
編輯: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 (uint d = 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 (uint d_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:在線計算最大值,用于數值穩定
T max_score = T(-INFINITY);
for (uint key_pos = 0; key_pos < SEQ_LEN; key_pos++) {
T score = compute_attention_score(query_vec, key_vec) * scale_val;
max_score = max(max_score, score);
}
// Pass 2:融合Softmax計算與后續的值累加
T sum_exp = T(0.0);
vec 8 > output_acc_v[HEAD_DIM / 8];
for (uint key_pos = 0; key_pos < SEQ_LEN; key_pos++) {
T exp_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查詢頭/鍵值頭比例,進行直接映射
const uint kv_head_idx = head_idx / HEADS_PER_KV; // 精巧的頭映射邏輯
// 實現合并內存訪問模式
const uint q_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-START
kernel_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: 5
migration_interval: 25
穩健的檢查點機制(Robust Checkpointing)
支持自動保存進度,并能從中斷處恢復進化會話。
快速開始
所以,你準備好親自上手,挑戰GPU核函數優化或其他復雜難題了嗎?
輸入以下代碼,就可以快速開始了:
# 克隆倉庫
git clone https://github.com/codelion/openevolve.git
cd openevolve
# 安裝依賴
pip install -e .
# 運行MLX核函數優化示例
cd examples/mlx_metal_kernel_opt
python 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
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
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.