手把手教你运行一个五子棋模型AlphaZero_Gomoku

项目地址GitHub - junxiaosong/AlphaZero_Gomoku:Gomoku的AlphaZero算法的实现(也称为Gobang或Five in a Row)

我的配置、环境

GPU计算型GN7 - 20核 80G(Tesla T4)

Windows Server 2019 数据中心版 64位 中文版

一、安装驱动

GPU 云服务器 安装 NVIDIA Tesla 驱动-操作指南-文档中心-腾讯云-腾讯云 (tencent.com)

GPU 云服务器 安装 CUDA 驱动-操作指南-文档中心-腾讯云-腾讯云 (tencent.com)

开启 GPU 的 OpenGL 或 DirectX 图形加速能力(可选)

GPU 云服务器 安装 NVIDIA GRID 驱动-操作指南-文档中心-腾讯云-腾讯云 (tencent.com)

也可以在文件分享 (weiyun.com)免注册下载GRID

注意:选择的版本要到Build from source on Windows  |  TensorFlow (google.cn)查询后选择对应版本

因此我选的是cuda11.2版本,cudnn8.2.1

cudnn可到此处下载cuDNN Download | NVIDIA Developer

由于cudnn需要会员,所以正常访问很容易登录不上去,所以建议自备访问国外网站工具

二、环境配置

1、anaconda(Anaconda | The World's Most Popular Data Science Platform

一路next,此处把勾去掉

下面是最重要的,配置环境变量

点击4次“新建”

分别输入

C:\ProgramData\Anaconda3
C:\ProgramData\Anaconda3\Library\mingw-w64\bin
C:\ProgramData\Anaconda3\Library\bin
C:\ProgramData\Anaconda3\Scripts

前面的路径取决于实际情况‘

确定

点开这个,输入conda,如果输出

(base) PS C:\Users\Administrator> conda
usage: conda-script.py [-h] [-V] command ...

conda is a tool for managing and deploying applications, environments and packages.

Options:

positional arguments:
  command
    clean        Remove unused packages and caches.
    compare      Compare packages between conda environments.
    config       Modify configuration values in .condarc. This is modeled after the git config command. Writes to the
                 user .condarc file (C:\Users\Administrator\.condarc) by default.
    create       Create a new conda environment from a list of specified packages.
    help         Displays a list of available conda commands and their help strings.
    info         Display information about current conda install.
    init         Initialize conda for shell interaction. [Experimental]
    install      Installs a list of packages into a specified conda environment.
    list         List linked packages in a conda environment.
    package      Low-level conda package utility. (EXPERIMENTAL)
    remove       Remove a list of packages from a specified conda environment.
    uninstall    Alias for conda remove.
    run          Run an executable in a conda environment. [Experimental]
    search       Search for packages and display associated information. The input is a MatchSpec, a query language
                 for conda packages. See examples below.
    update       Updates conda packages to the latest compatible version.
    upgrade      Alias for conda update.

optional arguments:
  -h, --help     Show this help message and exit.
  -V, --version  Show the conda version number and exit.

conda commands available from other packages:
  build
  content-trust
  convert
  debug
  develop
  env
  index
  inspect
  metapackage
  pack
  render
  repo
  server
  skeleton
  token
  verify

congratulations!你成功了

2、cuda环境变量

“=”前面的为新建变量名,后面是变量值,像下图

CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.2
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64

老规矩,路径靠自己

最后结果

3、TensorFlow

打开这个,随便运行个东西

conda install python==3.8

然后喜提报错亿堆

Collecting package metadata (current_repodata.json): failed

CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/win-64/current_repodata.json>
Elapsed: -

An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.

If your current network has https://www.anaconda.com blocked, please file
a support request with your network engineering team.

'https://repo.anaconda.com/pkgs/main/win-64'

这个时候莫慌,打开用户所在目录(cmd根目录)

找到这个文件,用记事本打开

将里面的内容替换成

channels:
  - defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

然后保存

重新运行命令

还是报错

运行

conda update --all

成功解决

正式开始安装

pip install tensorflow-gpu

一眼望去,3h,都够睡一觉了

换成国内源

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade tensorflow    
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade tensorflow-gpu 

这速度舒服多了

然后检验一下是否安装好了

python
import tensorflow as tf

print('GPU',tf.test.is_gpu_available())

a = tf.constant(2.)
b = tf.constant(4.)

print(a * b)

如果大家像我一样脸黑,可能会看到如下结果

import tensorflow as tf
>>>
>>> print('GPU',tf.test.is_gpu_available())
WARNING:tensorflow:From <stdin>:1: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.
Instructions for updating:
Use `tf.config.list_physical_devices('GPU')` instead.
2022-05-10 18:54:39.374509: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2022-05-10 18:54:39.563020: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudnn64_8.dll'; dlerror: cudnn64_8.dll not found
2022-05-10 18:54:39.568594: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1850] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
GPU False #false就是GPU未安装好
>>>
>>> a = tf.constant(2.)
2022-05-10 18:54:39.696552: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1850] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
>>> b = tf.constant(4.)
>>>
>>> print(a * b)
tf.Tensor(8.0, shape=(), dtype=float32)

之后我又执行了一下官方的安卓

pip install tensorflow

再次检测

(base) PS C:\Users\Administrator> python
Python 3.9.12 (main, Apr  4 2022, 05:22:27) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>>
>>> print('GPU',tf.test.is_gpu_available())
WARNING:tensorflow:From <stdin>:1: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.
Instructions for updating:
Use `tf.config.list_physical_devices('GPU')` instead.
2022-05-10 19:10:13.966849: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2022-05-10 19:10:14.733664: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /device:GPU:0 with 13933 MB memory:  -> device: 0, name: Tesla T4, pci bus id: 0000:00:06.0, compute capability: 7.5
GPU True
>>>
>>> a = tf.constant(2.)
2022-05-10 19:10:14.779080: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 13933 MB memory:  -> device: 0, name: Tesla T4, pci bus id: 0000:00:06.0, compute capability: 7.5
>>> b = tf.constant(4.)
>>>
>>> print(a * b)
tf.Tensor(8.0, shape=(), dtype=float32)

就变成true了

4、numpy

不绕弯子,直接国内源安装

pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

结果如下

(base) PS C:\Users\Administrator> pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: numpy in c:\programdata\anaconda3\lib\site-packages (1.21.5)
Requirement already satisfied: scipy in c:\programdata\anaconda3\lib\site-packages (1.7.3)
Requirement already satisfied: matplotlib in c:\programdata\anaconda3\lib\site-packages (3.5.1)
Requirement already satisfied: python-dateutil>=2.7 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (2.8.2)
Requirement already satisfied: pillow>=6.2.0 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (9.0.1)
Requirement already satisfied: pyparsing>=2.2.1 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (3.0.4)
Requirement already satisfied: packaging>=20.0 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (21.3)
Requirement already satisfied: fonttools>=4.22.0 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (4.25.0)
Requirement already satisfied: cycler>=0.10 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (0.11.0)
Requirement already satisfied: kiwisolver>=1.0.1 in c:\programdata\anaconda3\lib\site-packages (from matplotlib) (1.3.2)
Requirement already satisfied: six>=1.5 in c:\programdata\anaconda3\lib\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)

三、正式开始

从项目地址下载压缩包并解压

从anaconda里的powershell,cd到解压后的文件夹

打开这个文件

由于咱们用的是TensorFlow训练,所以需要修改注释行,让模型用TensorFlow来训练

修改方法如下

在cd到文件夹后运行

python train.py

锵锵锵,报错了

问题是我们使用的是tensorflow2.0以上版本,代码中的函数是1.0的版本

打开这个文件

将这个

改为

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

然后再次运行

python train.py

训练就启动了

如下

(base) PS C:\Users\Administrator\Downloads\AlphaZero_Gomoku-master\AlphaZero_Gomoku-master> python train.py
WARNING:tensorflow:From C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\compat\v2_compat.py:107: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.
Instructions for updating:
non-resource variables are not supported in the long term
C:\Users\Administrator\Downloads\AlphaZero_Gomoku-master\AlphaZero_Gomoku-master\policy_value_net_tensorflow.py:25: UserWarning: `tf.layers.conv2d` is deprecated and will be removed in a future version. Please Use `tf.keras.layers.Conv2D` instead.
  self.conv1 = tf.layers.conv2d(inputs=self.input_state,
C:\ProgramData\Anaconda3\lib\site-packages\keras\legacy_tf_layers\convolutional.py:575: UserWarning: `layer.apply` is deprecated and will be removed in a future version. Please use `layer.__call__` method instead.
  return layer.apply(inputs)
C:\Users\Administrator\Downloads\AlphaZero_Gomoku-master\AlphaZero_Gomoku-master\policy_value_net_tensorflow.py:29: UserWarning: `tf.layers.conv2d` is deprecated and will be removed in a future version. Please Use `tf.keras.layers.Conv2D` instead.
  self.conv2 = tf.layers.conv2d(inputs=self.conv1, filters=64,
C:\Users\Administrator\Downloads\AlphaZero_Gomoku-master\AlphaZero_Gomoku-master\policy_value_net_tensorflow.py:33: UserWarning: `tf.layers.conv2d` is deprecated and will be removed in a future version. Please Use `tf.keras.layers.Conv2D` instead.
  self.conv3 = tf.layers.conv2d(inputs=self.conv2, filters=128,
C:\Users\Administrator\Downloads\AlphaZero_Gomoku-master\AlphaZero_Gomoku-master\policy_value_net_tensorflow.py:38: UserWarning: `tf.layers.conv2d` is deprecated and will be removed in a future version. Please Use `tf.keras.layers.Conv2D` instead.
  self.action_conv = tf.layers.conv2d(inputs=self.conv3, filters=4,
C:\Users\Administrator\Downloads\AlphaZero_Gomoku-master\AlphaZero_Gomoku-master\policy_value_net_tensorflow.py:47: UserWarning: `tf.layers.dense` is deprecated and will be removed in a future version. Please use `tf.keras.layers.Dense` instead.
  self.action_fc = tf.layers.dense(inputs=self.action_conv_flat,
C:\ProgramData\Anaconda3\lib\site-packages\keras\legacy_tf_layers\core.py:261: UserWarning: `layer.apply` is deprecated and will be removed in a future version. Please use `layer.__call__` method instead.
  return layer.apply(inputs)
C:\Users\Administrator\Downloads\AlphaZero_Gomoku-master\AlphaZero_Gomoku-master\policy_value_net_tensorflow.py:51: UserWarning: `tf.layers.conv2d` is deprecated and will be removed in a future version. Please Use `tf.keras.layers.Conv2D` instead.
  self.evaluation_conv = tf.layers.conv2d(inputs=self.conv3, filters=2,
C:\Users\Administrator\Downloads\AlphaZero_Gomoku-master\AlphaZero_Gomoku-master\policy_value_net_tensorflow.py:58: UserWarning: `tf.layers.dense` is deprecated and will be removed in a future version. Please use `tf.keras.layers.Dense` instead.
  self.evaluation_fc1 = tf.layers.dense(inputs=self.evaluation_conv_flat,
C:\Users\Administrator\Downloads\AlphaZero_Gomoku-master\AlphaZero_Gomoku-master\policy_value_net_tensorflow.py:61: UserWarning: `tf.layers.dense` is deprecated and will be removed in a future version. Please use `tf.keras.layers.Dense` instead.
  self.evaluation_fc2 = tf.layers.dense(inputs=self.evaluation_fc1,
2022-05-10 19:30:29.152093: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2022-05-10 19:30:29.748293: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 13933 MB memory:  -> device: 0, name: Tesla T4, pci bus id: 0000:00:06.0, compute capability: 7.5
2022-05-10 19:30:33.976398: I tensorflow/stream_executor/cuda/cuda_dnn.cc:368] Loaded cuDNN version 8201
batch i:1, episode_len:12
batch i:2, episode_len:20
batch i:3, episode_len:17
batch i:4, episode_len:11
batch i:5, episode_len:17
kl:0.00399,lr_multiplier:1.500,loss:4.44102668762207,entropy:3.580728054046631,explained_var_old:0.005,explained_var_new:0.204
batch i:6, episode_len:20
kl:0.00509,lr_multiplier:2.250,loss:4.374798774719238,entropy:3.5816354751586914,explained_var_old:0.065,explained_var_new:0.251
batch i:7, episode_len:7
kl:0.01145,lr_multiplier:2.250,loss:4.090033054351807,entropy:3.5747854709625244,explained_var_old:0.237,explained_var_new:0.572
batch i:8, episode_len:14
kl:0.00808,lr_multiplier:3.375,loss:3.8602192401885986,entropy:3.5711326599121094,explained_var_old:0.549,explained_var_new:0.777
batch i:9, episode_len:16
kl:0.03588,lr_multiplier:3.375,loss:3.7816779613494873,entropy:3.548457145690918,explained_var_old:0.709,explained_var_new:0.781
batch i:10, episode_len:9
kl:0.06818,lr_multiplier:2.250,loss:3.767848491668701,entropy:3.4980945587158203,explained_var_old:0.560,explained_var_new:0.718
batch i:11, episode_len:14
kl:0.06377,lr_multiplier:1.500,loss:3.8209140300750732,entropy:3.450775146484375,explained_var_old:0.448,explained_var_new:0.643
batch i:12, episode_len:17
kl:0.04083,lr_multiplier:1.000,loss:3.767989158630371,entropy:3.417010545730591,explained_var_old:0.411,explained_var_new:0.648
batch i:13, episode_len:16
kl:0.02567,lr_multiplier:1.000,loss:3.982619524002075,entropy:3.4054667949676514,explained_var_old:0.256,explained_var_new:0.412
batch i:14, episode_len:17
kl:0.03405,lr_multiplier:1.000,loss:3.8700919151306152,entropy:3.3119544982910156,explained_var_old:0.314,explained_var_new:0.421

默默等待就可以得到一个比较理想的模型了

进行人机对战可以运行

python human_play.py  
合智互联客户成功服务热线:400-1565-661

admin
admin管理员

上一篇:
下一篇:使用Elasticsearch、Spark构建推荐系统 #2:深入分析

留言评论

暂无留言