项目地址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次“新建”
分别输入
代码语言:javascript复制C:ProgramDataAnaconda3
C:ProgramDataAnaconda3Librarymingw-w64bin
C:ProgramDataAnaconda3Librarybin
C:ProgramDataAnaconda3Scripts
前面的路径取决于实际情况‘
点开这个,输入conda,如果输出
代码语言:javascript复制(base) PS C:UsersAdministrator> 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:UsersAdministrator.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环境变量
“=”前面的为新建变量名,后面是变量值,像下图
代码语言:javascript复制CUDA_SDK_PATH = C:ProgramDataNVIDIA CorporationCUDA Samplesv11.2
CUDA_LIB_PATH = %CUDA_PATH%libx64
CUDA_BIN_PATH = %CUDA_PATH%bin
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%binwin64
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%commonlibx64
另外在Path变量里面新建以下几个
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.2bin
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.2extrasCUPTIlib64
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.2include
C:toolscudabin
老规矩,路径靠自己
最后结果
3、TensorFlow
打开这个,随便运行个东西
代码语言:javascript复制conda install python==3.8
然后喜提报错亿堆
代码语言:javascript复制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根目录)
找到这个文件,用记事本打开
将里面的内容替换成
代码语言:javascript复制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
然后保存
运行
代码语言:javascript复制conda update --all
成功解决
正式开始安装
代码语言:javascript复制pip install tensorflow-gpu
一眼望去,3h,可以睡一觉了(zzz)
换成国内源
代码语言:javascript复制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
这速度舒服多了
然后检验一下是否安装好了
代码语言:javascript复制python
代码语言:javascript复制import tensorflow as tf
print('GPU',tf.test.is_gpu_available())
a = tf.constant(2.)
b = tf.constant(4.)
print(a * b)
如果大家像我一样脸黑,可能会看到如下结果
代码语言:javascript复制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)
之后我又执行了一下官方的安装
代码语言:javascript复制pip install tensorflow
再次检测
代码语言:javascript复制(base) PS C:UsersAdministrator> 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
不绕弯子,直接国内源安装
代码语言:javascript复制pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
结果如下
代码语言:javascript复制(base) PS C:UsersAdministrator> 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:programdataanaconda3libsite-packages (1.21.5)
Requirement already satisfied: scipy in c:programdataanaconda3libsite-packages (1.7.3)
Requirement already satisfied: matplotlib in c:programdataanaconda3libsite-packages (3.5.1)
Requirement already satisfied: python-dateutil>=2.7 in c:programdataanaconda3libsite-packages (from matplotlib) (2.8.2)
Requirement already satisfied: pillow>=6.2.0 in c:programdataanaconda3libsite-packages (from matplotlib) (9.0.1)
Requirement already satisfied: pyparsing>=2.2.1 in c:programdataanaconda3libsite-packages (from matplotlib) (3.0.4)
Requirement already satisfied: packaging>=20.0 in c:programdataanaconda3libsite-packages (from matplotlib) (21.3)
Requirement already satisfied: fonttools>=4.22.0 in c:programdataanaconda3libsite-packages (from matplotlib) (4.25.0)
Requirement already satisfied: cycler>=0.10 in c:programdataanaconda3libsite-packages (from matplotlib) (0.11.0)
Requirement already satisfied: kiwisolver>=1.0.1 in c:programdataanaconda3libsite-packages (from matplotlib) (1.3.2)
Requirement already satisfied: six>=1.5 in c:programdataanaconda3libsite-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)
三、正式开始
从项目地址下载压缩包并解压
从anaconda里的powershell,cd到解压后的文件夹
打开这个文件
由于咱们用的是TensorFlow训练,所以需要修改注释行,让模型用TensorFlow来训练
修改方法如下
在cd到文件夹后运行
代码语言:javascript复制python train.py
锵锵锵,报错了
问题是我们使用的是tensorflow2.0以上版本,代码中的函数是1.0的版本
打开这个文件
将这个
改为
代码语言:javascript复制import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
然后再次运行
代码语言:javascript复制python train.py
训练就启动了
如下
代码语言:javascript复制(base) PS C:UsersAdministratorDownloadsAlphaZero_Gomoku-masterAlphaZero_Gomoku-master> python train.py
WARNING:tensorflow:From C:ProgramDataAnaconda3libsite-packagestensorflowpythoncompatv2_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:UsersAdministratorDownloadsAlphaZero_Gomoku-masterAlphaZero_Gomoku-masterpolicy_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:ProgramDataAnaconda3libsite-packageskeraslegacy_tf_layersconvolutional.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:UsersAdministratorDownloadsAlphaZero_Gomoku-masterAlphaZero_Gomoku-masterpolicy_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:UsersAdministratorDownloadsAlphaZero_Gomoku-masterAlphaZero_Gomoku-masterpolicy_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:UsersAdministratorDownloadsAlphaZero_Gomoku-masterAlphaZero_Gomoku-masterpolicy_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:UsersAdministratorDownloadsAlphaZero_Gomoku-masterAlphaZero_Gomoku-masterpolicy_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:ProgramDataAnaconda3libsite-packageskeraslegacy_tf_layerscore.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:UsersAdministratorDownloadsAlphaZero_Gomoku-masterAlphaZero_Gomoku-masterpolicy_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:UsersAdministratorDownloadsAlphaZero_Gomoku-masterAlphaZero_Gomoku-masterpolicy_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:UsersAdministratorDownloadsAlphaZero_Gomoku-masterAlphaZero_Gomoku-masterpolicy_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
默默等待就可以得到一个比较理想的模型了
进行人机对战可以运行
代码语言:javascript复制python human_play.py