上一章我们简要谈了PyTorch到底是什么?这一章我们将简要谈谈PyTorch的安装指南。
关于本系列文章的相关声明
创作声明
本系列的内容创作分为如下三个部分:
-
个人阅读文档之后的理解
-
对原文档的部分翻译
-
无关紧要部分的AI辅助创作
-
部分相关信息的引用及二次创作
本系列的图片来自于:
-
PPT图形制作
-
幕布思维导图工具
-
AI绘画辅助创作
-
网络(如侵权,请联系作者删除)
在此向人类艺术家与一切内容创作者,AI科学家与工程师,程序员团体致以最崇高的敬意。
费曼学习法声明
费曼学习法(Feynman Technique)是一种通过将所学知识用简单明了的语言解释给别人听来加深自己的理解和记忆的学习方法。这种方法最初由物理学家理查德·费曼(Richard Feynman)提出。
费曼学习法的基本思想是:将所学知识用自己的语言表达出来,以便理解、记忆和应用。
瞳君通过边学边创作的方式,将所学知识用简单明了的语言解释给大家,以加深自己的理解和记忆。由于个人理解的局限性,创作内容可能存在错误,欢迎各位专家批评指正。
实验&创作就是失败,失败就是学习,学习就是进步。
原创声明
本系列下的文章引用皆包含出处,未包含出处的皆为瞳君原创@搞知识的觉之瞳,遵循相应平台的相关协议进行分发。如需转载,请根据相关平台的内容规定进行转载。
动动手指点击关注,这是免费的,而且你也可以随时改变主意,享受你的阅读吧!
It's free and you can always change your mind, enjoy your reading!
首先,我们需要缕一缕PyTorch的依赖情况:
声明:其实这样的定义并不算很严谨,因为该模块拥有自己的c++前端,归根到底,在没有进行源码分析之前,瞳君认为绿色部分的编程语言应该是该模块的一个前端,而该模块作为后端。相当于PyTorch在后面都帮你把事情做好了,然后呈现的工作交给了编程语言
就像分组讨论,课堂上你们小组讨论的人肯定不止一个,但是站起来发言的人一定只有一个。这就是后端和前端的区别了,后端是那些讨论的人,他们负责讨论并总结出重要信息,前端是站起来发言的那一个,负责把信息呈现出来。
如图,PyTorch依赖于Python,C++,Java,同时由于PyTorch似乎使用了C进行加速(存疑,待源码解析验证),并且其GPU搭建依赖于底层的显卡硬件,因此同时又受到底层操作系统平台与显卡体系的影响。换而言之,底层操作系统平台与显卡体系的不同会影响到该模块的安装情况。同时包管理软件的不同也会影响到该模块的安装。
目前PyTorch对于平台,显卡体系,编程语言的支持情况如下:
目标 | 支持情况 |
---|---|
操作系统平台 | Linux,Mac,Windows |
运算体系 | CUDA,ROCm,CPU |
编程语言 | Python,C++,Java |
构建形式(对于Python) | Conda,Pip |
构建形式(对于C与Java) | LibTorch,Source(从源代码构建) |
关于LibTorch,Pip,CUDA,ROCm与Conda
LibTorch
LibTorch是PyTorch的C++前端,它是一个用于C++编程的机器学习库。PyTorch是一个流行的深度学习框架,LibTorch提供了一个在C++中构建和运行PyTorch模型的方法。
LibTorch可以作为一个独立的库使用,也可以与其他C++库和框架集成。它提供了一个高效的C++接口,使得在C++中使用PyTorch变得更加容易。使用LibTorch,你可以在C++中加载和运行PyTorch模型,以及进行前向推理和反向梯度计算等操作。
LibTorch支持多种硬件架构和操作系统,包括CPU、GPU、Linux、Windows和macOS等。它还提供了一些工具和API,如Tensor API、Autograd API和Dataloader API等,以帮助C++开发人员更好地构建和训练深度学习模型。
说白了,这货是C++版PyTorch库。
Pip
Pip是Python语言的一个包管理工具,用于安装、管理和卸载Python软件包。它可以从Python Package Index(PyPI)等不同来源获取Python软件包,并自动解决依赖关系。
Pip是Python标准库之外的一个第三方工具,可以通过命令行界面使用。使用Pip,你可以轻松地安装、更新和卸载Python软件包,也可以查看已安装的软件包列表、版本和依赖关系等信息。
Pip支持各种操作系统,包括Windows、Linux和macOS等。它是Python社区中最流行的包管理工具之一,被广泛应用于Python开发和数据科学领域。
说白了,还记得我们之前举的管家和采购商的例子吗?这货是采购商的一种,它采购的范围仅限于Python模块,换句话来讲,如果你的管家想使用C语言编写出来的工具箱,用这位管家去采购是不一定可行的(这句话并不严谨,仅供理解)
Conda
Conda是一个流行的开源软件包管理系统和环境管理系统,用于在多种操作系统上安装、管理和升级软件包。它是Anaconda发行版的核心组件之一,也可以独立使用。
Conda可以用于安装和管理Python包、R软件包和其他各种软件包。它可以在不同环境之间切换,以便在同一系统上运行不同版本的软件包。这种能力使得Conda成为一个流行的数据科学工具,因为它可以帮助数据科学家在不同项目和环境下管理和使用不同的软件包,而不会发生版本冲突或其他问题。
Conda还提供了一些其他有用的功能,如自动解决软件包依赖关系、创建和共享环境、安装和管理虚拟环境、备份和恢复环境等。这些功能可以帮助用户更好地管理和维护他们的软件包和环境。
说白了,还记得我们之前举的管家和采购商的例子吗?这货就是采购商的一种,他采购的范围比楼上那位大的多,楼上那位只能采购python模块,他能采购的似乎并不止。
CUDA
CUDA是英伟达公司开发的一个并行计算平台和编程模型,用于在NVIDIA GPU上进行高性能计算和深度学习训练。CUDA使得程序员可以通过使用C语言、C++或Python等编程语言来利用GPU进行并行计算,以加速计算任务的处理速度。
CUDA平台包括一个CUDA编译器、CUDA运行时库和一个CUDA工具包。使用CUDA编程模型,程序员可以将计算任务划分为多个线程,同时利用GPU的并行性来加速计算,从而获得更快的计算速度。
CUDA广泛应用于科学计算、图像处理、计算机视觉、自然语言处理、深度学习等领域。它被视为一个领先的高性能计算和深度学习平台,因为它可以通过利用GPU的高并行性来加速大规模计算任务的处理。
同样还是以管家和采购商的例子来讲,这次采购商采购给管家的并不是工具箱,而是一位代理商,你跟管家下发的命令,管家分类之后将代理商专精的命令交给代理商做,代理商做完之后再把结果返回给管家,管家把结果返回给你。在这里:管家是PyTorch,代理商是CUDA,如果使用了依赖于CUDA的方法构建了PyTorch,那么在遇到需要显卡加速计算的情况时,如果指定了显卡加速计算,管家(Python with PyTorch)就会把任务丢给代理商(CUDA)进行计算,计算完之后管家会收到任务完成的结果,并进一步进行处理。
这货是英伟达的代理商,电脑是英伟达显卡的情况下才能大展身手
ROCm
ROCm是AMD公司开发的一个并行计算平台和编程模型,用于在AMD GPU上进行高性能计算和深度学习训练。ROCm提供了一种开放的、可移植的编程模型,使得程序员可以在多种AMD GPU架构上进行高效的并行计算。
ROCm平台包括一个ROCm编译器、ROCm运行时库和一个ROCm工具包。使用ROCm编程模型,程序员可以将计算任务划分为多个线程,同时利用GPU的并行性来加速计算,从而获得更快的计算速度。
ROCm广泛应用于科学计算、图像处理、计算机视觉、自然语言处理、深度学习等领域。它被视为一个领先的高性能计算和深度学习平台,因为它可以通过利用AMD GPU的高性能和灵活性来加速大规模计算任务的处理。
说白了,跟上面那位的地位是一样的,他也是代理商,只不过是AMD的代理商,电脑是AMD显卡且必须携带Linux系统的情况下才能大展身手
其他的专业术语就不用提了吧~
Linux是什么?。。。。。。好吧,最后提一嘴(AI时代建议简单问题问GPT去)
Linux
Linux是一种自由和开放源代码的操作系统,它以GPL(通用公共许可证)作为许可证发布。它是一个多用户、多任务、支持多种处理器架构的操作系统,可以运行在各种设备上,包括个人电脑、服务器、移动设备等。
Linux最初是由芬兰学生Linus Torvalds于1991年开发的,它是基于Unix操作系统的设计理念和思想,但是与Unix不同的是,Linux是一个自由和开放源代码的操作系统,任何人都可以查看、修改和分发它的源代码。
Linux有许多不同的发行版,如Ubuntu、Debian、Fedora、Red Hat等,每个发行版都有自己的特点和优势。Linux发行版通常包含一个Linux内核、一组GNU工具和其他应用程序,如文本编辑器、图形界面、网络应用程序等。
Linux具有许多特点,包括强大的网络支持、高度可定制性、良好的安全性、良好的兼容性等。它也被广泛应用于各种领域,如服务器、超级计算机、网络设备、移动设备、嵌入式设备、桌面计算机等。
说白了,跟windows一个地位的东西,但是可以不用图形化界面。所谓没有图形化界面,你可以点击你电脑左下角的搜索找一找cmd,打开这个程序后,全屏这个程序,Linux没有图形化界面就大概是这个样子的
前置准备
在安装PyTorch时,你需要有一些前置准备:
-
检查操作系统的情况
-
检查显卡配置情况
-
安装一类Torch前端
-
安装其他官网说明的相关配置
检查操作系统的情况
首先最简单也是最重要的就是要确定你的操作系统到底是什么,照道理来讲,你买电脑的时候就应该知道电脑里预装的是什么操作系统了,绝大多数都是windows,部分苹果电脑可能是MacOS
(当然也有可能是你自己的组装机这种情况可能开局是Linux,但是这种情况你就应该是个熟知电脑的大佬了,也不需要我多说什么了)
一些小方法
-
Windows操作系统:在桌面上,右键单击“此电脑”或“我的电脑”图标,然后选择“属性”选项。在打开的窗口中,你可以看到你的Windows版本和其他详细信息。
-
macOS操作系统:在菜单栏上,点击“”图标,然后选择“关于本机”选项。在打开的窗口中,你可以看到你的macOS版本和其他详细信息。
-
Linux操作系统:打开终端,输入“lsb_release -a”命令并按回车键。在命令输出中,你可以看到你的Linux版本和其他详细信息。
-
Android操作系统:在应用程序菜单中,找到“设置”应用程序,然后选择“关于手机”或“关于设备”选项。在打开的窗口中,你可以看到你的Android版本和其他详细信息。
-
iOS操作系统:在主屏幕上,打开“设置”应用程序,然后选择“通用”选项。在打开的窗口中,你可以看到你的iOS版本和其他详细信息。
同时你也要确定一下官网上显示的配置支持情况,如果要是你的电脑系统配置实在是太低了,以至于运行不了这个模块,那就没办法装了
以下配置内容引用自Start Locally | PyTorch
对于Windows:
支持windows7以上的,最好是windows10 对于Windows Server而言,支持2008 R2及更高的情况
PyTorch is supported on the following Windows distributions:
-
Windows 7 and greater; Windows 10 or greater recommended.
-
Windows Server 2008 r2 and greater
对于Linux:
支持使用 glibc>=2.17版本以上构建的Linux系统,包含了下面所述的发行版本,这里不一一翻译了
PyTorch is supported on Linux distributions that use glibc >= v2.17, which include the following:
-
Arch Linux, minimum version 2012-07-15
-
CentOS, minimum version 7.3-1611
-
Debian, minimum version 8.0
-
Fedora, minimum version 24
-
Mint, minimum version 14
-
OpenSUSE, minimum version 42.1
-
PCLinuxOS, minimum version 2014.7
-
Slackware, minimum version 14.2
-
Ubuntu, minimum version 13.04
对于Mac:
PyTorch 在 macOS 10.15 (Catalina) 或更高版本上受支持。
PyTorch is supported on macOS 10.15 (Catalina) or above.
引用结束
检查显卡配置情况
检查完了操作系统的支持情况,你还需要检查显卡配置的相关情况,显卡在国内分为两大类,一类是AMD显卡,还有一类是英伟达显卡(英特尔显卡没有存在感),刚刚我们引用了管家,采购商,代理商的例子,目前pytorch支持的显卡体系,只有AMD和英伟达。因此你首先要做的就是确定你的电脑上安装的到底是哪一类显卡。
下面提供了两类方式用于确定电脑的显卡类型:
点击式
在Windows操作系统中,可以按照以下步骤进行:
-
右键单击桌面上空白处,选择“显示设置”或“屏幕分辨率”选项。
-
在打开的窗口中,选择“高级显示设置”或“高级显示选项”选项。
-
在高级显示设置或高级显示选项窗口中,选择“显示适配器属性”或“显卡属性”选项。
-
在显示适配器属性或显卡属性窗口中,你可以看到你的显卡类型和其他详细信息,例如制造商、型号、驱动程序版本等。
在macOS操作系统中,你可以按照以下步骤进行:
-
选择“关于本机”选项。
-
在打开的窗口中,选择“系统报告”选项。
-
在系统报告窗口中,选择“图形/显示”选项。
-
在图形/显示选项下,你可以看到你的显卡类型和其他详细信息,例如制造商、型号、驱动程序版本等。
在Linux操作系统中,你可以打开终端,输入“lspci | grep VGA”命令并按回车键。在命令输出中,你可以看到你的显卡类型和其他详细信息,例如制造商、型号、驱动程序版本等。
命令式
通过使用"nvidia-smi"命令来查看NVIDIA显卡的详细信息,例如显存使用情况、功耗、温度等。
AMD显卡目前找不到相关的命令可以判断
(但其实没有英伟达显卡,基本上深度学习可以判半个死刑了,一般通用的都是英伟达显卡)
安装一类PyTorch前端
接下来你要做的就是安装一类PyTorch前端,这里我们回顾一下刚刚我在图片底下写的碎碎念:
声明:其实这样的定义并不算很严谨,因为该模块拥有自己的c++前端,归根到底,在没有进行源码分析之前,瞳君认为绿色部分的编程语言应该是该模块的一个前端,而该模块作为后端。相当于PyTorch在后面都帮你把事情做好了,然后呈现的工作交给了编程语言
这里我们要再套一层,同样以管家和采购商的例子来说,管家现在找采购商要求说采购一套能够用于深度学习的工具箱,采购商说没问题,但是采购来的不是个工具箱,而是个代理商A(pytorch),这个代理商说要我做事情没问题,但是呢,关于深度学习加速的部分,我需要委托给另外一个代理商B(CUDA or ROCm)来做,于是乎,你的命令下发给管家(python),管家将涉及到pytorch的相关操作交给了代理商A,代理商A将涉及到深度学习加速运算的部分交给了代理商B,于是乎,代理商B把活做完,然后回传给A, A回传给管家,管家回传给你,就完成了深度学习的一个基本流程。
(但其实这里还是不够严谨,因为代理商B在收到任务的时候也不是自己做的,他实际上是转交给了更底层的家伙来干活,所以说这里的部分应该还要再嵌套一层,但是这里就不详细展开了,等到了之后解析英伟达的部分再说)
好了,回到前端的话题上来,所以这个地方就有一个前后端的关系,我们从管家的视角来看,代理商a是管家角度的前端,因为管家和代理商a是直接交流的,他并不管代理商a在接到任务之后在后面干了些什么。而代理商b于管家而言则是后端,因为管家不知道代理商b的存在,他也不知道代理商b干了些什么。
然后现在我们从用户的视角来看,对于用户来说管家就是前端,因为用户直接与管家进行交流,而不知道背后有代理商,而从用户的视角来看代理商a和b均是后端,因为用户不知道二者的存在,也不知道他俩到底干了些什么。
那这么一说,其实编程语言归根到底来讲就是一个前端,所以我们这边写的并不是要找一个编程语言,而是去找一类前端的原因就是这样。 话说回来,PyTorch的前端有C++,Python,Java三类,因此我们在安装时,电脑上首先得有这三类软件的其中一个。至于这仨怎么安装嘛,无非大体上就遵循以下这几个流程:
-
官网或者二次分发商处(Anaconda,Miniconda,Oracle Java)下载安装包
-
根据安装包上的指示进行安装到指定的目录或者是直接解压到某个目录(对于c来讲可能是直接解压)
-
完成安装之后将执行程序的路径放到一个叫环境变量的位置里(环境变量可以理解成昵称,通过叫昵称可以直接摇人,不需要叫全名(具体的路径,长长的一串))(如果没有这个过程,说明安装包自己帮你干了,anaconda就是这样)
-
完成配置,电脑重启
安装其他官网说明的相关配置
由于内容撰写具有时效性,因此看到本文的你,不知道是已经猴年马月还是什么时候了,这种情况建议直接去官网一看查看一下,还有没有什么更新的配置。
传送门(不排除10年后失效可能性):