1. 下载StarCraft II游戏到服务器里面

如下图所示:
在这里插入图片描述

2.创建环境+安装pytorch

采用anaconda来创建虚拟环境:

conda create -n 虚拟环境名称 python=3.8

实例为:

conda create -n pymarl python=3.8

采用3.8的python的兼容性更强

然后切换到创建好的环境:

conda activate pymarl

在这个环境当中装pytorch包,有两种方式,一种是线上装,还有一种是离线装。
①对于线上装pytorch的话,可以去官网查找对应的cuda版本的pytorch进行安装:https://pytorch.org/get-started/previous-versions/

②我采用的是离线装pytorch的方式:
这是下好的pytorch的包:
在这里插入图片描述
离线安装pytorch包的命令:

conda install --offline pytorch文件名

实例为:

conda install --offline /home/zpq/pytorch-1.8.0-py3.8_cuda11.1_cudnn8.0.5_0.tar.bz2

采用离线安装pytorch有一个问题,如下:
在这里插入图片描述就是动态库会找不到。解决方案就是安装cudatoolkit,它的作用可以来链接动态库。

conda install cudatoolkit=11.1

注意这里的cudatoolkit需要对应自己的pytorch版本。具体还是去官网那边去找:https://pytorch.org/get-started/previous-versions/

如果以上的conda安装出现问题的话,比如conda里找不到cudatoolkit=11.1的情况,可以转用pip来进行安装

pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html

至此可以再测试下pytorch是否安装好了:

python
import torch

在linux窗口输入上述代码没有报错,即证明pytorch装好了。

3.下载及配置pymarl+smac

通过git来获取pymarl的代码:

git clone https://github.com/oxwhirl/pymarl.git

如果上述git出现问题,就将https改为git,即为:

git clone git://github.com/oxwhirl/pymarl.git

获取完后代码为:
在这里插入图片描述
注意如上的3rdparty并不是原生下载下来就有的,所以不需要惊慌为什么你下载的和我的不一样。

下面就是说一下这个3rdparty的创建以及它的作用

它的作用就是作为软链接,来链接到我们服务器里已经下好的StarCraft II游戏,这样有一个好处,那就是一台服务器只需要有一个这个游戏就行了,就不需要一个项目配一个StarCraft II游戏。毕竟一个这个游戏接近40G,空间占比还是很大的。

具体代码操作:
在linux窗口上,首先用cd命令切换进你的pymarl的代码里面:
比如:

cd ~/code/pymarl/

由于我pymarl是放在code文件目录下的,所以会有这一层父目录的存在。

然后进行创建3rdparty:

mkdir 3rdparty

然后切换进3rdparty

cd 3rdparty/

再使用连接的命令:

ln -s StarCraftII的安装路径 StarCraftII

实例:

ln -s /home/user/StarCraftII StarCraftII

由于我这个游戏是存放在user目录下的,所以是这样的操作。操作完后,我们可以看到这样的效果:

在这里插入图片描述
这就证明你已经软链接成功了!

下面再就是安装SMAC了,smac的作用就是作为游戏的接口,它的安装命令很简单:

pip install git+https://github.com/oxwhirl/smac.git

然后安装完,要记得在你的home目录里的.bashrc文件末尾加入这样一行命令:
在这里插入图片描述记得在.bashrc文件里加了这行命令之后要再source它一下,让上面加的那行代码生效。

source .bashrc
export SC2PATH = /home/user/StarCraftII/

即这一行的命令的作用就是为了让smac能够找到游戏具体的位置。【注意:之前的3rdparty是为了让pymarl能够找到游戏所做的软链接】。
否则的话,当你测试smac的时候会得到这样类似的错误信息哦~

在这里插入图片描述

ps:下面这一小部分是写给自己要重装SMAC看的,读者可以略过这一小部分。
因为我的smac已经安装过了,并且采用的是可编辑式的smac,因此需要先切换到当前的smac所在根目录,也就是:

cd /data/zpq/code_135/pymarl/src 

然后采用SMAC的github官网提供的可编辑安装即可:
在这里插入图片描述也就是在上述的目录内运行:

pip install -e smac/ 

这样俺的smac就安装好了,然后测试smac有没有安装好的结果图跟上述的结果图可能有点不同,因为我的smac是经过改动的,所以运行python -m smac.examples.random_agents语句的结果可能还是会报错,如下所示: 在这里插入图片描述
但是不需要慌张,到这里就对于自己来说,这个smac已经重新安装成功了。

4.测试环境

做完上述的smac配置步骤就可以进行测试smac环境了:

python -m smac.examples.random_agents

如果跑出来的结果图是这样的,并且没有报错:
在这里插入图片描述

那么恭喜你,你的smac的配置已经完成了!

然后就可以测试pymarl的配置了:【注意,到现在为止pymarl肯定是还没有配置好的,我们要通过运行下面的代码,然后发现一个错误就导入进一个包,以及根据相对应的提示来对里面的代码进行一点点的修改】

直接运行这句话【跑这句代码的时候,要确认你所在的目录是在/pymarl/的里面】:

python src/main.py --config=qmix --env-config=sc2 with env_args.map_name=2s3z t_max=20000

然后你可能就会发现这么个问题:
在这里插入图片描述
那么这个问题就是告诉你,你要装这个包了!输入下面命令,就得以解决。

pip install sacred

然后就接着用上面测试pymarl是否配置好的运行代码来跑,接着找错误,看到差什么包就安装什么包就可以了。

注意!!!这里有一个包要注意,需要指定它的版本号,那就是对应yaml的包不能装最新的版本,装最新的版本会导致其中有些语句过时了从而报错。

pip install PyYAML==3.13

我这边用的是3.13版本的yaml。

然后就是重复上面的步骤:①检查pymarl是否配置好②加入依赖的包,就是①②反复横跳。

最后就是你可能会碰到这样的问题:
在这里插入图片描述
你的报错信息出现了这样的说法

item = “{:.4f}”.format(np.mean([x[1] for x in self.stats[k][-window:]]))

那么你需要对于你的src/utils/logging.py文件里面的一句代码【大概在48行左右的位置】进行修改:

import torch as th
# 当我没有写入上面"import XXX"的代码的时候,下面的"item = XXX"是位于48行
# 写入了上面的代码后,"item = XXX"就在49行的位置了
item = "{:.4f}".format(th.mean(th.tensor([x[1] for x in self.stats[k][-window:]])))
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐