[PYTHON] Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 12 3 ~ 5

TOP PAGE

Vue d'ensemble de l'exploration des arbres de Monte Carlo

Ce que fait la fonction go () de mcts_player.py image.png

mcts_player.py Apportez les modifications suivantes avant d'exécuter réellement le programme.

Ajout de l'argument de chargement du modèle

Correction de PolicyValueResnet (blocs = 5) car une erreur se produira si les blocs d'argument ne sont pas entrés dans PolicyValueResnet () qui charge le modèle. 5 est le même nombre de blocs que lors de l'entraînement de ce modèle.

pydlshogi/player/mcts_player.py


    def isready(self):
        #Modèle de charge
        if self.model is None:
            self.model = PolicyValueResnet(blocks=5)

Commutation automatique CPU / GPU

Laissez l'adresse IP déterminer quel PC est en cours d'exécution. Utilisez l'indicateur gpu_en pour choisir d'utiliser ou non le GPU. Le chemin du fichier modèle est également commuté avec l'indicateur env.

pydlshogi/player/mcts_player.py


#Cadre environnemental
#-----------------------------
import socket
host = socket.gethostname()
#Obtenir l'adresse IP
# google colab  :Aléatoire
# iMac          : xxxxxxxx
# Lenovo        : yyyyyyyy

# env
# 0: google colab
# 1: iMac (no GPU)
# 2: Lenovo (no GPU)

# gpu_en
# 0: disable
# 1: enable

if host == 'xxxxxxxx':
    env = 1
    gpu_en = 0
elif host == 'yyyyyyyy':
    env = 2
    gpu_en = 0
else:
    env = 0
    gpu_en = 1

#-----------------------------

À l'importation

pydlshogi/player/mcts_player.py


if gpu_en == 1:
    from chainer import cuda, Variable

def init(self):

pydlshogi/player/mcts_player.py


        #Chemin du fichier modèle
        if env == 0:
            self.modelfile = '/content/drive/My Drive/・ ・ ・/python-dlshogi/model/model_policy_value_resnet'
        elif env == 1:
            self.modelfile = r'/Users/・ ・ ・/python-dlshogi/model/model_policy_value_resnet'
        elif env == 2:
            self.modelfile = r"C:\Users\・ ・ ・\python-dlshogi\model\model_policy_value_resnet"
        self.model = None #modèle

def eval_node()

pydlshogi/player/mcts_player.py


        if gpu_en == 1:
            x = Variable(cuda.to_gpu(np.array(eval_features, dtype=np.float32)))
        elif gpu_en == 0:
            x = np.array(eval_features, dtype=np.float32)

        with chainer.no_backprop_mode():
            y1, y2 = self.model(x)

            if gpu_en == 1:
                logits = cuda.to_cpu(y1.data)[0]
                value = cuda.to_cpu(F.sigmoid(y2).data)[0]
            elif gpu_en == 0:
                logits = y1.data[0]
                value = F.sigmoid(y2).data[0]

def isready()

pydlshogi/player/mcts_player.py


        #Modèle de charge
        if self.model is None:
            self.model = PolicyValueResnet(blocks=5)
            if gpu_en == 1:
                self.model.to_gpu()

Test depuis la ligne de commande

J'ai lancé le programme au début. En conséquence, 7 6 étapes visitées 143 fois et 2 6 étapes visitées 77 fois. Cela semble bon pour le moment. image.png Je pourrais le faire sur Google Colab. image.png

move_count: nombre de visites sur ce nœud de déplacement nnrate: probabilité prédite du réseau politique win_rate: taux de réussite moyen du déplacement (= taux de réussite total / nombre de visites) nps : node/time time: Temps requis pour une seule fois () nœuds: nombre de visites sur le nœud actuel (current_node.move_count) hashfull: Occupation des tableaux node_hash et uct_node. Indique combien des 4096 éléments ont été utilisés. Une valeur numérique exprimée en 1000 lorsqu'elle est occupée à 100%. score cp: valeur d'évaluation pv: déplacer les coordonnées

Le GPU est deux fois plus rapide que le CPU

D'après les résultats ci-dessus, le temps requis pour chaque exécution était de 3524 ms pour le CPU et de 2020 ms pour le GPU. Par conséquent, le rapport de vitesse GPU / CPU est de 3524/2020 = 1,7. C'est environ deux fois plus rapide.

Le nombre de visites (nœuds) du nœud actuel est le même que 235 pour le GPU et le CPU. Vous pouvez simplement voir que la vitesse par visite est plus rapide sur le GPU.

Effet de l'arrêt de la recherche

Pour chaque recherche, une fonction appelée interruption_check () est utilisée pour déterminer s'il faut terminer la recherche au milieu. Le nombre de recherches est défini sur 300, mais si le meilleur coup ne peut pas être dépassé même si toutes les recherches restantes sont consacrées au meilleur coup suivant, la recherche est arrêtée même si le nombre de recherches n'a pas atteint 300. Puisque le résultat ci-dessus est des nœuds 235, on peut voir qu'il a été terminé après 235 fois.

Pour référence, j'ai exécuté go () en continu pour tracer le nombre de visites sur le nœud actuel. On peut voir que le nombre de visites sur le nœud actuel n'augmente pas à mesure que le nombre d'exécutions de go () augmente. Au fur et à mesure que le nombre d'exécutions de go () augmente, le nombre de visites sur le nœud enfant augmente également, de sorte que la recherche peut être terminée plus tôt. image.png

Nombre de recherches

J'ai essayé de comprendre comment le nombre de visites sur le nœud actuel change en fonction du nombre de recherches. Si le nombre de visites est défini sur 6000 ou plus, le résultat ne passera pas de 4057. Ce n'est que le résultat du début. Les résultats varieront en fonction de la situation. image.png image.png

Jeu

Vidéo de jeu https://youtu.be/H0jD76R2PAM Self (Ama 1st Stage) vs Chapitre 12-5 AI Policy Network & Value Network & Monte Carlo Tree Search. Il n'y a pas de parallélisation. C'était plus faible que ce que j'avais imaginé car je faisais souvent des mouvements étranges.

Carte finale image.png

Recommended Posts

Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 11
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 8
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 12 3
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 7
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 10 6-9
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 10
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 7 5-7
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 9
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 12 3
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 12 3
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 12 1-2
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 12 3
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 12 3 ~ 5
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 7 9
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 8 5-9
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 8 1-4
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 12 3
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 7 8
Deep Learning avec Shogi AI sur Mac et Google Colab Chapitre 7 1-4
Apprentissage en profondeur avec Shogi AI sur Mac et Google Colab
Apprentissage en profondeur avec Shogi AI sur Mac et Google Colab Chapitres 1 à 6
Apprenez avec Shogi AI Deep Learning sur Mac et Google Colab Utilisez Google Colab
Apprentissage en profondeur sur Mac et Google Colab mots appris avec Shogi AI
Apprentissage automatique avec Pytorch sur Google Colab
À propos de l'apprentissage avec Google Colab
Étapes pour créer rapidement un environnement d'apprentissage en profondeur sur Mac avec TensorFlow et OpenCV
Jouez avec Turtle sur Google Colab
"Apprentissage de word2vec" et "Visualisation avec Tensorboard" sur Colaboratory
Deep Learning from scratch La théorie et la mise en œuvre de l'apprentissage profond appris avec Python Chapitre 3
Installez le sélénium sur votre Mac et essayez-le avec python
[AI] Apprentissage métrique profond
Prédire les tags en extrayant des fonctionnalités musicales avec Deep Learning
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 14) Exécutez le programme du chapitre 4 sur Google Colaboratory
[Google Colab] Comment interrompre l'apprentissage, puis le reprendre
Reconnaissez votre patron avec Deep Learning et masquez l'écran
Une erreur survenue lors de l'apprentissage de YOLO avec Google Colab
Paramètres d'environnement d'apprentissage automatique basés sur Python3 sur Mac (coexistence avec Python2)
HIKAKIN et Max Murai avec vidéo de jeu en direct et apprentissage en profondeur
Essayez l'apprentissage en profondeur avec TensorFlow
Apprentissage profond du noyau avec Pyro
Essayez le Deep Learning avec FPGA
Catalina sur Mac et pyenv
Générez des Pokémon avec Deep Learning
Créez un environnement Python sur votre Mac avec Anaconda et PyCharm
Erreur et solution lors de l'installation de python3 avec homebrew sur mac (catalina 10.15)
Comment exécuter Jupyter et Spark sur Mac avec des paramètres minimaux
La meilleure façon d'utiliser MeCab et CaboCha avec Google Colab
[Note de lecture] Apprentissage automatique pratique avec Scikit-Learn, Keras et TensorFlow Chapitre 1
Installez lp_solve sur Mac OSX et appelez-le avec python.
Deep learning / Deep learning from scratch 2 Chapitre 4 Mémo
Essayez le Deep Learning avec les concombres FPGA-Select
Identification de la race de chat avec Deep Learning
flux tensoriel avec anaconda sur mac
MQTT sur Raspberry Pi et Mac
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 5 Mémo
Essayez l'apprentissage en profondeur avec TensorFlow Partie 2
Présentation d'OpenCV sur Mac avec homebrew
Organisez des plateformes d'apprentissage automatique et d'apprentissage en profondeur
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 7 Mémo