À propos du projet
Polyfish est un projet IA construit autour du jeu de stratégie primé Polytopia. Il recrée l'intégralité du jeu en Rust et TypeScript, puis applique une approche hybride de recherche arborescente Monte Carlo (MCTS) et de réseau neuronal inspirée d'Alpha-Zéro. Le système s'entraîne par auto-jeu, avec une mesure Elo à ancre figée qui suit l'évolution de sa force au fil du temps.
Ses composants principaux incluent le moteur de jeu et le backend IA en Rust (polyfish-rs), le frontend web Vite/React (polyfish-ui), ainsi qu'un lecteur de mémoire C++ distinct (polyfish-reader) qui s'injecte dans la version Steam de Polytopia pour extraire les états de jeu en direct au format JSON. Une alternative C# basée sur BepInEx/PolyMod (polyfish-mod) lit automatiquement les replays dans le jeu réel et envoie les états capturés au serveur local.
L'architecture IA utilise une variante de recherche Gumbel Alpha-Zéro pour l'auto-jeu, un MCTS basé sur PUCT, ainsi qu'un réseau de type ResNet (PolyZeroNet) doté de couches d'attention croisée et de têtes de politique décomposées qui cartographient les coups selon le type d'action, la source, la cible et l'option. L'encodage des GameState alimente le réseau avec des cartes de caractéristiques 11x11.
Trois backends d'inférence lisent le même format de fichier model.safetensors : Candle (par défaut, compatible GPU), libtorch/MPS pour macOS, ainsi qu'un backend MPSGraph composé manuellement optimisé pour les puces Apple. Les couches de traitement par lots répartissent les évaluations de feuilles provenant de plusieurs acteurs sur le backend sélectionné.
L'interface web propose à la fois un simulateur de jeu interactif (accessible sur localhost:3000) et un tableau de bord d'entraînement en direct affichant des graphiques de perte, la distribution des coups et des histogrammes de valeur. L'installation nécessite Rust, Node et Python 3 ; le frontend est construit une seule fois et le serveur Rust sert à la fois le backend et les ressources statiques.
Les travaux en cours portent sur l'amélioration du pipeline d'entraînement, les expériences enregistrées avec leurs verdicts, ainsi que des revues sur la recherche et le signal d'apprentissage. Le goulot d'étranglement principal reste les besoins en puissance de calcul pour un entraînement efficace du réseau.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.