このプロジェクトについて
Polyfishは受賞歴のある戦略ゲーム『Polytopia』を中心に構築されたAIプロジェクトです。RustとTypeScriptでゲーム全体を再現し、Alpha-Zeroに触発されたモンテカルロ木探索(MCTS)とニューラルネットワークのハイブリッドアプローチを適用しています。システムは自己対戦によって学習し、フリーズアンカーElo計測によって強さを追跡します。
主要コンポーネントには、Rust製ゲームエンジンとAIバックエンド(polyfish-rs)、Vite/React製ウェブフロントエンド(polyfish-ui)、そしてSteam版Polytopiaに侵入してライブゲーム状態をJSONとして抽出するC++メモリリーダー(polyfish-reader)が含まれます。C# BepInEx/PolyMod替代のpolyfish-modも用意されており、リアルゲーム内でリプレイを自動再生し、キャプチャした状態をローカルサーバーに投稿します。
AIアーキテクチャは、自己対戦用Gumbel Alpha-Zero検索バリエーション、PUCTベースのMCTS、およびクロスアテンションと分解型ポリシーヘッドを持つResNet風ネットワーク(PolyZeroNet)を採用しています。これらは行動タイプ・ソース・ターゲット・オプション across で移動をマッピングします。GameStateエンコーディングは11x11の特徴マップをネットワークに入力します。
3つの推論バックエンドが同じmodel.safetensors形式を読み込みます:デフォルトのGPU対応Candle、macOS用libtorch/MPS、およびApple silicon最適化の手動構築MPSGraphバックエンドです。バッチレイヤーは複数のアクターからのリーフ評価を選択したバックエンドへ分配します。
ウェブインターフェースは、localhost:3000で提供されるインタラクティブゲームシミュレーターと、損失チャート・移動分布・値ヒストグラムを表示するライブトレーニングダッシュボードの両方を備えます。セットアップにはRust、Node、Python 3が必要です。フロントエンドは一度ビルドすればよく、Rustサーバーがバックエンドと静的アセットの両方を提供します。
オープンな作業項目としては、トレーニングパイプラインの改善、結果付き登録実験、検索/学習信号のレビューがあります。主要なボトルネックはまだ効果的なネットワーク学習に必要な計算リソースです。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.