Windows10系统下,从零搭建多智能体强化学习实战环境(SMAC平台)
1. 星际争霸2游戏安装与配置
在Windows10系统下搭建SMAC平台,第一步需要安装星际争霸2游戏本体。虽然暴雪官方已经停止更新,但游戏客户端仍然可以正常下载使用。我建议选择完整版安装,因为后续需要的地图文件和数据都需要完整客户端支持。
下载时要注意选择正确的版本,建议下载4.10版本,这是目前SMAC平台兼容性最好的版本。安装路径最好不要包含中文或特殊字符,我习惯安装在E盘的Games文件夹下,比如E:\Games\StarCraft II。安装完成后,需要设置一个关键的系统环境变量SC2PATH,这个变量指向你的星际争霸2安装目录。
具体操作步骤是:右键"此电脑"→"属性"→"高级系统设置"→"环境变量",在系统变量中新建一个名为SC2PATH的变量,值为你的安装路径。比如我的设置就是E:\Games\StarCraft II。这一步非常重要,后续SMAC平台会通过这个环境变量来定位游戏资源。
安装完成后,建议先运行一次游戏,确保能够正常启动。首次运行会要求登录战网账号,如果没有可以注册一个免费账号。登录成功后进入游戏主界面就可以退出了,这样能确保所有必要的游戏文件都已经正确初始化。
2. Python虚拟环境配置
为了避免与系统Python环境产生冲突,强烈建议使用Anaconda创建一个独立的虚拟环境。我实测过Python 3.7和3.8版本都能很好地兼容SMAC平台,这里以Python 3.7为例。
首先打开Anaconda Prompt,执行以下命令创建环境:
conda create -n sc2 python=3.7 conda activate sc2创建环境后,建议先升级pip到最新版本:
python -m pip install --upgrade pip虚拟环境配置时容易遇到的一个坑是环境变量问题。如果你之前安装过其他版本的Python,可能会出现环境混乱的情况。我建议在创建新环境后,执行conda list检查已安装的包,确保是一个干净的环境。如果发现有不必要的包,可以用conda remove package_name来清理。
3. PyTorch及其扩展库安装
PyTorch是SMAC平台的核心依赖之一,版本选择非常关键。根据我的经验,PyTorch 1.4.0到1.8.0之间的版本兼容性都还不错,但考虑到torch-geometric等扩展库的依赖关系,建议选择PyTorch 1.4.0。
对于有NVIDIA显卡的用户,安装GPU版本可以显著提升训练速度。安装前先用nvidia-smi命令检查CUDA驱动版本,我机器上装的是CUDA 10.1,所以安装命令如下:
conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.1 -c pytorch安装完成后,用以下命令验证是否安装成功:
python -c "import torch; print(torch.cuda.is_available())"如果输出True,说明GPU版本的PyTorch已经正确安装。接下来安装torch-geometric及其依赖库。这是一个比较麻烦的过程,我遇到过多次安装失败的情况。正确的安装顺序应该是先安装依赖库,最后安装torch-geometric本身。
首先需要下载四个预编译的wheel文件:
- torch-scatter
- torch-sparse
- torch-cluster
- torch-spline-conv
这些文件可以从PyTorch Geometric的官方仓库下载,注意选择与PyTorch 1.4.0和CUDA 10.1兼容的版本。下载后依次安装:
pip install torch_scatter-2.0.3+cu101-cp37-cp37m-win_amd64.whl pip install torch_sparse-0.5.1+cu101-cp37-cp37m-win_amd64.whl pip install torch_cluster-1.5.2+cu101-cp37-cp37m-win_amd64.whl pip install torch_spline_conv-1.2.0+cu101-cp37-cp37m-win_amd64.whl最后安装torch-geometric:
pip install torch-geometric4. SMAC平台安装与配置
SMAC平台的安装相对简单,可以直接从GitHub仓库安装。我推荐使用开发模式安装,这样方便后续更新和调试:
git clone https://github.com/oxwhirl/smac.git pip install -e smac/安装完成后,需要下载SMAC专用的地图文件。这些地图文件可以从SMAC的GitHub仓库或者相关资源网站获取。下载后解压,你会得到一个名为SMAC_Maps的文件夹。这个文件夹需要放置在星际争霸2安装目录下的Maps文件夹中。
如果安装目录下没有Maps文件夹(常见于非默认安装路径的情况),需要手动创建。完整路径应该是你的星际2安装路径\Maps\SMAC_Maps。放置好地图文件后,可以用以下命令验证地图是否加载成功:
python -m smac.bin.map_list5. 常见问题排查
在实际安装过程中,我遇到过几个典型问题,这里分享一下解决方案。
第一个问题是星际争霸2路径错误。即使设置了SC2PATH环境变量,某些情况下SMAC还是会尝试从默认路径查找游戏文件。解决方法是在代码中显式指定游戏路径,或者在C盘创建符号链接:
mklink /D "C:\Program Files (x86)\StarCraft II" "E:\Games\StarCraft II"第二个问题是PyTorch和CUDA版本不匹配。如果遇到CUDA runtime error之类的提示,建议彻底卸载PyTorch后重新安装指定版本。可以用以下命令彻底卸载:
pip uninstall torch conda uninstall pytorch第三个问题是地图加载失败。如果运行示例代码时提示找不到地图,检查以下几点:
- 地图文件是否放在正确的路径下
- 地图文件夹名称是否正确(必须是SMAC_Maps)
- 文件权限是否正常(特别是如果安装在系统盘)
6. 测试运行与验证
完成所有安装后,可以用SMAC提供的示例代码进行测试。最简单的测试是运行随机智能体:
python -m smac.examples.random_agents如果一切正常,你应该能看到星际争霸2游戏窗口弹出,并观察到随机行动的智能体。第一次运行可能会比较慢,因为需要加载游戏资源。如果长时间没有响应,可以检查任务管理器中的SC2进程是否正常运行。
对于更复杂的测试,可以尝试修改示例代码,比如调整观察空间或奖励函数。我建议先从简单的3m地图(3个海军陆战队对战)开始测试,这是调试时最常用的场景。
7. 性能优化建议
在Windows平台上运行SMAC,有几个优化技巧可以提升性能:
- 关闭游戏渲染可以大幅提高运行速度。在代码中设置
render=False可以节省大量资源。 - 调整帧率限制。星际争霸2默认的帧率较高,可以通过设置
fps参数来降低。 - 使用
parallel_envs参数可以并行运行多个环境实例,充分利用多核CPU的优势。 - 如果使用GPU训练,注意监控显存使用情况。SMAC的环境会占用不少显存,可能需要调整批量大小。
我在实际使用中发现,即使是配置不高的机器,通过合理调整这些参数,也能获得不错的学习效率。GTX 1060级别的显卡就能支持基础的实验需求。
