1. 簡介
在本程式碼研究室中,您將在 Google Cloud 上執行前兩項 AlphaEvolve 實驗。AlphaEvolve 是 Google DeepMind 的 AI 輔助進化式程式碼架構,可使用 Gemini 編寫及改良程式碼,並根據您定義的指標評分。您會從圓形封裝開始,這是一個小型幾何問題,您可以實際觀察結果如何改善,然後在更困難的旅行推銷員問題上重複此過程,以便記住模式。
這兩項實驗都使用本機評估,候選程式碼會在您自己的電腦上執行,因此不需要 GPU,也不必管理叢集。唯一使用的雲端服務是 AlphaEvolve API,用於產生候選人。

學習內容
- 針對 Google Cloud 專案設定 AlphaEvolve 實驗
- 執行進化搜尋,在本機改善圓形封裝演算法
- 查看最佳演進式計畫的分數、排名和視覺化資料
- 重複旅行推銷員問題的迴圈,概括模式
- 調整搜尋預算 (候選人、並行、模型)
軟硬體需求
本程式碼研究室適合各種程度的 AI/機器學習工程師和開發人員。您不需要具備演化運算背景知識。
預計完成時間:45 到 60 分鐘。
費用:本程式碼研究室使用本機評估 (無 GPU,無 GKE)。系統只會針對產生候選人的 AlphaEvolve API 用量計費。
測試環境:AlphaEvolve Cloud 用戶端程式庫 v0.1.0、Python 3.9 以上版本,以及 circle_packing 和 tsp 範例。
2. 事前準備
選取專案並啟用 API
- 在 Google Cloud 控制台中,選取或建立已啟用計費功能的專案,然後在終端機中設定:
gcloud config set project <YOUR_PROJECT_ID>
- 啟用 Discovery Engine API,這是 AlphaEvolve 的服務對象:
gcloud services enable discoveryengine.googleapis.com
找出 Gemini Enterprise 應用程式 ID
AlphaEvolve 是透過 Gemini Enterprise 提供服務 (底層 REST 介面為 Discovery Engine API)。您需要應用程式的 ID (而非顯示名稱) 才能設定 GE_APP_ID。
- 開啟專案的 Gemini Enterprise 應用程式頁面。
- 按一下您的應用程式,然後複製「ID」欄位 (例如
gemini-enterprise-1234567890_1234567890123)。
驗證、複製及安裝
- 驗證應用程式預設憑證:
gcloud auth application-default login
- 複製範例存放區並開啟。您將從這個存放區根目錄執行每個指令:
git clone https://github.com/Google-Cloud-AI/alphaevolve-on-googlecloud.git
cd alphaevolve-on-googlecloud
- 建立虛擬環境,並在其中安裝 AlphaEvolve 用戶端程式庫:
uv venv
uv pip install -e ".[dev]"
uv venv 會在存放區中建立 .venv;uv pip install -e ".[dev]" 會安裝 alpha_evolve 套件 (可編輯) 和測試工具。您將使用 uv run 啟動實驗,系統會自動使用這個環境。
3. 瞭解 AlphaEvolve 迴圈
執行任何項目之前,請先瞭解 AlphaEvolve 需要的三個部分。這是您在每次實驗中都會重複使用的心理模型。
種子計畫和 EVOLVE-BLOCK
AlphaEvolve 只會重新編寫兩個標記之間的程式碼。檔案中的其他所有內容都是固定架構,無法觸及。開啟 examples/circle_packing/src/program.py,種子是簡單的同心環封裝:
# EVOLVE-BLOCK-START
"""Constructor-based circle packing for n=26 circles"""
import numpy as np
def construct_packing(n, random_seed: int):
"""Construct an arrangement of 26 circles in a unit square.
The goal is to maximize the sum of their radii.
Returns (centers, radii, sum_of_radii).
"""
rng = np.random.default_rng(random_seed)
centers = np.zeros((n, 2))
# A simple starting pattern — evolution will improve this.
centers[0] = [0.5, 0.5] # one circle in the center
for i in range(8): # 8 in an inner ring
angle = 2 * np.pi * i / 8
centers[i + 1] = [0.5 + 0.3 * np.cos(angle), 0.5 + 0.3 * np.sin(angle)]
for i in range(16): # 16 in an outer ring
angle = 2 * np.pi * i / 16 * rng.uniform(0.9, 1.1)
centers[i + 9] = [0.5 + 0.7 * np.cos(angle), 0.5 + 0.7 * np.sin(angle)]
centers = np.clip(centers, 0.01, 0.99) # keep everything in the square
radii = compute_max_radii(centers, random_seed)
return centers, radii, np.sum(radii)
def compute_max_radii(centers, random_seed: int):
"""Grow each circle to touch its nearest border or neighbor (no overlaps)."""
# ... see src/program.py for the full helper ...
# EVOLVE-BLOCK-END
/ EVOLVE-BLOCK-START EVOLVE-BLOCK-END 以外的所有項目 (包括 evaluate() 函式和重疊檢查) 都會保持凍結狀態。這就是訣竅所在:Gemini 可以提議任何包裝演算法,但無法變更候選人的評分方式。
評估者和分數
examples/circle_packing/src/evaluate.py 會在沙箱中執行每個候選項目,並傳回分數。圓形封裝的指標為 sum_of_radii,值越高越好:
CIRCLE_PACKING_EVALUATION_METRIC = "sum_of_radii"
CIRCLE_PACKING_EVALUATION_INPUTS = {"n": 26}
如果候選者違反規則 (圓圈重疊或離開方塊),評估人員會傳回 -inf,以及說明問題的深入分析。這些洞察資料會回饋給 Gemini,讓下一代模型避免犯下相同錯誤。
4. 執行第一個實驗
設定實驗
在存放區根目錄中,使用圓形封裝範本建立 .env:
cp examples/circle_packing/example.env .env
開啟 .env,並只設定專案和應用程式 ID,其他所有項目都會在首次執行時使用預設值:
PROJECT_ID=<YOUR_PROJECT_ID>
GE_APP_ID=<YOUR_GEMINI_ENTERPRISE_APP_ID>
預設值會使用 Gemini 模型混合 (MODEL_1=gemini-3.5-flash 的權重為 0.7,MODEL_2=gemini-3.1-pro-preview 的權重為 0.3) 生成候選項目,並將搜尋上限設為 MAX_PROGRAMS_EVALUATED=10 (CONCURRENCY=4),足以快速觀察迴圈運作。
開始演進
從存放區根目錄執行實驗:
uv run python -m examples.circle_packing.src.run_evolution
這會上傳種子程式、啟動搜尋,並執行本機控制迴路,直到評估 10 個候選項目為止。由於您是直接呼叫模組 (沒有包裝函式),因此可以確切瞭解執行的內容,並編輯檔案進行實驗。
畫面會顯示類似以下的輸出:
INFO:alpha_evolve.experiment:Creating a new AlphaEvolve experiment INFO:alpha_evolve.controller:Evolution loop started: 4 sampler(s), 32 evaluator(s), target=10 programs INFO:alpha_evolve.controller:Waiting for the backend to generate candidates... (generated=0, evaluated=0/10, idle=10s) INFO:alpha_evolve.workers:Candidate 1060655338894100 evaluated → sum_of_radii=0.8114 INFO:alpha_evolve.controller:Progress: generated=2, evaluated=1/10, queued=0 ... INFO:alpha_evolve.controller:Stopping criteria met (10/10 programs evaluated).
早期候選人的分數通常介於 0.8 到 1.0 之間,之後搜尋結果會有所改善。迴圈完成後,系統會列印排名最高的程式,並以 matplotlib 算繪最佳封裝。
注意:疑難排解:PERMISSION_DENIED 或 403 通常表示專案未啟用 Discovery Engine API。請重新檢查「事前準備」步驟。如果執行作業立即結束並顯示「Failed to create experiment」(無法建立實驗),表示 .env 中的憑證或 GE_APP_ID 有誤。
5. 解讀結果
執行會列印依 sum_of_radii 排序的前幾名程式 (值越高越好)。請注意以下兩點:
- 分數提高了。最佳進化版
sum_of_radii應勝過種子的同心圓版面配置。Gemini 通常會發現角落和邊緣附近的圓圈可以變大,並重新平衡內部。 - 系統會略過無效的候選人。如果程式產生重疊或超出範圍的圓圈,就會獲得
-inf分數,並在排名中遭到略過。這是限制回饋機制在運作,而非錯誤。
現在您已完成整個迴圈:種子 -> 生成 -> 評估 -> 評分 -> 重複。AlphaEvolve 的其他所有內容都是評估作業的執行位置變化。
6. 演變為實際搜尋:TSP
圓形封裝會快速收斂。如要感受搜尋功能在更複雜問題上的運作方式,請演化旅行推銷員問題的啟發式方法。模式完全相同,只有種子和指標會變更,TSP 範例會重複使用您的 .env (專案、預算和並行)。
- 在
.env中提高預算,讓較長的搜尋時間有改善空間:
# in .env — raise the generation cap and the evaluation target together
MAX_PROGRAMS_GENERATED=20
MAX_PROGRAMS_EVALUATED=20
- 從存放區根目錄執行:
uv run python -m examples.tsp.src.run_evolution
這裡的種子是 50 個城市中最鄰近的旅遊行程;指標是 neg_tour_length (5 個固定執行個體的負平均旅遊行程長度,因此越高越好)。開啟 examples/tsp/src/program.py,並注意 EVOLVE-BLOCK 內只有 construct_tour(distances, n)。
這兩個問題的模式相同,但零件不同:
問題 | 語言 | 評估 | 指標 (越高越好) | 進化內容 |
| Python | 當地時間 |
|
|
| Python | 當地時間 |
|
|
搜尋執行時,請觀察 neg_tour_length 攀升 (接近零) 的情況,因為 Gemini 會從最鄰近的鄰居,轉向 2-opt / or-opt 樣式的改善項目 (您未撰寫的策略)。
7. 調整搜尋結果
現在兩個執行項目都已運作,請在 .env 中調整預算:
MAX_PROGRAMS_EVALUATED:要評分的候選人數。候選人越多 = 搜尋越深入,費用/時間也越高。CONCURRENCY:一次在放送期間產生的候選人數量。MODEL_1/MODEL_2(搭配MODEL_1_WEIGHT/MODEL_2_WEIGHT) - Gemini 模型加權混合,可在圓形封裝執行中生成候選項目 (TSP 模組會讀取單一MODEL)。允許的值為gemini-3.5-flash和gemini-3.1-pro-preview。將權重轉移至較強大的模型,即可在較少的生成次數中找到更優質的節目。
每次變更後,請使用 uv run python -m examples.circle_packing.src.run_evolution (或 tsp 模組) 重新執行。
注意:提高 MAX_PROGRAMS_EVALUATED 和改用較大的模型都會增加費用。由於這個程式碼研究室使用本機評估,因此不會產生 GPU 費用,但您仍須為每個產生的候選項目支付 AlphaEvolve API 使用費。從小筆預算開始。
8. 清除所用資源
本程式碼研究室使用本機評估,因此不會有任何計費項目,包括叢集、GPU 和已部署的服務。如要完全重設結帳程序,請按照下列步驟操作:
git clean -xfd # removes .env, .venv, and generated outputs
注意: git clean -xfd 會刪除 .env (包括專案設定) 和 .venv。如要繼續實驗,請略過這項步驟。
如果您是專為本程式碼研究室建立專案,請在控制台中刪除專案,以免產生任何費用。
9. 恭喜
恭喜!您在 Google Cloud 上執行了第一個 AlphaEvolve 實驗,並使用種子程式、評分函式和 Gemini,演化出兩種演算法:圓形封裝和 TSP 啟發式演算法。
目前所學內容
- AlphaEvolve 的迴圈運作方式:種子 -> 生成 -> 評估 -> 評分 -> 重複
- EVOLVE-BLOCK 合約,可讓搜尋功能最佳化食譜,而不必操弄指標
- 分數和失敗洞察如何引導下一代
- 如何設定、執行、解讀及調整本機評估實驗
其他程式碼研究室
這些是獨立的步驟,完成順序不拘。
- 使用遠端評估工具演化編譯的程式碼:演化 Rust/C++ 演算法,並透過 Cloud Run 上的容器化評估工具評估分數。
- 在 GKE + Ray 上演進 LLM 微調:在自己的叢集上執行大量平行 GPU 評估。