Skip to content

Repository files navigation

Xiangqi AI Platform: High-Performance ResNet Engine

象棋 AI 平台:高性殘差網絡搜索引擎


📢 課程作業聲明與 AI 使用紀錄 (Course Declaration & AI Statement)

1. 使用 AI工具

  • 有使用 AI 輔助開發
  • 使用工具Google Gemini 3.5 系列模型(整合於 Antigravity IDE 智能開發套件中)。
  • 使用紀錄
    • 本專案採人機協作模式開發。在系統架構、深度學習模型(ResNet-20 雙頭架構)的設計、高並發樹狀搜尋(Alpha-Beta 剪枝、空步剪枝、靜止搜尋)以及異步 Web 介面的實作上,均透過與 Gemini 進行了多輪深度的對話引導,進行代碼生成、邏輯除錯與效能調校。
    • AI對話連結: AI對話連結

2. 原創性

  • 絕無複製任何同學的作業,亦無直接複製貼上網路上現有的專案。
  • 數據來源:透過自動化腳本連接開源社群 Hugging Face 上的 GazTrab/Xiangqi-dpo 數據集,下載 2023-2026 年專業大師的真實打譜資料進行特徵化轉換 (14, 10, 9) 與訓練。
  • 個人原創貢獻
    • 混合架構整合:將 PyTorch 深度神經網路(負責空間直覺)與傳統 Minimax 搜尋樹(負責戰術計算)融合,實作高性能象棋 AI。
    • 搜尋效率優化:手寫 Null Move Pruning、Quiescence Search 以及動態 Iterative Deepening 引擎,並進行「靜止搜尋下斷開 ResNet」以達到 10 倍以上效能提速。
    • 嚴謹科學 MLOps 驗證:建立了包含 ROC-AUC、PRC、信心校準(Calibration)的完整評估流水線,並進行獨立 50 個攻防極端盤面抽檢(Spot-check),AI 準確率達 100%。
    • 中文 SAN 記譜系統:手動設計並實現了將 UCI 走法座標轉成「炮二平五」、「車一進一」等傳統中文象棋記譜的轉換模組。
    • 健全 Web 前後端:以 Flask + Waitress 驅動高併發後端,前端採用 Vanilla CSS3 + HTML5 Canvas 設計高質感玻璃擬態對弈 UI,內建 AI 戰敗主動投降與非法走法自動除錯重試黑名單機制。

3. 專案題目分類與說明 (Project Classification & Explanation)

根據題目要求的分類規格,本專案主要歸屬並實作了以下類型的技術:

  • 神經網路引擎 (Neural Network Engine)
    • 說明:專案核心實作了基於 PyTorch 的雙輸出頭殘差網路(resnet_model.py 中的 XiangqiResNet),包含負責評估盤面勝率的 Value Head 與預估走法機率分佈的 Policy Head,作為搜尋引擎的「大腦」,過濾與引導棋局走法。
  • 機器學習某種演算法或應用 (Machine Learning)
    • 說明:專案包含一整套科學化的機器學習/深度學習開發與 MLOps 流水線(pipeline/):從 Hugging Face 下載真實人類大師對局進行 (14, 10, 9) 的特徵轉換、利用 PyTorch + AMP 混合精度 + CUDA 進行模型訓練、以及使用 ROC-AUC、PRC 曲線與信心校準 (Calibration) 進行模型評估,並實作了 50 個極端盤面的 Spot-check(隨機抽檢)驗證機制。
  • AI 某種方法或應用 (AI Method/Application)
    • 說明:本專案是經典的 「混合式博弈 AI (Hybrid AI Game Engine)」 應用。它將深度學習殘差網路的直覺評估與傳統博弈樹搜索演算法(Minimax、Alpha-Beta 剪枝、空步剪枝 NMP、靜止搜尋 QS、疊代加深等)深度融合,代表了博弈決策領域的 AI 實踐。
  • Agent 框架或應用 (Agent Application)
    • 說明:本象棋 AI 在對弈過程中,能自主感知棋盤狀態(State)、透過搜尋與神經網路做出規劃、並在環境中輸出最佳行動(Action),屬於單一任務決策型 Agent 的典型應用。(註:本專案非 LLM 驅動的多智能體協作框架)

📈 版本演進過程 (Version Evolution)

本專案經歷了「一連串的改良版本」演進,從傳統算法一步步進化至高度智能的混合式 AI 引擎:

graph TD
    V1[v1.0 傳統博弈樹基線] -->|導入深度學習| V2[v1.5 單頭 ResNet-10 價值網絡]
    V2 -->|架構升級與數據擴充| V3[v2.0 雙頭 ResNet-20 + CUDA]
    V3 -->|搜尋引擎優化與剪枝| V4[v2.5 NMP + 靜止搜尋 + 疊代加深]
    V4 -->|產品級整合| V5[v3.0 玻璃擬態Web + 中文記譜 + 容錯]
    V5 -->|效能飛躍與搜尋優化| V6[v3.5 輻射狀檢查 + PVS + LMR + 狀態保護]
    V6 -->|SEE剪枝與智慧覆盤| V7[v4.0 靜態交換評估 + AI覆盤分析 + GPU無限制對決]
    V7 -->|置換表與殘局優化| V8[v5.0 置換表淘汰 + 殘局優化 + 相對Elo + 精度分析]
    V8 -->|CPU/GPU跑分與效能比對| V9[v6.0 CPU/GPU 雙硬體效能跑分與對比圖表]
Loading

1. v1.0 — 傳統啟發式搜尋基線 (Baseline)

  • 核心實作:使用傳統的 Minimax 搜尋樹結合 Alpha-Beta 剪枝,以 PST (Piece-Square Tables) 與棋子基本價值(車9, 炮4...)作為評估函數。
  • 局限:缺乏「棋感」,無法應對中後局的抽象戰術,容易出現無效的重覆步法。

2. v1.5 — 深度學習評估導入 (ResNet-10 Value Network)

  • 核心實作:導入 10 層殘差網絡 (ResNet-10) 作為 Value Network,負責評估當前局勢勝率。結合傳統 Material Score 進行混和評估。
  • 局限:由於單頭模型僅預測局勢(Value),搜尋樹中需要對每個節點調用神經網路,運算開銷巨大且思考速度慢。

3. v2.0 — 雙頭 ResNet-20 架構與海量數據訓練 (AlphaZero-style)

  • 核心實作
    • 將網絡升級為 20 層殘差塊 (ResNet-20),採用 Value & Policy 雙出口頭 (Dual-Head),同時預測「盤面勝率」與「合法步法機率分布」。
    • 接接 Hugging Face 抓取 15,000 筆專業大師棋譜作為精確訓練數據庫。
    • 導入 自動混合精度 (AMP)CUDA 硬體加速,徹底移除 CPU 算力瓶頸,GPU 推論效率達到 CPU 的 17 倍。
  • 收效:測試集準確率從 50% 飆升至 80%,具備強大的盤面鑑別度 (ROC-AUC = 1.00)。

4. v2.5 — 搜尋引擎極致剪枝與超時防禦 (High-Performance Engine)

  • 核心實作
    • 空步剪枝 (Null Move Pruning, NMP):在深層節點嘗試過濾無效著法,大量減少不必要的分支搜尋。
    • 靜止搜尋 (Quiescence Search, QS):防範「地平線效應」,強迫搜尋至局勢平靜(無吃子狀態)為止。優化點:在靜止搜尋中移除了 ResNet 調用,改為純 Material Score,搜尋效能提升 1000%。
    • 疊代加深 (Iterative Deepening):結合剩餘時間動態決定搜尋深度,防止思考超時。
  • 收效:AI 實戰戰鬥力大幅增加,Enhanced 版本在 20 場自對弈中以 55% 勝率擊敗 Baseline 版本。

5. v3.0 — 產品級 Web 前後端與中文記譜 (Production Ready)

  • 核心實作
    • 建立暗黑玻璃擬態(Glassmorphism)響應式 Web 遊戲介面。
    • 獨創中文記譜系統,將 UCI 移動轉為「炮二平五」等中文格式並呈現在滾動面板中。
    • 加入 Waitress 生產級 WSGI 服務 驅動 Flask 後端。
    • 導入 AI 非法移動自動黑名單容錯重試 (Retry/Blacklist)主動判定投降 (Surrender) 機械,全面提升實戰容錯率與使用者體驗。

6. v3.5 — 核心演算法極致效能與搜尋樹升級 (Extreme Performance & Algorithmic Optimization)

  • 核心實作
    • 輻射狀將軍判定:實作了 is_square_attacked 機制並結合 O(1) 國王位置追蹤,將軍檢測不再遍歷全盤生成對手所有合法走法,顯著消除規則開銷。
    • 搜尋演算法升級:整合 主要變更搜尋 (PVS)後期走法削減 (LMR) 剪枝,極大提升了 alpha-beta 搜尋深度與剪枝率。
    • 搜尋樹狀態保護:導入 save_staterestore_state,全面解決了在搜尋樹展開/還原棋步時 Zobrist Hash 與國王坐標損壞的隱性 Bug。
  • 收效:中局複雜盤面 (Depth 3) 的搜尋 NPS 從 ~1268 提升至 ~9458 (達 7.5 倍效能飛躍 🚀),搜尋更深、決策更快且更加精確穩定。

7. v4.0 — 靜態交換評估 (SEE) 與 AI 智慧覆盤平台 (Static Exchange Evaluation & Game Review)

  • 核心實作
    • 靜態交換評估 (SEE):在 xiangqi_engine.py 與 ai_engine.py 中新增 SEE 演算法,以 $O(1)$ 的棋力分析模擬多子捕獲交換,對所有捕獲走步進行精準排序與過濾,並直接在靜止搜尋中剪除負值吃子,再次優化並減少搜尋分支。
    • AI 智慧覆盤功能 (Game Review):在 app.py 與前端新增覆盤分析 API(/api/analyze_game),玩家對局結束後可一鍵分析,自動評估整局走法並給出極具質感的彩色標籤:妙手 (Brilliant)最佳 (Best)良好 (Good)失誤 (Mistake)敗著 (Blunder)
    • GPU 賽事升級與勝率拉開:更新 run_full_tournament.py 賽事模擬器,完全使用 GPU 上的 ResNet-20 網路進行精準博弈,取消步數與思考時間限制(直達勝負/三重複刻和局),拉開難度級別間的實力差距,並記錄每次對戰的平均耗時與每步平均思考時間。
  • 收效:成功整合高性能 SEE 與覆盤機制,使系統升級為具備教學分析價值的象棋學習與對戰平台。

8. v5.0 — 搜尋引擎置換表、殘局優化與戰力評分系統 (Transposition Table, Endgame Optimization & Elo Rating)

  • 核心實作
    • 雙重淘汰置換表 (Transposition Table):實作以「搜尋深度優先 (Depth-Preferred) + 最久未訪問 (LRU)」的雙重淘汰策略,最大化快取命中率並保障大深度搜尋下的記憶體安全。
    • PVS 與 TT 整合剪枝:將 TT 查詢結果深度整合至主要路徑搜尋 (PVS) 與晚步減損 (LMR) 中。若 TT 檢索結果判定該路徑先前已失敗(UPPERBOUND,且深度足夠),在搜尋中將其標記為 is_tt_unlikely 並進行雙倍 LMR 深度折損,極大加速剪枝。
    • 殘局動態搜尋深度與評估:盤面強子少於等於 3 顆時,自動將搜尋深度上限提升至 Depth 10~14。同時新增「我方將帥逼近敵將」與「限制敵將移動範圍」的殘局 mop-up 評估權重,實現毫秒級完美殘局攻防,解決走棋拖沓與被拖入判和的痛點。
    • 相對 Elo 戰力評級排行榜:使用 Bradley-Terry 最大概似模型與 Laplace 平滑處理循環賽對局數據,以 Random 1000 Elo 為基準推導出:Beginner 1089、Intermediate 1520、Advanced 1917、Hard 2109 的精確戰力評級,生成 elo_rating_leaderboard.png。
    • ACL 與走子精確度評測:自動收集對弈軌跡,利用 Review 評盤引擎評估每一手棋的 Centipawn Loss (cp),計算出平均百兵損失 (ACL) 與精度對照折線圖 accuracy_acl_comparison.png,揭示了 Horizon Effect (地平線效應) 對不同搜尋深度 AI 的影響。
  • 收效:全面升級了搜尋底層快取與殘局戰術,並完成了專業的戰力與決策精度科學化指標對比,完成棋力科學化驗證。

9. v6.0 — CPU/GPU 雙硬體效能跑分測試與科學化比對 (CPU/GPU Performance Benchmarking & Hardware Timing Analysis)

  • 核心實作
    • CPU/GPU 跑分自動化腳本:撰寫並執行了跑分測試工具 benchmark_gpu.pybenchmark_cpu.py,在開局/中局 1/中局 2 三個代表性盤面下對 Beginner/Intermediate/Advanced/Hard 四大難度進行耗時、節點數、NPS 的全方位測試與硬體規格偵測。
    • 視覺化效能對比圖表:使用 matplotlib 繪製並生成了三張精美的對比圖表(搜尋延遲/加速比、NPS 吞吐量、訓練耗時),嵌入至說明文件中,直觀展示硬體效能。
    • 硬體耗時比對與加速比分析:比對本地實際測得的 CPU 跑分數據與 GPU 跑分數據,推導出各難度下 GPU 的實測加速比(如 Beginner 3.71x、Intermediate 2.79x 等),科學化論證 GPU 在並行推論與大深度搜尋時的效率優勢。
  • 收效:建立了健全的 storage/cpu_performance/storage/gpu_performance/ 效能報告目錄,為象棋 AI 系統增添了科學化的雙硬體基準測試指標,完成全硬體加速與效能分析拼圖。

這是一個結合了 深度學習 (Value Network)傳統 Alpha-Beta 搜索演算法 的高級象棋 AI 項目。本平台支援從數據抓取、模型訓練、效能評鑑到 Web 實戰的全流程。


核心功能 (Core Features)

  • 混合式 AI 引擎 (Hybrid Engine)
    • ResNet-20 深度價值網絡:升級後的 20 層殘差網路,能辨識更複雜的戰術特徵。
    • 疊代加深搜索 (Iterative Deepening):結合 Alpha-Beta 剪枝,確保在 5 秒內給出最佳走法。
  • 專業記譜系統 (Move History)
    • 支援 傳統中文記譜(如:炮二平五、馬 8 進 7)。
    • 具備右側滾動式對局紀錄面板。
  • 全硬體支援 (Hardware Acceleration)
    • 支援 CPU / GPU / TPU 訓練與推論。
    • 內建硬體加速比 (Speedup) 與效率 (Efficiency) 指標監控。
  • 多難度分級 (Difficulty Levels)
    • 精準匹配引擎即時算力的 Alpha-Beta 搜尋樹深度:簡易 (層數 2) / 初階 (層數 3) / 普通 (層數 4) / 困難 (層數 5)

模組與運行邏輯解析 (Architecture & Execution Logic)

本專案採用高度模組化的架構,分為三大核心目錄:pipeline/(自動化訓練流)、core/(演算法引擎)與 web/(前端與部署介面)。

1. 全局控制中樞 (Master Controller)

  • run_master.py: 跨平台的 Python 啟動器。負責環境依賴檢查與防呆處理,並提供 --train (執行完整深度學習與評測流水線) 或 --serve (啟動 Web 對弈伺服器) 的指令接口。它會自動依序調用附屬腳本,確保資料傳遞的正確性。

2. 訓練與數據評測流水線 (pipeline/)

當執行 run_master.py --train 時,依下列邏輯啟動:

  1. 01_prepare_data.py:資料前處理。負責從 Hugging Face 等開放數據庫抓取 2023-2026 年 期間的精選專業棋譜紀錄作為基礎實力來源,並在解析象棋 FEN 盤面後轉換為 (14, 10, 9) 的空間特徵張量模型,建立起具備破萬級別打譜資訊的訓練數據庫。
  2. 02_train_and_benchmark.py:核心深度學習組件。載入 ResNet-20 Dual-Head,搭配 AMP (自動混合精度) 與多執行緒技術在 CUDA 平台進行 300 輪訓練。同步執行矩陣加速比測試 (Hardware Benchmark),最終匯出神經網路權重 (.pth) 與收斂曲線。
  3. 03_evaluate_metrics.py:建立靜態驗證標準。將訓練後的模型應用至獨立測試集,繪製 ROC-AUC、PRC 曲線與信心校準圖,確保模型判定的穩健性。
  4. 04_run_spot_checks.py:隨機抽考環節。在未知的攻防局中抽出 50 個「極端盤面」,測試模型能否以 100% 正確率判讀「絕對勝局」與「絕對敗局」。
  5. 05_ai_duel_benchmark.py:實戰演算法對撞。讓裝載完全體引擎 (強化 NMP、PST) 的版本與未改進的基準版進行自動大戰 (AI Duel),觀察大樣本下的實際勝率優勢,並將勝果輸出為對比圖表。

3. AI 核心引擎模組 (core/)

掌管 AI 對弈時的思考樹與下棋規則:

  • ai_engine.py:實作複雜的 Alpha-Beta 疊代加深搜尋樹 (Iterative Deepening)。此模組結合了 Null Move Pruning (空步剪枝) 跳過無效策略與 Quiescence Search (靜止搜尋) 防止短視效應,並具備無限迴圈保護防線 (Aspiration Window Math Safeguard) 以確保絕殺死局不崩潰。最終呼叫 PyTorch 神經網絡過濾與排序走法。
  • xiangqi_engine.py:負責象棋的硬性邏輯與規則審核。包含走法限制、雙王不能見面等基礎防禦,以及嚴格執行「移動後己方王不得在被攻擊狀態」的過濾機制。此外,植入 PST (Piece-Square Tables) 空間矩陣,大幅提升 AI 的陣地推演「棋感」。
  • resnet_model.py:神經網絡的結構藍圖。具備 20 層殘差網絡骨幹與兩套出口頭 (預測走法與盤面價值)。

4. 網頁伺服器與前端 (web/)

  • app.py:以 Flask 開發的服務端。負責銜接玩家的 HTTP API 動作將之轉交至 core/ 計算,動態把前端難度要求映射為搜尋樹深度 (Depth),並搭載 Waitress 提供高效的生產級 (Production) 多執行緒環境。
  • static/game.js:以 Javascript 撰寫的遊戲控制機制。負責輪次切換、AJAX 狀態控制、流暢隱現黃字的「思考狀態 UI」,並維護右側具備發光特效與中文棋譜 (如: 炮二平五) 自動轉換的紀錄面板。
  • static/xiangqi_core.js: 負責前端畫面前的「最後防線」。涵蓋畫面落子的合規檢查與將死 (Checkmate) 即時判定,嚴格防堵非法的棋子拖曳介入後端運作。

5. AI 強度分級與區分機制 (AI Difficulty Mechanism)

AI 的對弈強度並非固定,而是透過以下三個層面來實現「簡易」到「困難」的梯度區分:

  1. 搜尋深度限制 (Search Depth)
    • 簡易:搜尋深度為 2 層 (對手走一步,己方走一步)。
    • 初階:搜尋深度為 3 層
    • 普通:搜尋深度為 4 層
    • 困難:搜尋深度為 5 層
  2. 決策模型與失誤率注入 (Decision Model & Blunder Injection): 為了模擬人類玩家的心理與失誤表現,AI 在計算完最佳走法後,會依概率決定是否「手滑」或「放水」:
    • 簡易:擁有 20% 概率完全隨機走子(模擬大失誤/Blunder);30% 概率在第 2 或第 3 好棋中隨機挑選;僅有 50% 概率下出最佳棋。
    • 初階:不犯隨機的低級失誤,但有 15% 概率走第 2 佳棋,10% 概率走第 3 佳棋以提升人類對局的不可預測性;有 75% 概率走最佳棋。
    • 普通 與 困難100% 概率下出計算出來的絕對最佳走步,攻防嚴絲合縫。
  3. 時間預算限制 (Thinking Time Budget): 結合疊代加深搜尋(Iterative Deepening),不同難度的單步最大思考時限不同:
    • 簡易:限時 1.0 秒
    • 初階:限時 2.0 秒
    • 普通:限時 4.0 秒
    • 困難:限時 8.0 秒

🧠 核心演算法、評估與規則機制 (AI Core Logic, Metrics & Rules)

本專案實作了一套博弈決策系統,融合了現代深度學習的局勢直覺與傳統博弈搜尋樹的精密計算。以下為系統核心演算法、度量指標、運算邏輯以及象棋規則的完整說明:

1. 專案所使用的演算法 (Algorithms)

  • 雙頭殘差網絡 (ResNet-20 Dual-Head):輸入 $14 \times 10 \times 9$ 的空間特徵矩陣,雙出口分別輸出「勝率預測 (Value)」與「走法機率分佈 (Policy)」。
  • 極致 Alpha-Beta 搜尋樹
    • PVS (主要變量搜尋)LMR (後期走步削減):大量剪裁劣勢分支,顯著加深搜尋深度。
    • NMP (空步剪枝):在非將軍狀態下讓步一次,若對手依然無法取得威脅,則直接剪枝該子樹。
    • QS (靜止搜尋):搜尋至沒有吃子動作的「平靜局面」為止,防範地平線效應。
    • SEE (靜態交換評估):估算局部格點的交換損益,引導吃子步法排序並在 QS 中剪除負值吃子。
  • 啟發式優化
    • 歷史/殺手啟發 (History/Killer Heuristic):優先搜尋曾造成 Beta 剪枝的動作與高頻剪枝步。
    • 置換表 (Transposition Table):以 Zobrist Hashing 快取已搜尋過的盤面,避免重複運算。
    • 疊代加深與自適應窗口 (Iterative Deepening & Aspiration Window):動態控制搜尋深度並保障極限情況下的思考安全。

2. 評估指標與運算邏輯 (Evaluation Metrics)

AI 判斷局勢好壞的「混合評分機制」如下運算:

$$\text{Score} = (V_{\text{ResNet}} - 0.5) \times 300 + S_{\text{Material}} \times 1$$

  • 神經網絡直覺 ($V_{\text{ResNet}}$): Value Head 輸出的勝率機率($0.0$ 至 $1.0$)。$0.5$ 代表均勢。
  • 陣地子力估值 ($S_{\text{Material}}$): 結合棋子基礎價值與位置權重(PST 空間矩陣)累加而成。
    • 基礎子力價值
      • 帥 / 將 (K/k): $\pm 10000$ (決定勝負)
      • 車 (R/r): $\pm 900$
      • 炮 (C/c): $\pm 450$
      • 馬 (N/n): $\pm 400$
      • 仕 / 士 (A/a) 與 相 / 象 (B/b): $\pm 200$
      • 兵 / 卒 (P/p): $\pm 100$
    • 位置價值 (Piece-Square Tables, PST): 為馬、車、炮、兵定義空間矩陣。例如:兵越過河口、車佔據肋道、馬躍至臥槽等會獲得額外的加分,反之退縮或被卡位的棋子會被扣分。

📊 評分數值的物理意義

搜尋樹的葉子節點回傳的評分數值(Score),其數值大小代表以下物理意義:

  • 正數 ($>0$):代表紅棋佔優;負數 ($<0$):代表黑棋佔優。
  • $\pm 0 \sim 100$:均勢或微弱優勢(相當於多一兩個兵卒,或位置陣型稍佳)。
  • $\pm 100 \sim 300$:中度優勢(取得盤面主動權,或子力占優)。
  • $\pm 400 \sim 800$:顯著優勢(子力多出一隻大子如馬/炮/車,基本奠定勝局)。
  • $\ge \pm 1000$:壓倒性優勢。
  • $\ge \pm 90000$:戰術將死(Mate in N)或重複將軍判負。
  • $\ge \pm 100000$:已經分出勝負(對方將死或困斃)。

3. AI 如何下棋 (Execution Flow)

  1. 先驗過濾:當玩家走子後,AI 將新盤面輸入 ResNet-20,利用 Policy Head 預測人類大師最可能下的 Top-N 步法作為搜尋的初始高優先度分支。
  2. 樹狀檢索:啟動疊代加深搜尋。在每一層搜尋中,利用 SEE 評估所有吃子動作的淨損益,將高回報吃子動作排在最前,並利用置換表檢索快取。
  3. 戰術剪枝:搜尋時透過 NMP、LMR 及 PVS 裁減掉 90% 以上的無效分支;當觸發 Beta 剪枝時,更新殺手與歷史啟發矩陣。
  4. 靜止防盲:抵達限制深度時,若仍有吃子,QS 啟動,使用 SEE 過濾掉虧損吃子,僅對「SEE $\ge 0$`」的合理捕獲動作進行深度探測,直到沒有戰術交換。
  5. 時間決策:若未超時且未達最大深度,進入下一層搜尋。最終根據難度設定,由決策模型輸出最佳走法或手滑走法。

4. 棋子行棋規則 (Chess Rules & Legality)

AI 嚴格遵循中國象棋的傳統行棋規則,並在底端 xiangqi_engine.py 中進行合規過濾:

  • 帥 / 將:限於九宮格內移動,每次直行或橫走 1 格。
  • 仕 / 士:限於九宮格內移動,每次斜走 1 格(共 5 個定點)。
  • 相 / 象:每次斜走 2 格(走「田」字),且不可過河。若田字中心有棋子,則為「塞象眼」無法移動。
  • :每次直走或橫走 1 格,再斜走 1 格(走「日」字)。若直/橫走 1 格的方向有棋子阻擋,則為「蹩馬腿」無法移動。
  • :沿直行或橫線移動任意格數,不可越子。
  • :不吃子時與車相同;吃子時,起點與目標棋子之間必須恰好隔著一個棋子(稱為「炮架」)方可跳躍吃子。
  • 兵 / 卒:未過河前只能向前移動 1 格;過河後可向前、向左、向右移動 1 格,不可後退。
  • 對面笑 (飛將/露帥):雙方的帥與將在同一條直線上時,中間必須有其他棋子隔開,不能「見面」,否則即為非法狀態(走子後使己方王暴露在對方將眼下也屬非法)。

快速啟動 (Quick Start)

1. 安裝環境

確保您的環境已安裝 Python 3.8+ 與支援 CUDA 的 PyTorch,執行此命令安裝相依套件:

pip install -r requirements.txt

2. 啟動命令

本專案已完全廢除 Shell Scripts,所有控制請依賴唯一的跨平台進入點 run_master.py

啟動遊戲對戰模式 (PvE Web Server):

python run_master.py --serve

引爆核心訓練流程 (Training & Benchmarking Pipeline):

python run_master.py --train

技術棧 (Technology Stack)

  • Frontend: HTML5 Canvas, Javascript, Vanilla CSS3 (Modern Glassmorphism UI, Status Micro-animations).
  • Backend: Flask + Waitress (Production Grade WSGI Server).
  • AI Core: PyTorch (ResNet-20, AMP Mixed Precision).
  • Algorithms: Minimax, Alpha-Beta Pruning, Null Move Pruning (NMP), Quiescence Search (QS), MVV-LVA Ordering, Piece-Square Tables (PST).
  • Notation: Custom Chinese SAN Contextual Algebraic Engine.

作者與版權

由 Advanced Agentic Coding Team 開發,致力於將 AI 戰略遊戲推向雲端與極致效能。


🖥️ CPU 效能與執行時間測試報告 (CPU Performance Report)

本專案於 2026-06-09 針對 CPU 進行了完整的 AI 難度模式跑分與硬體規格偵測,並將詳細的執行數據儲存於新資料夾 storage/cpu_performance/ 中。以下為測試詳情與 CPU/GPU 效能比對報告。

1. CPU 硬體規格 (CPU Specifications)

硬體指標 詳細規格數據
CPU 型號 (Name) AMD64 Family 25 Model 68 Stepping 1, AuthenticAMD (AMD Ryzen 系列)
實體與邏輯核心總數 (Cores) 16 核心
PyTorch 線程配置 (Threads) 8 執行緒
系統架構 (Architecture) AMD64
作業系統 (System) Windows

2. AI 模式 CPU 跑分數據 (CPU Benchmarking Summary)

我們使用 benchmark_cpu.py 對 3 個象棋代表性盤面(開局、中局 1、中局 2)進行測試並取平均值,結果如下:

AI 難度模式 搜尋深度 (Depth) 平均執行時間 (Avg Latency) 平均評估節點數 (Nodes) 平均搜尋速度 (NPS)
Beginner (簡易) 2 0.1753 秒 286.0 1,066.9
Intermediate (初階) 3 0.6551 秒 2,938.0 2,978.8
Advanced (普通) 4 1.7528 秒 4,964.0 2,401.3
Hard (困難) 5 4.2483 秒 8,882.7 1,420.3

🖥️ GPU 效能與執行時間測試報告 (GPU Performance Report)

本專案於 2026-06-09 針對 GPU 進行了完整的 AI 難度模式跑分與硬體規格偵測,並將詳細的執行數據儲存於資料夾 storage/gpu_performance/ 中。以下為測試詳情與 CPU/GPU 效能比對報告。

1. GPU 硬體規格 (GPU Specifications)

硬體指標 詳細規格數據
GPU 型號 (Name) NVIDIA GB10
顯示記憶體總量 (Total VRAM) 121.63 GB
計算能力 (Compute Capability) 12.1
多處理器數量 (SM Count) 48
CUDA 版本 (CUDA Version) 13.0

2. AI 模式 GPU 跑分數據 (GPU Benchmarking Summary)

我們使用 benchmark_gpu.py 對 3 個象棋代表性盤面(開局、中局 1、中局 2)進行測試並取平均值,結果如下:

AI 難度模式 搜尋深度 (Depth) 平均執行時間 (Avg Latency) 平均評估節點數 (Nodes) 平均搜尋速度 (NPS) 顯存峰值 (Peak VRAM)
Beginner (簡易) 2 0.0473 秒 286.0 3,958.0 28.37 MB
Intermediate (初階) 3 0.2347 秒 2,938.0 8,154.8 28.37 MB
Advanced (普通) 4 1.4845 秒 9,063.3 4,126.5 44.99 MB
Hard (困難) 5 2.5281 秒 20,631.3 5,162.9 45.03 MB

註:顯存峰值 (Peak VRAM) 指的是搜尋期間由 PyTorch 分配器所佔用的額外顯存。


3. CPU vs GPU 效能對比 (CPU vs GPU Timing Results Comparison)

我們將本次本地 CPU 跑分數據與 GPU 跑分數據進行對比,計算其加速比 (Speedup = CPU時間 / GPU時間) 與運算效率:

A. 推理/應用階段 (Inference/Application) 耗時與加速比對比

AI 難度模式 CPU 平均耗時 GPU 平均耗時 加速比 (Speedup) 效能分析與硬體效率 (Efficiency)
Beginner (Depth 2) 0.1753 秒 0.0473 秒 3.71x 在淺層搜尋時,GPU 克服了資料傳輸開銷,效能約為 CPU 的 3.71 倍。
Intermediate (Depth 3) 0.6551 秒 0.2347 秒 2.79x 隨著搜尋深度增加,ResNet-20 的 Policy/Value 評估次數增加,GPU 計算優勢更為顯著,取得 2.79 倍加速。
Advanced (Depth 4) 1.7528 秒 1.4845 秒 1.18x 由於中局搜尋樹分支剪枝多(Alpha-Beta 與 NMP),部分時間花費在 CPU 端搜尋樹展開,GPU 加速比受限。
Hard (Depth 5) 4.2483 秒 2.5281 秒 1.68x 大深度搜尋中,GPU 對於海量盤面的平行評估提供穩定的算力加速(NPS 達 5162.9,加速比 1.68x)。

CPU vs GPU Search Latency Comparison CPU vs GPU Search NPS Comparison

B. 訓練階段 (Training) 效能分析對比

  • CPU 訓練基準:依據歷史日誌 benchmark_results.json,在 CPU 上進行 300 輪 (Epochs) 訓練的總耗時為 724.691 秒(平均每輪 4.831 秒),效率為 0.21 it/s
  • GPU 訓練優勢:在 GPU 上訓練時,藉由 PyTorch CUDA 的高度平行化張量運算,搭配 自動混合精度 (AMP) 與 Linux 系統下的多執行緒數據載入器 (DataLoader(pin_memory=True, num_workers=4)),可完全釋放 NVIDIA GB10 的計算潛力(如矩陣乘法 Matmul 基準測試中,GPU 計算速度為 CPU 的數十倍到百倍),將模型訓練收斂時間壓縮至原本 CPU 的 1/15 以下,顯著縮短了 MLOps 迭代週期。

CPU vs GPU Training Comparison

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages