1.5 设置强化学习环境

强化学习算法利用需要一些复杂硬件的最先进的机器学习库。为了适配我们将在本书中解决的示例问题,你需要设置自己的计算机环境。下面看看我们在设置中需要的硬件和软件。

1.5.1 硬件要求

如前所述,最先进的强化学习模型通常在数百块GPU(图形处理芯片)和数千块CPU(芯片)上进行训练。当然,不要求你们手头就有这些资源。但是,拥有多核CPU将帮助你同时模拟多个智能体和环境,从而更快地收集数据。拥有GPU将加快用于现代强化学习算法的深度神经网络的训练。此外,为了能够有效地处理所有这些数据,还要有足够的RAM(内存)资源。但别担心,就算使用你目前所拥有的有限资源,你也仍然会从本书中得到很多。以下是我们用于运行实验的台式机的一些配置,可供参考:

❑ AMD Ryzen Threadripper 2990WX CPU(32核)

❑ NVIDIA GeForce RTX 2080 Ti GPU

❑ 128 GB RAM

作为使用昂贵硬件构建台式机的替代方案,你可以使用由不同公司提供的具有类似功能的虚拟机(Virtual Machine, VM)服务。最著名的如下所示:

❑ 亚马逊的AWS

❑ 微软Azure

❑ 谷歌云平台

这些云提供商还在设置过程中为你的虚拟机提供数据科学镜像,这样你就无须安装必需的深度学习软件(例如CUDA、TensorFlow等)。它们还提供了有关如何设置VM的详细指南,我们将把设置的详细信息放到这些指南中介绍。

可以使用TensorFlow进行小规模深度学习实验的最后一个选项是谷歌的Colab,它提供了可以从浏览器轻松访问的VM实例,并安装了必要的软件。你可以立即开始在类似Jupyter Notebook的环境中进行实验,这是快速实验的一个非常方便的选择。

1.5.2 操作系统

当你以教育目的开发数据科学模型时,Windows、Linux或macOS之间通常没有太大区别。但是,我们在本书中计划多做一些安排,即在GPU上运行高级强化学习库。此设定在Linux环境中可以得到最好的支持,我们使用的是Ubuntu 18.04.3 LTS发行版。另一种选择是macOS,但机器上通常没有GPU。最后,虽然设置可能有点复杂,但Windows Subsystem for Linux(WSL)2是你可以尝试的另一个选项。

1.5.3 软件工具箱

人们在为数据科学项目设置软件环境时,要做的第一件事就是安装Anaconda,它为你提供了一个Python平台以及许多有用的库。

提示

与Anaconda相比,名为virtualenv的CLI工具是一种轻量级的工具,用于为Python创建虚拟环境,并且在大多数生产环境中更受欢迎。我们也将在某些章节中使用它。你可以在https://virtualenv.pypa.io/en/latest/installation.html找到virtualenv的安装说明。

我们将特别需要以下软件包:

Python 3.7:Python是当今数据科学的通用语言(lingua franca)。我们将使用3.7版本。

NumPy:这是Python科学计算中使用的最基本的库之一。

pandaspandas是一个广泛使用的库,提供强大的数据结构和分析工具。

Jupyter Notebook:这是运行Python代码的非常方便的工具,尤其适用于小规模任务。默认情况下,它通常随Anaconda安装一起提供。

TensorFlow 2.x:这将是我们作为深度学习框架的选择。我们在本书中使用2.3.0版本。有时,我们也会参考使用TensorFlow 1.x的代码库。

Ray和RLlib:Ray是一个用于构建和运行分布式应用程序的框架,它越来越受欢迎。RLlib是一个在Ray上运行的库,包含许多流行的强化学习算法。在编写本书时,Ray仅支持Linux和macOS进行生产,Windows支持处于alpha阶段。我们将使用0.8.7版本。

gym:这是一个由OpenAI创建的强化学习框架,如果你曾接触过强化学习,那么你以前可能与之交互过。它允许我们以标准方式定义强化学习环境,并让它们与RLlib等包中的算法进行通信。

OpenCV Python绑定:我们需要它来完成一些图像处理任务。

Plotly:这是一个非常方便的数据可视化库。我们将使用Plotly和Cufflinks包将其绑定到pandas。

你可以在终端上使用以下命令之一来安装特定软件包。对于Anaconda,我们使用以下命令:

对于virtualenv(在大多数情况下也适用于Anaconda),我们使用以下命令:

有时,你可以灵活地使用包的版本,在这种情况下,你可以省略等号和后面的内容。

提示

为本书创建一个特定于你的实验的虚拟环境,并在该环境中安装所有这些包始终是一个好主意。这样,你就不会破坏其他Python项目的依赖关系。Anaconda提供了有关如何管理环境的综合在线文档,可在https://bit.ly/2QwbpJt获得。

现在有了这些环境,就可以开始编写强化学习代码了!