用Windows电脑训练深度学习模型?超详细配置教程来了

选自towardsdatascience
作者:Ahinand
机器之心编译
编辑:Panda
虽然大多数深度学习模型都是在Linux系统上训练的 , 但Windows也是一个非常重要的系统 , 也可能是很多机器学习初学者更为熟悉的系统 。 要在Windows上开发模型 , 首先当然是配置开发环境 。 KaggleMaster及机器学习实践者Abhinand立足于自己的实践 , 给出了一种简单易行的Windows深度学习环境配置流程 。
本文将介绍在Windows计算机上配置深度学习环境的全过程 , 其中涉及安装所需的工具和驱动软件 。 出人意料的是 , 即便只是配置深度学习环境 , 任务也不轻松 。 你很有可能在这个过程中犯错 。 我个人已经很多次从头开始配置深度学习环境了 , 但是通常是在对程序员更友好的操作系统Linux中 。
而对于Windows操作系统 , 没有多少文章详细解释这一过程 。 所以我打算自己来试试 。 这些天 , 经过多次试错之后 , 我终于找到了解决方案 。 这个方法不仅能够配置成功 , 还比我见过的其它教程简单得多 。
本教程为谁而写 , 以及为什么要用Windows?
相信我 , 我自己也不喜欢在Windows上鼓捣CUDA 。 但我们常常遇到这种情况:开发者经常需要在并非深度学习或程序开发专用的笔记本电脑或更强大的硬件上工作 。 在这种情况下 , 你并不总能避免使用Windows 。 如果你遇到这种情况 , 或者正好拥有一台Windows计算机 , 又或者还不能熟练使用Linux , 那么这份指南肯定能帮到你 。
本文包含以下内容:
硬件和软件的最低要求
安装Python和所需工具
设置开发环境
一些GPU术语
安装GPU驱动
安装TensorFlow(CPU和GPU)
安装PyTorch(CPU和GPU)
验证安装情况
我的个人经验和替代方法
硬件和软件的最低要求
如果你要按照本指南操作并且计划使用GPU , 你必须使用英伟达GPU 。
开发深度学习应用涉及到训练神经网络 , 这自然需要执行大量计算 。 也因此 , 我们需要越来越多的并行运算 , 而GPU正好能够满足我们的需求 。 这也是当前GPU需求旺盛的主要原因之一 。 大多数深度学习框架都自带GPU加速支持 , 这让开发者和研究者无需执行任何GPU编程就能在几分钟内使用GPU进行计算 。
大部分这些框架都(只)支持CUDA , 而这只能在英伟达GPU上使用 , 这也是你需要使用英伟达GPU的原因 。 但是 , 使用AMD的GPU也不是不可能 , 相关信息可参阅:https://rocmdocs.amd.com/en/latest/ 。
不过 , 就算你没有GPU , 也依然可以继续本教程 。 但为了有效进行深度学习 , 至少你要有好用的CPU、内存和存储空间 。
我的硬件——笔记本电脑的配置如下:
CPU——AMDRyzen74800HS8C-16T@4.2GHzonTurbo
RAM——16GBDDR4RAM@3200MHz
GPU——NvidiaGeForceRTX2060Max-Q@6GBGDDR6显存
对于硬件配置 , 我推荐至少使用4核2.6GHz的CPU、16GB内存和6GB显存的英伟达GPU 。
另外 , 对于本教程 , 你当然需要使用Windows10系统 。 我也假设你对Python软件包和环境具备基本认知 。 不管怎样 , 后面都会给出解释 。
推荐使用的Windows版本是最新的64位Windows10稳定版 。
本教程假设你的操作系统是刚装好的 , 没有执行过额外的修改 。 不过只要你知道自己在做什么 , 依然可以参考本教程 。
安装Python和所需工具
第一步当然是安装Python 。 我建议使用Mini-Conda来安装Python 。 先给刚入门的新手解释一下原因 。
Conda是一个软件包管理工具 , 可以帮助你安装、管理和移除各种不同的软件包 。 不过Conda并不是唯一的选择 , 还有pip——这是我很喜欢的Python默认软件包管理工具 。 这里我们选择Conda的原因是在Windows上使用它更简单直接 。
Anaconda和Mini-Conda都是Conda的软件发行版 , 其中预安装了一些非常有用的数据科学/机器学习软件包 , 能节省很多时间 。 Anaconda包含150多个在数据科学和机器学习中有用的软件包 , 基本上包含了你可能需要的一切 , 而Mini-Conda仅包含一些必需的工具和软件包 。
我推荐使用Mini-Conda , 因为我喜欢对所安装的软件包有(几乎)完整的控制权 。 清楚地了解你所安装的东西完全不是坏事 。 当然这还能帮你节省一些存储空间 , 你也不会装上几十个你可能永远也用不上的奇怪软件包 。
要安装Mini-Conda , 请访问:https://docs.conda.io/en/latest/miniconda.html
下载Windows64位版本的Python3安装工具 , 然后像安装其它Windows软件一样安装它 。 一定要勾选询问你是否要将Conda和Python加入到PATH的勾选框 。
现在你可以通过以下命令检查Conda和Python是否安装成功 。 如果安装成功 , 则会显示版本号;否则你可能需要再次正确安装Mini-Conda并将其加入到PATH 。
下一步是安装jupyter-notebook , 请在命令行界面使用以下命令:
你可以通过运行jupyternotebook来验证安装 , 这会帮你在浏览器上打开JupyterNotebook 。
设置开发环境
这一步很重要 , 但很多人会忽视它 。 使用Anaconda这种包含所有已知软件包的工具是可以理解的 , 但如果要开发自己的项目 , 真正构建一些东西 , 你可能还是需要一个专门针对该项目或你的工作性质的定制开发环境 。 使用专门虚拟环境的另一大优势是你可以将软件包与全局设置隔离开 。 这样 , 就算你在该环境中使用软件包时搞错了 , 你也可以轻松地丢弃它们 , 而不对全局软件包产生任何影响 。
这也能让你灵活地使用任何之前版本的Python创建环境 。 这样 , 你就可以避免使用那些还不稳定的新特性 , 之后再根据支持情况选择是否升级 。
创建Conda环境还算简单 。 为了方便解释 , 我创建了一个名为tensorflow的环境 , 你可以将其改为任何名称 。 我将使用Python3.7 , 因为我知道TensorFlow对其有很好的支持 。 顺便一提 , 这将是安装TensorFlow的位置 , 我还会创建一个名为torch的环境来安装PyTorch 。
环境创建完成之后 , 你可以使用以下命令进入该环境 , 其中的tensorflow只是我们之前提供给该环境的名称 。
进入环境之后 , 你会在提示框的左边看到类似这样的信息:
用Windows电脑训练深度学习模型?超详细配置教程来了
文章图片
如果你没在Powershell上看到这个信息 , 那么你可能需要先在Powershell初始化conda一次:
用Windows电脑训练深度学习模型?超详细配置教程来了
文章图片
然后 , 你可能会在左边看到(base) , 如上图所示 , 此时你已不在任何环境中 。 之后 , 你再进入任何环境 , 你应该都会看见环境名 。
此外 , 你还可以在环境中安装nb工具 , 并将其链接到我们之前安装的JupyterNotebook 。
要将该环境注册到JupyterNotebook , 可运行以下命令:
要退出Conda环境 , 则运行以下命令:
现在按照同样的步骤创建一个名为torch的环境:
如果环境设置成功 , 你可以在环境列表中看到它们 。
用Windows电脑训练深度学习模型?超详细配置教程来了
文章图片
要验证每个环境是否都已安装了各自的软件包 , 你可以进入各个环境 , 执行condalist , 这会显示该环境中已安装的所有软件包 。
用Windows电脑训练深度学习模型?超详细配置教程来了
文章图片
不要因为这个列表很长而感到困扰 。 Conda已经妥善地处理了主要部分和依赖包 。
一些GPU术语
在安装GPU相关软件之前 , 我们有必要了解这些软件是什么 , 以及你需要它们的原因 。
GPU驱动:顾名思义 , GPU驱动是让操作系统及程序能使用GPU硬件的软件 。 游戏玩家肯定很熟悉这个 。 如果你喜欢打游戏 , 你可能需要让这个软件保持最新以获得最好的游戏体验 。
CUDA:简单来说 , 这是英伟达开发的一个编程接口层 , 能让你调用GPU的指令集及其并行计算单元 。
自2010年代末的GeForce8系列GPU以来 , 几乎所有GPU都兼容CUDA 。 要想了解你的GPU是否启用CUDA , 可以访问英伟达的网站 。
举个例子 , 如果你有一台消费级GPU , 不管是GeForce系列还是Titan系列 , 你都可以在下图中看到你的GPU是否支持CUDA 。
用Windows电脑训练深度学习模型?超详细配置教程来了
文章图片
数据截至2020年9月 , 截图仅含部分型号 。
如果你的电脑是笔记本 , 你应该看右边的列表;如果你的电脑是台式机 , 你显然就该看左边的列表 。
之前已经提到 , 我的GPU是右侧列表中的RTX2060Max-Q 。 另外 , 你不必在意显卡型号名称是否与该列表中的名称完全匹配 , Max-Q和Super的底层架构一样 , 只在TDP、CUDA核及张量核数量方面有一些差异 。
比如 , 不管你的GPU是RTX2080Super还是2080Max-Q又或是2080SuperMax-Q , 看列表中的RTX2080就够了 。 但如果你的GPU是RTX2080Ti或其它加了Ti的型号 , 则说明你的GPU是该系列中最高端的那一款 , 这些GPU通常在显存大小和CUDA核及张量核数量方面更具优势 。
截至2020年9月 , 要使用TensorFlow2.0 , 显卡计算能力必须高于3.5 , 但建议使用计算能力至少为6的显卡以获得更好的体验 。 TensorFlow2.0还需要CUDA10版本 , 而这又进一步要求驱动版本至少为418.x 。
PyTorch需要的CUDA版本至少为9.2 , 但也支持10.1和10.2 。 所需的计算能力至少要高于3.0 。
CuDNN:即CUDADeepNeuralNetwork软件库 , 这是一个用于深度神经网络的GPU加速原语库 。 cuDNN为前向和反向卷积、池化、归一化和激活层等标准例程提供了经过高度微调的实现 。
(可选)TensorRT:NVIDIATensorRT是一套用于高性能深度学习接口的SDK 。 其包含深度学习接口优化器和运行时优化器 , 能为深度学习接口应用提供低延迟和高通量的特性 。
安装GPU驱动
首先 , 你需要搞清楚所使用的GPU型号 , 而且你的GPU必须启用了CUDA 。
如果你还没有安装驱动 , 你可能需要运行一次Windows更新 , 它会自动处理有用软件的安装过程 , 比如英伟达控制面板 。 这能帮助你获悉GPU的相关信息 , 还有一些与本文无关的设置 。
英伟达控制面板就绪之后 , 你可以在开始菜单打开它 , 也可以右键点击桌面 , 然后选择英伟达控制面板 。
打开之后 , 你可以点击「帮助→系统信息」来查看GPU驱动版本 。 驱动版本号列在「细节」窗口的顶部 。
用Windows电脑训练深度学习模型?超详细配置教程来了
文章图片
如上图所示 , 我的驱动版本是456.x , 远超过418.x的最低要求 , 所以我不必安装新驱动 。
但你的电脑可能不是这样的 。 要安装最新版的驱动 , 可访问https://www.nvidia.com/Download/index.aspx , 然后输入GPU信息 , 下载合适的驱动 。
用Windows电脑训练深度学习模型?超详细配置教程来了
文章图片
?
驱动下载完成后 , 运行安装包 , 选择快速安装会更轻松 。 驱动安装完成之后 , 可使用英伟达控制面板进行验证 。
另一个安装驱动的方法是使用英伟达的GeForceExperience应用程序 。 只要你购买的是主打游戏的电脑 , 应该都预装了该软件 。 安装过程很简单 。
这一步是可选的 。 如果你已经按照上面的步骤安装了驱动 , 或你的电脑没有预装该软件 , 那就不用在乎这个步骤 。
你可在这里下载该程序:https://www.nvidia.com/en-in/geforce/geforce-experience/ , 然后跟着安装流程将其安装到电脑上 。 安装完成 , 打开它 , 进入驱动选项卡 , 检查更新并安装新驱动 。 你也可以在该应用中查看驱动的版本号 。
用Windows电脑训练深度学习模型?超详细配置教程来了
文章图片
?GeForceExperience演示
现在安装驱动过程中最重要的步骤已经完成 , 你可以选择手动安装CUDA工具包 , 也可以选择在安装TensorFlow或PyTorch时留给Conda来安装(强烈推荐后者) 。
如果决定手动安装 , 你可以从这里下载安装包:https://developer.nvidia.com/cuda-downloads , 然后跟着指示操作即可 。
用Windows电脑训练深度学习模型?超详细配置教程来了
文章图片
安装CUDA工具包
CUDA工具包装好之后 , 你可以在cmd或Powershell中执行nvidia-smi命令进行验证 。
用Windows电脑训练深度学习模型?超详细配置教程来了
文章图片
nvidia-smi的输出
安装TensorFlow
现在终于来到本教程的关键了 。 如果你已经完成了前述步骤 , 那么这一步会非常简单 。
我们通过Conda来安装TensorFlow2.x 。
要注意 , 首先进入我们之前创建的tensorflow环境 , 然后再进行操作 。
如果你需要GPU支持 , 就运行以下命令:
通过anaconda通道安装TensorFlow的GPU支持软件 。 使用conda而非pip安装TensorFlow的一大优势是conda的软件包管理系统 。 使用conda安装TensorFlow时 , conda还会安装所有必需和兼容的依赖包 。 这个过程是自动的 , 用户无需通过系统软件包管理器或其它方式安装任何其它软件 。
其中也包含TensorFlow或PyTorch所需的版本合适的CUDA工具包 。 因此 , 使用conda能让这个过程变得非常简单 。
我们只能在安装了TensorFlowGPU的环境中看到所安装的CUDA工具包 。 这既不会影响到全局系统的CUDA版本 , 同时也能满足TensorFlow和PyTorch的不同版本CUDA需求 。 这就是使用虚拟环境的最大好处 , 它能让不同的虚拟环境完全隔离开 。
如果一切顺利 , 你不会在安装过程中看到任何报错信息 。
要验证TensorFlow和所需的软件包是否成功安装 , 你可以执行condalist , 这会显示已安装软件包的列表 , 你应该能在其中找到与TensorFlow相关的软件包以及CUDA工具包 。
用Windows电脑训练深度学习模型?超详细配置教程来了
文章图片
你也可以打开Pythonprompt来验证是否已安装TensorFlow 。
如果你看到了版本号 , 那么恭喜你 , TensorFlow已安装成功!任务完成 。
用Windows电脑训练深度学习模型?超详细配置教程来了
文章图片
在Pythonprompt中验证TensorFlow的安装情况 。
你在Pythonprompt中使用TensorFlow时可能会看到这样的信息:「OpenedDynamicLibrary」 , 但这并不是坏消息 。 这只是一条日志消息 , 说明TensorFlow可以打开这些软件库 。
GPU上的安装情况验证将在下文中介绍 。
如果要安装仅使用CPU的TensorFlow , 你需要对安装命令进行简单的修改 。
这将会安装没有CUDA工具包和GPU支持的TensorFlow 。
安装PyTorch
安装PyTorch的过程与安装TensorFlow其实没太大差异 。 conda让这一切都变得非常简单 。
首先 , 进入我们创建的torch环境 。
如果你想安装支持CUDA的PyTorch , 使用以下命令:
该命令会通过Conda的PyTorch通道安装兼容CUDA的PyTorch 。
至于仅使用CPU的PyTorch , 只需从以上命令中移除cudatookit即可:
这会安装无CUDA支持的PyTorch 。
和之前一样 , 你可以使用condalist验证安装情况 , 也可使用以下代码在Python上执行验证 。
如果返回版本号 , 则说明已成功安装PyTorch 。
验证安装情况
有时候 , 你觉得一切都很顺利 , 准备开始使用这些工具时却遇到了一些重大错误 。 如果你正好遇到了这种情况 , 有可能是机器的问题 , 也可能是流程出错了 , 不能一概而论 , 要具体问题具体分析 。
为了帮助你更好地验证安装情况 , 并确保TensorFlow和PyTorch使用的是指定的硬件 , 这里分享一些笔记 。
你可以在https://github.com/abhinand5/blog-posts的dl-setup-win文件夹中找到它们 。 你可以克隆这些笔记然后运行其中的代码 。 如果返回的信息正确 , 你就可以放手开发了 。
下图是该笔记的代码示例:
用Windows电脑训练深度学习模型?超详细配置教程来了
文章图片
注:如果你没有从正确的环境启动JupyterNotebook , 就可能会遇到一些错误 。 例如 , 如果你想使用tensorflow环境 , 你可以从base环境启动notebook , 然后将核改到tensorflow环境 , 但我在这样操作时遇到过报错 。 因此 , 如果你要运行TensorFlow , 就在tensorflow环境里启动Notebook;如果你要运行PyTorch , 就在torch环境中启动Notebook 。 不要从base或其它地方启动 。
我的个人经验和替代方法
我一直使用这套配置完成一些轻量级的深度学习工作 , 反正这套本地硬件足够了 。 现在几周过去了 , 一切都还不错 。 但是 , 在此之前我还尝试过其它一些方法 , 也出现过一些严重问题 。
比如有一次我尝试了这里的方法:https://developer.nvidia.com/cuda/wsl , 其中涉及在WSL(WindowsSubsystemforLinux)中启用CUDA和英伟达驱动以便使用GPU来进行深度学习训练 。 目前这个功能还在预览阶段 , 但一旦官方发布 , 必将为深度学习实践者带来重大影响 。 这能将让人惊喜的WSL与CUDA/GPU驱动结合到一起 。
不过这是有条件的 。 要想使用这一功能 , 你必须参与WindowsInsiderProgram项目 。 当然 , 根据我的经历 , 内部预览版往往有很多漏洞 。 我在使用时遇到过很多问题 , 包括所有Windows应用不再响应、GSOD(绿屏死机)错误、未正确启动、驱动故障 。 我个人不喜欢不稳定的环境 , 所以选择退出只是时间问题 。
你有可能在使用预览版时不会遇到任何问题 , 只不过我的经历太糟了 , 所以不推荐使用预览版 。
其它替代选择包括完全不使用Windows , 只使用基于Linux的系统 , 享受更加流畅的体验 。 只不过Linux没有Windows中那样花哨的GUI安装工具 。
本文介绍了如何在Windows系统中安装TensorFlow、PyTorch和Jupyter工具 , 希望对大家有所帮助 。
【用Windows电脑训练深度学习模型?超详细配置教程来了】https://towardsdatascience.com/setting-up-your-pc-workstation-for-deep-learning-tensorflow-and-pytorch-windows-9099b96035cb


    推荐阅读