Pachi - Le Bottin des Jeux Linux

Pachi

🗃️ Specifications

📰 Title: Pachi 🕹️ / 🛠️ Type: Tool
🗃️ Genre: Puzzle 🚦 Status: 05. Tested & Working (status)
🏷️ Category: Puzzle ➤ Board Game ➤ Go ➤ Engine 🌍️ Browser version:
🔖 Tags: Puzzle; Board Game; Go Engine; Monte Carlo Tree Search; GTP Protocol; Flagship 📦️ Package Name: pachi-go | pachi
🐣️ Approx. start: 2007-11-11 📦️ Arch package: ✓
🐓️ Latest: 2023-07-08 📦️ RPM package: ✓
📍️ Version: Latest: 12.82 / Dev: 491ba0d 📦️ Deb package:
🏛️ License type: 🕊️ Libre 📦️ Flatpak package:
🏛️ License: GPL-2 📦️ AppImage package:
🏝️ Perspective: Third person 📦️ Snap package:
👁️ Visual: Text ⚙️ Generic binary: ✓
⏱️ Pacing: Turn-Based 📄️ Source: ✓
👫️ Played: Single 📱️ PDA support:
🎖️ This record: 5 stars 🕳️ Not used:
🎀️ Game design: 5 stars 👫️ Contrib.: goupildb & Louis
🎰️ ID: 15434 🐛️ Created: 2018-07-21
🐜️ Updated: 2023-07-28

📖️ Summary

[en]: A libre and multi-platform AI for the game of Go (an AI specialized in this type of games), with a fairly good level (power estimated at 1958 Elo/1d for the v.12.50 5k, ranked in the middle of the chart on GitHub in March 2021; humans reach 3800 Elo), communicating with the GTP protocol. Its strong points: it is libre, relatively simple to implement, and exceeds the power of GNU Go, especially if one activates the DCNN (neural network for its movements, making it 2 dan KGS in 19x19, or even 4 dan, depending on the hardware used, on a scale max of 9d) placing it in the category of good engines. Excellent! [fr]: Une IA libre et multi-plateforme pour le jeu de Go (une IA spécialisée dans ce type de jeux), d'un assez bon niveau (puissance estimée à 1958 Elo/1d pour la v.12.50 5k, classée en milieu de tableau sur GitHub en Mars 2021 ; les humains atteignent 3800 Elo), communiquant avec le protocole GTP. Ses points forts : elle est libre, relativement simple à mettre en œuvre, et dépasse la puissance de GNU Go, surtout si l'on active le DCNN (réseau neuronal pour ses mouvements, le faisant passer à 2 dan KGS en 19x19, voir à 4 dan, en fonction du matériel utilisé, sur une échelle max de 9d) le classant dans la catégorie des bons moteurs. Excellent !

🎥️ Videos


🎮️ Showcase: Pachi (black, win) vs GnuGo (202201), KataGo (black, win) vs Pachi (202201),

🕸️ Links

🏡️ Website & videos
[Homepage] [Dev site 1 2] [Features/About] [Screenshots] [Videos t(202xxx) gd(202xxx) gu(202xxx) r(202xxx) lp(202xxx) d(202201) d(202201) ht[fr](202xxx) ht[de](202xxx) ht[ru](202xxx) ht[pl](202xxx) ht[cz](202xxx) ht[sp](202xxx) ht[pt](202xxx) ht[it](202xxx) ht[tr](202xxx)] [WIKI] [FAQ] [RSS] [Changelog 1 2 3]

💰 Commercial: [Support their work (Donate)]

🍩️ Resources
• Caffe (optional Deep Learning framework), BSD 2-Clause license : [Caffe] [Dev site]
• DCNN files (54% prediction on KGS 6d+ data), by Detlef Schmicker: [Physik.de (dcnn files)]

🛠️ Technical informations
[Open Hub] [PCGamingWiki] [MobyGames] [KGS (Rating System)] [Sensei's Library (Pachi)] [ICGA Tournaments (Pachi)] [ICGA Tournaments (Go tournaments & Programs)] [Go AI Ratings on GitHub] [Go Ratings (humans)] [Computer-go.info] [Sensei's Library]

🦣️ Social
Devs (Pachi Team 1 2 3 [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
Devs (Petr Baudis (pasky) [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
Devs (Jean-loup Gailly [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
The Project: [Blog] [Chat] [Forums] [mastodon] [PeerTube] [YouTube] [PressKit] [reddit] [Discord]

🐝️ Related
[Wikipedia (Go) [fr] [en] [de]]]

📦️ Misc. repositories
[Repology] [pkgs.org] [Generic binary] [Arch Linux / AUR] [openSUSE] [Debian/Ubuntu] [Flatpak] [AppImage(author's repo)] [Snap] [PortableLinuxGames]

🕵️ Reviews
[HowLongToBeat] [metacritic] [OpenCritic] [iGDB]

🕊️ Source of this Entry: [Site (date)]

🦣️ Social Networking Update (on mastodon)

🛠️ Title: Pachi
🦊️ What's: A libre AI for the game of Go, with a fairly good level (power estimated at 1958 Elo/1d)
🏡️ https://pachi.or.cz/
🐣️ https://github.com/pasky/pachi
🔖 #LinuxGaming #ShareYourGames #Flagship #BoardGame #GoEngine
📦️ #Libre #Bin #Arch #RPM
📖 Our entry: https://www.lebottindesjeuxlinux.tuxfamily.org/en/online/lights-on/

🥁️ Update: 12.82
⚗️ Code improvement 🚀️
📌️ Changes: https://github.com/pasky/pachi/releases
🦣️ From: 📶️ https://github.com/pasky/pachi/releases.atom

🎮️ https://www.youtube.com/embed/f8iFkFhyX-Q
🎮️ https://www.youtube.com/embed/kywVx-zVyuI

🕶️ The engine logo

Pachi is a libre and multi-platform AI for the game of Go (an AI specialized in this type of games), with a fairly good level (power estimated at 1958 Elo/1D for the v.12.50 5k, ranked in the middle of the chart on GitHub in March 2021; humans reach 3800 Elo), communicating with the GTP protocol. Its strong points: it is libre, relatively simple to implement, and exceeds the power of GNU Go, especially if one activates the DCNN (neural network for its movements, making it 2 dan KGS in 19x19, or even 4 dan, depending on the hardware used, on a scale max of 9d) placing it in the category of good engines. Excellent!

📕 Description [en]

📕🐧"A libre AI for the game of Go, with a fairly good level (power estimated at 1958 Elo/1d)"🐧📕.

Pachi can refer to: a simple modular framework for programs playing the game of Go/Weiqi/Baduk, and a reasonably strong engine built within this framework.

Engine

The default engine plays by Chinese rules and should be about 7d KGS strength on 9x9. On 19x19 it can hold a solid KGS 2d rank on modest hardware (Raspberry Pi 3, dcnn) or faster machine (e.g. six-way Intel i7) without dcnn. When using a large cluster (64 machines, 20 cores each), it maintains KGS 3d to 4d and has won e.g. a 7-stone handicap game against Zhou Junxun 9p.

By default, Pachi currently uses the UCT engine that combines Monte Carlo approach with tree search; UCB1AMAF tree policy using the RAVE method is used for tree search, while the Moggy playout policy using 3x3 patterns and various tactical checks is used for the semi-random Monte Carlo playouts. MM patterns and deep learning are used to guide tree search. Technical information about Pachi's architecture and algorithms can be found in Petr Baudis' Master's Thesis (more papers).

📕 Description [fr]

Une IA de jeu de Go avec fichier de coups et DCNN, très accessible, par la Pachi Team, initié par Petr Baudis (pasky) & Jean-loup Gailly (aussi auteur de gzip).
En C.

Pachi est une IA libre et multi-plateforme pour le jeu de Go (une IA spécialisée dans ce type de jeux), d'un assez bon niveau (puissance estimée à 1958 Elo/1d pour la v.12.50 5k, classée en milieu de tableau sur GitHub en Mars 2021 ; les humains atteignent 3800 Elo), communiquant avec le protocole GTP. Ses points forts : elle est libre, relativement simple à mettre en œuvre, et dépasse la puissance de GNU Go, surtout si l'on active le DCNN (réseau neuronal pour ses mouvements, le faisant passer à 2 dan KGS en 19x19, voir à 4 dan, en fonction du matériel utilisé, sur une échelle max de 9d) le classant dans la catégorie des bons moteurs. Excellent !

Pour jouer avec ce moteur, il vous faudra installer une interface de jeu telle que :
ccGo, Cgoban, GlGo ,GoGui, JagoClient, qGo, Quarry, Sabaki (testé & validé),

Ressources et documentations disponibles : voir la fiche "Ressources - Jeu de Go".


Pachi peut se référer à : un framework modulaire simple pour les programmes jouant au jeu de Go / Weiqi (NdT : nom Chinois) / Baduk (NdT : nom Coréen), et un moteur raisonnablement fort construit dans ce framework.

Moteur

Le moteur par défaut joue selon les règles chinoises et devrait être d'environ 7d KGS (NdT : 7ème dan au classement KGS, ce qui est très bon, voir le lien Senseis dans la section "Docs" ci-dessus) en 9x9. Sur 19x19, il peut tenir un solide classement 2d KGS sur un matériel modeste (Raspberry Pi 3, DCNN) ou une machine plus rapide (par exemple Intel i7 à six voies) sans DCNN.

(NdT : DCNN pour Deep Convolutional Neural Network ou Réseau neuronal convolutif profond, un type de réseau utilisé en Intelligence Artificielle)

Lorsque vous utilisez un grand cluster (64 machines, 20 cœurs chacun), il se maintient de 3d à 4d KGS et a gagné par exemple un match de handicap de 7 pierres contre Zhou Junxun 9p.

Par défaut, Pachi utilise actuellement le moteur UCT qui combine l'approche Monte Carlo avec la recherche d'arborescence; La règle d'arborescence UCB1AMAF utilisant la méthode RAVE est utilisée pour la recherche arborescente, tandis que la stratégie de diffusion Moggy utilisant des modèles 3x3 et diverses vérifications tactiques est utilisée pour les lectures semi-aléatoires de Monte Carlo. Les modèles MM et l'apprentissage profond sont utilisés pour guider la recherche dans les arbres. Des informations techniques sur l'architecture et les algorithmes de Pachi sont disponibles dans le mémoire de maîtrise de Petr Baudis (plus d'articles).

🚧️ Installation ➜ 🚀️ Launching [fr]

⚙️ Installation à partir du binaire

⛓️ Installation à partir du binaire classique :
• Un binaire statique (64-bits) est disponible, il suffit de décompresser le livrable et (s'il ne l'est pas) de rendre son binaire exécutable (clic droit sous votre gestionnaire de fichier).

💡 Nota : pour les distributions dérivées de Debian, un dépôt spécifique UBUNTU est disponible (voir le lien Dev site 2 ci-avant), il suffit de l'ajouter à votre liste de dépôts (non testé).

📄️ Installation à partir du source

• (✔ 12.0) Si vous souhaitez quelque-chose de très récent (versions de développement) et/ou qu'il n'y a pas de binaire disponible pour votre distribution/architecture (32/64-bits), la compilation du source est une bonne idée, voir un passage obligé.

• Installez au préalable les paquets suivants :
- uniquement nécessaire si vous souhaitez compiler avec le support DCNN) : libhdf5-dev liblmdb-dev libleveldb-dev libsnappy-dev libopencv-dev libatlas-base-dev python-pytest
(pour Debian/Ubuntu, installez les paquets éponymes, généralement précédés du préfixe “lib” et suivis du suffixe "-dev" s'ils sont disponibles, avec en plus les paquets spécifiques suivants : libhdf5-dev liblmdb-dev libleveldb-dev libsnappy-dev libopencv-dev libatlas-base-dev)

▸ Téléchargement du source (sur GitHub) :
☝️ Nota : Évitez le téléchargement du source via les liens https, car ils ne fournissent pas les dépendances
Version stable, dans le répertoire souhaité, lancez : $ git clone -b "Nom_de_la_release" --recursive https://github.com/pasky/pachi
Nom_de_la_release : à remplacer par le nom d'une release valide indiquée sur la page de développement : sur GitHub, dans la section Release, le nom valide est l'étiquette située à gauche du titre, ou cliquez sur "Tags" pour obtenir la liste des étiquettes valides).
ou Version récente (non stable), dans le répertoire souhaité, lancez : $ git clone --recursive https://github.com/pasky/pachi


✔ ➥ 1ere option (moteur de base, performances amoindries) ➜ compilation sans le support DCNN (Deep Learning) :
• Dans son répertoire racine lancez :
$ make
(ou, pour accélérer la compilation, "$ make -j8" si vous disposez d'un processeur 8 threads, à adapter pour vous)

✔ ➥ 2nde option (moteur boosté avec le support du Deep Learning) ➜ compilation avec le support DCNN :
• Installez au préalable les paquets suivants : # apt install libhdf5-dev liblmdb-dev libleveldb-dev libsnappy-dev libopencv-dev libatlas-base-dev python-pytest
• (optionnel, permet l'utilisation du GPU de votre carte) Installez au préalable CUDA (voyez sous votre gestionnaire de paquet)
(la doc de Pachi précise : "CPU only build is fine, no need for GPU, cuda or the other optional dependencies".)

• Téléchargez le source du framework Caffe via la commande suivante : $ git clone https://github.com/BVLC/caffe
• Dans le répertoire racine de Caffe lancez successivement :
$ cmake .
(n'oubliez pas le ".")
$ make
(ou, pour accélérer la compilation, "$ make -j8" si vous disposez d'un processeur 8 threads, à adapter pour vous)
(la compilation produit la bibliothèque dans le répertoire lib/ du source)

• Dans le répertoire racine de Pachi :
Editez le fichier Makefile, mettez l'option DCNN=1, et décommentez (enlevez le #) la ligne d'après et indiquez lui l'adresse du répertoire racine de la bibliothèque Caffe que vous venez de compiler
(exemple : CAFFE_PREFIX=/mnt/DDprc/Download/caffe/)
$ make
(ou, pour accélérer la compilation, "$ make -j8" si vous disposez d'un processeur 8 threads, à adapter pour vous)
Téléchargez un exemplaire de fichiers DCNN (ici: [Physik.de (dcnn files)]) et copiez son contenu (golast19.prototxt et golast.trained) dans le répertoire racine de Pachi.


🚀️ LANCEMENT DU MOTEUR :

• Pour tester sa réponse en console (pas pour jouer, car il nécessite une interface externe), lancez : $ ./pachi

Liste des commandes : pour obtenir de l'aide vous pouvez aussi lancer en console la commande : $ ./pachi --help

• Pour une utilisation avec une interface de jeu de Go (telle que Sabaki par exemple) :

Entrer un titre : Pachi
Répertoire du moteur (à adapter à la localisation du binaire): /mnt/DDprc/Download/pachi/pachi
No arguments

🕵️ Test [fr]

📜️ Préambule :
J'ai testé Pachi avec et sans support DCNN.

🕵️ Test (12.0 (Jowa) sans support DCNN), par goupildb :
Si je lance Pachi sans le support DCNN (dans le Makefile j'ai pris l'option "DCNN=0") en console, il affiche :
$ ./pachi
Pachi version 12.00 (Jowa)
git 0e3db59 ()
nehalem !dcnn build, juil. 21 2018

Random seed: 1532190650
Loaded spatial dictionary of 20614 patterns.
Loaded 20692 gammas.
Checking gammas ... OK
Threads: 8

On remarque qu'il affiche "nehalem !dcnn build, juil. 21 2018" (est-ce pour signaler que l'option est à présent possible ?), et qu'il n'affiche pas "Loaded Detlef's 54% dcnn." comme ci-après (normal).

Sans le support DCNN, je le (les pierres blanches) fais affronter GNU Go (les noires) via l'interface Sabaki, avec et sans handicap.
Je note que les 8 coeurs de mon processeur tournent à 100% quasiment (1/2 seconde de pause après chaque coup des blancs) en permanence (sa température fluctue de 66°C à 72°C à chaque coup).

• 1ere partie (il y a quelques jours, avec un handicap de 4 pierres pour Pachi): mon impression (car je ne connais absolument pas le jeu de Go :)) était qu'il s'était fait dominer par GNU Go.
(la difficulté est qu'en fin de partie il demande de sélectionner les territoires pris, et si l'on n'y connais rien, on peut inverser les scores en fonction des sélections retenues).
Je n'ai malheureusement pas noté le score proposé par l'interface par défaut (ce que j'ai fait ensuite ci-après).

• 2nde partie (sans handicap pour Pachi): Pachi remporte la partie avec un score (W+7.5) de 187.5 points (vs 180 points pour GNU Go) en "Area" (région) et (W+6.5) 127.5 points (vs 121 points pour GNU Go) en Territory (territoire).

• 3ème partie (avec un handicap de 4 pierres pour Pachi): pour lever le doute j'ai lancé une nouvelle partie avec un handicap identique à la 1ere partie (de 4 pierres pour Pachi) et toujours sans DCNN afin de comparer les scores, sans intervention de ma part sur la sélection finale des territoires acquis. Pachi remporte la partie avec un score (W+1.5) de 184.5 points (vs 183 points pour GNU Go) en "Area" (région) et (W+4.5) de 121.5 points (vs 117 points pour GNU Go) en Territory (territoire). Avantage Pachi, même avec un handicap de 4 pierres.

🕵️ Test (12.0 (Jowa) avec support DCNN), par goupildb :
J'ai donc aussi testé Pachi avec le support DCNN.

Si je lance Pachi avec le support DCNN en console, il affiche :
$ ./pachi
Pachi version 12.00 (Jowa)
git 0e3db59 ()
nehalem dcnn build, juil. 21 2018

Random seed: 1532184820
Loaded spatial dictionary of 20614 patterns.
Loaded 20692 gammas.
Checking gammas ... OK
Loaded Detlef's 54% dcnn.
Threads: 8

Je lance un nouveau match GNU Go (les noirs) vs Pachi (les blancs) en 19x19 avec un handicap de 4 pierres pour Pachi.
Je note que les 8 coeurs de mon processeur tournent à 100% quasiment (1/2 seconde de pause après chaque coup des blancs) en permanence (sa température fluctue de 53°C à 72°C à chaque fois :)).
Je ne remarque pas de différence notable de rapidité de jeu pour Pachi avec ou sans DCNN : en début de partie il met environ 1 à 2 secondes pour jouer, en fin de partie le jeu s'accélère avec la diminution des coups possibles.

• En fin de partie, sans rien changer à la sélection proposée, et avec un handicap de 4 pierres pour Pachi, celui-ci remporte la partie avec (W+3.5) 185.5 points (vs 182 points pour GNU Go) en "Area" (région) et (W+6.5) 122.5 points (vs 116 pour GNU Go) en Territory (territoire).
Même si le score de Pachi en activant DCNN ne semble pas s'envoler à des sommets, la tendance du score est tout de même sensiblement à la hausse (et suffisant pour battre GNU Go systématiquement).

• Je lance une 2nde partie, avec les mêmes protagonistes et les mêmes couleurs, mais cette fois-ci sans handicap pour Pachi.
Là il remporte plus nettement la partie avec un score (W+17.5) de 192.5 points (vs 175 points pour GNU Go) en "Area" (région) et (W+17.5) 114.5 points (vs 97 points pour GNU Go) en Territory (territoire).

Conclusion : Même si les scores peuvent évoluer en fonction des parties, Pachi se révèle plus fort que GNU Go (à handicap identique), ce qui s'accentue sensiblement lorsque l'on active sa fonctionnalité DCNN.