背景介绍
目前主流使用的工具有Facebook搞的pythorch
和谷歌开发的tensorflow
两种,二者在实现理念上有一定区别,pytorch
和人的思维模式与变成习惯更像,而tensorflow
则是先构建整体结构,然后整体运行,开发调试过程较为繁琐,但好处是复用部署较方便,本质是其二者分别使用动态、静态图的区别。
安装Anaconda
Anaconda是python的包管理工具,并且允许创造多个虚拟环境,用以分别安装不同的python版本及包,相当于是python环境的虚拟机。
官网下载地址在此
下载后按照推荐步骤安装即可
第二个选项是将anaconda本身的python环境等信息添加到系统变量中,不推荐是怕引发环境变量错误,所以我们需要分别手动添加安装目录anaconda
,安装目录下的\Scripts
和Library\bin
目录添加到系统变量中:
安装完成后,可在系统中搜索Anaconda,或Jupyter Notebook,可找到如下文件:
以后仅使用Jupyter Notebook和Anaconda Prompt,将其发送到桌面即可,此时打开Prompt
即可进入anaconda的虚拟环境,示例如图:
常用命令如下:
清屏 cls
列出所有环境 conda env list
列出所有库 conda list
创建环境 conda create -n 环境名 python=版本号
删除环境 conda remove -n 环境名 --all
进入环境 conda activate 环境名
退出当前环境 conda deactivate
创建环境时会自动安装需要的组件和库,下载即可,此时再列出环境可见如下所示:
安装CUDA
随着神经网络等人工智能算法和大数据技术的发展,计算量越来越大,仅靠cpu的处理已经不能满足训练需要,我们使用中多通过专门负责图像处理的显卡来加速训练过程,所以在pytorch
的安装中我们需要使用显卡加速功能——cuda,加速显卡和cpu并行计算功能的平台,该技术目前仅支持英伟达显卡。
首先在cmd命令中输入nvidia-smi
查看显卡驱动API的CUDA版本:
cuda下载网站
该显卡CUDA版本为12.2,下载的新cuda平台不应高于该版本,故下载如下版本:
安装时仅选择CUDA即可:
安装完成后可通过nvcc -V
命令查看cuda版本:
安装pytorch
pytorch的本质是三个库,torch
、torchvision
和torchaudio
,torch
最大有1G左右,另外两个只是补充的附件,所以工程中我们一般只import torch
即可。
直接到其官方网站寻找下载资源,根据需要的版本生成指令,
然后到conda prompt虚拟环境中输入该指令即可直接下载,网络情况较好可直接使用,否则可使用镜像源,或到命令中的url手动下载,再使用pip
命令手动安装。
安装完成后输入conda list
查看所有库,出现如下图说明安装成功
在环境中打开python,查看能否导入,示例如下则说明安装成功:
报错解决——fbgemm.dll
这里我重新创建了新的名为pytorch
,python版本为3.9的环境,因为之前尝试了3.12和3.11的均在导入时报错缺少fbgemm.dll" or one of its dependencies.
,在目录下是有这个文件的,用dll组件查看发现依赖缺少很多文件,不是能一个个找到再添加的了,也有说法是电脑缺少C++的运行环境,但在本机中查看是装了的,卸载重装也没用,最后想到是不是可能版本不对应,分别尝试了不同的pytroch版本和CUDA版本,最后试了环境本身的python版本降到3.9才成功,可官网明明白白写着支持3.12,具体咋回事就不明白了,暂时有的用就是好的。
连接pycharm
直接上图
如图可见在pycharm中可用pytorch,并可以使用cuda加速。
总结
pytorch安装主要分三步,
1,包管理工具Anaconda用于管理组件,创造虚拟环境;
2,安装加速平台CUDA,主要涉及显卡cuda版本和安装cuda平台版本的关系;
3,安装pytorch,要与安装CUDA对应。
其中CUDA要注意版本向下兼容,顺序分别为显卡驱动API的CUDA版本—安装cuda平台的运行API版本—pytorch版本,版本可依次递减,但后不可大于前。
而pytorch除了要与CUDA对应外,还需注意与Anaconda的python版本对应,当然一般用旧的没什么问题,可那还怎么进步呢,只追求稳定,人类现在可能还用石头火把呢。
安装环境难的就在不同组件之间的配合,版本低了高了,语言和选项等选不对造成安装出错,如果要改就很麻烦,本人在配置过程也折腾了很长时间,就因为不想按教程装老版本,又没有提前搞清楚各个组之间的对应关系,导致不必要的时间浪费在改错上,还不如从头开始了,任务真正开始之前的准备工作还是做充分。