分享

【Deep Learning with PyTorch 中文手册】(五)Summary for Chapter I

 叽歪小糖豆 2021-01-09

Hardware for deep learning

使用预训练网络预测新的数据对于任何新款笔记本电脑或私人计算机来说都是力所能及的事情。即使是对一个预训练网络的一小部分进行再训练,以使其拟合到一个新的数据集上,也不一定需要专门的硬件。读者完全可以在私人计算机或笔记本电脑上练习本书中的示例。不过我们预计,对于一些更复杂的示例,进行一次完整的训练可能会需要一个具有CUDA功能的图形处理单元(GPU),例如一个具有8GB RAM的GPU(我们建议使用NVIDIA GTX 1070及以上级别的GPU)。当然,如果读者的硬件中可用的RAM较少,也可以适当调整这些参数。

需要注意的是:如果读者愿意花费时间等待程序运行的话可以不必在意硬件的配置。但是在GPU上运行会将训练时间降低至少一个数量级(通常会快40到50倍)。以单步执行来看,计算参数更新所需的操作在现代硬件(如典型的笔记本电脑的CPU)上的执行速度是很快的(几毫秒到几秒不等)。问题是,训练过程中会多次循环往复地执行这些操作,逐步地更新网络参数,从而将训练误差降到最低(训练时候还用CPU就会非常慢啦)。

适中规模的网络在配备了良好GPU的工作站上从零开始训练大型的真实世界中的数据集,可能需要花费数小时乃至数天的时间。在同一个机器上使用多个GPU,或者更进一步使用配备了多个GPU的机器集群,能够有效地降低训练时间。

由于云计算服务商提供的服务,这些配置并非像听上去那样贵的难以承受。DAWNBench是斯坦福大学的一项有趣的计划,旨在为完成常见的深度学习任务提供一个关于模型训练时间和云计算成本的参考基准,并且这些常见的深度学习任务所对应的数据集也都是公开的。

如果读者拥有GPU那就再好不过了。否则的话,我们建议查看各种云平台的服务,其中许多服务都内置了支持GPU且预安装PyTorch的Jupyter notebooks,并且这些服务通常都会有一定的免费额度。

最后需要考虑的是:操作系统(OS)。PyTorch从第一个版本开始就支持Linux和macOS,并于2018年期间增加了对Windows的支持。由于目前的苹果笔记本电脑不支持具有CUDA功能的GPU,所以macOS系统上的PyTorch预编译包也仅支持CPU。我们尽量避免假设读者是在某个特定的操作系统上运行的情况;脚本命令行应该能很容易地转换成Windows兼容的格式。为了方便起见,只要有可能我们就把代码列出来,读者可以把它当作是运行在Jupyter Notebook上(小糖豆注:重要的是代码,是思想,不必在意操作系统)。

有关安装的信息,请参阅官方网站上的入门指南。我们建议Windows用户使用Anaconda(预装了很多Python包和conda管理工具)或Miniconda(Anaconda的mini版)进行安装。其他操作系统的用户,如Linux用户,通常会有更多的可用选项,其中Pip是最常见的安装程序的工具之一。当然,有经验的用户可以选择最熟悉的开发环境以及Python包的安装方式。

Using Jupyter Notebooks

我们假设读者已经安装了PyTorch和其他依赖项,并且已经验证了它们安装无误。我们将经常使用Jupyter Notebooks,例如展示代码。Jupyter Notebook在浏览器中以页面的形式来展示,提供代码交互式运行的体验。代码由内核计算,该内核是指一个运行在服务器上的进程,它随时准备接收并执行代码,之后返回结果并将它显示在页面上。Notebook将持续维护内存中的内核状态,如代码求值期间定义的变量,直到Notebook被终止或重新启动。读者与Notebook进行交互的基本单元是一个单元格,即页面上的一个编辑框,读者可以在其中键入代码并让内核对其进行求值(通过在菜单项中选择或按Shift+Enter键)。读者可以将多个单元格添加到Notebook中,新单元格会包含在先前单元格中创建的变量。在代码执行后,单元格最后一行返回的值将打印在单元格下方,即使返回的是绘图也能如此。将源代码、执行结果和Markdown格式的文本单元格混合在一起,就可以生成美观的交互式文档。读者可以在项目网站(https://)上阅读关于Jupyter Notebooks的所有内容。

现在,读者需要从GitHub上获得代码,并在其根目录启动notebook服务器。服务器的启动方式取决于操作系统以及Jupyter的安装方式和位置。如果读者有任何问题,可以在我们的论坛上提问(https://forums./forums/deep-learning-with-pytorch)。当notebook服务器启动时,会弹出默认浏览器,显示本地的notebook文件列表。

Jupyter Notebooks是借助代码来表达和调研思路的强大工具。尽管我们认为它们很适合我们所举的案例,但它们并不适合所有情况。我们认为,本书中重要的是集中精力克服障碍并最大程度地降低认知负担,但这对每个人都是不同的。读者在体验PyTorch的时候完全可以选择自己喜欢的方式。

读者可以在我们的GitHub仓库(https://github.com/deep-learning-with-pytorch/dlwpt-code)中下载到本书中所有的代码。

Exercises

  • 启动Python来获取交互式体验:

    • 读者使用Python哪个版本?2.x还是3.x?

    • 读者会导入torch包吗?配好的PyTorch的版本号是什么?

    • 执行torch.cuda.is_available()的返回结果是什么?读者可依据使用的硬件判断它是否符合读者的期望。

  • 启动Jupyter Notebook服务器:

    • Jupyter使用的Python版本号是什么?

    • Jupyter使用的torch库的位置与读者从交互式Python中导入的torch库的位置相同吗?

Summary

  • 深度学习模型会自动地学习如何将示例中的输入和期望的输出建立联系。

  • PyTorch等深度学习库使读者可以有效地构建和训练神经网络模型。

  • PyTorch在专注于灵活性和速度的同时最大程度地降低了认知负担。它默认使用即时执行模式。

  • TorchScript是一种可以在C++中调用的预编译的延迟执行模型。

  • 自2017年初PyTorch问世以来,深度学习工具的生态系统已显着巩固完善。

  • PyTorch提供了一些实用的功能库来帮助深度学习项目开发。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多