Présentation du projet
Le but de ce projet est de créer un solveur de poker open source et gratuit, capable de fonctionner dans un navigateur web. Pour cela, il faut utiliser les capacités de calcul du navigateur pour évaluer les modèles de poker et les algorithmes de résolution. Les solveurs de poker commerciaux existent déjà, mais ils sont coûteux et ne sont pas ouverts.
Contexte technique
Pour résoudre le problème, nous devons utiliser les noyaux WebGPU pour évaluer les modèles de poker et les algorithmes de résolution. Cependant, il n'existe pas de bibliothèque de tenseurs équivalente à PyTorch pour WebGPU. Nous devons donc créer nos propres noyaux pour évaluer les modèles et les algorithmes.
Le solveur utilise l'algorithme de minimisation de regret contrefactuel (CFR) pour résoudre les situations de poker. Cet algorithme est basé sur la recherche et utilise un réseau de neurones pour approximer les fonctions de valeur. Les solveurs commerciaux utilisent souvent des tables géantes de stratégies et de valeurs attendues, mais notre approche utilise un réseau de neurones pour approximer ces fonctions.
Implémentation et résultats
Pour créer les noyaux WebGPU, nous avons utilisé un modèle de langage (LLM) pour générer le code. Le LLM a pu générer le code pour les noyaux, mais nous avons dû vérifier et optimiser le code pour obtenir les meilleures performances. Les résultats montrent que notre solveur est capable de résoudre les situations de poker de manière efficace et rapide.
Le code du solveur est disponible sur GitHub et le solveur est accessible en ligne. Cependant, il est important de noter que le solveur n'est pas le plus fort solveur de poker disponible et ne prend en charge que les parties à deux joueurs. De plus, il manque certaines fonctionnalités des solveurs commerciaux, comme le verrouillage de nœud.
const kernel = `...`;
Conclusion et perspectives
Le projet montre que les choix de bibliothèque et de langage ne sont plus aussi limitatifs qu'avant. Les reécritures de code ne sont plus un obstacle insurmontable. Cependant, il est important de noter que les modèles de langage ne sont pas encore capables de prendre des décisions stratégiques et que l'intervention humaine est toujours nécessaire pour superviser et optimiser le code.