P3 配置PyTorch深度学习环境_哔哩哔哩_bilibili
00:00,本次内容大纲
00:25 ,上次内容回顾
18:00 ,课后题目讲解,要改r字符串

24:00 ,【环境安装配置】conda,pycharm
29:18 ,gpu,gpustat
32:35 ,linux,screen后台运行

附:文中部分链接为放在贴图库网站的图片展示,因近期贴图库网站被监管,链接暂时失效。

1 Python开发环境

1.1 Anaconda

下载安装

  1. 为了避免不同的项目开发,需要不同的python、包版本从而产生的冲突,我们常用Anaconda来进行环境管理。
  2. 【下载】官网 Anaconda | Individual Edition清华镜像,找windows或linux对应的安装包:

image.png
都下载下来:Anaconda3-2020.02-Windows-x86_64.exe,Anaconda3-2020.02-Linux-x86_64.sh

  1. 【windows版安装】请使用管理员权限,其他设置随意没有太大影响。
  2. 【linux版安装】Anaconda3-2020.02-Linux-x86_64.sh
    1. bash Anaconda3-2020.02-Linux-x86_64.sh
    注意linux初次安装后,需要更新环境变量才能加载出anaconda(退出重新进入命令行有时候也行):
    1. source .bashrc

使用简介

  1. 参考资料:初学 Python 者自学 Anaconda 的正确姿势是什么? - 知乎
    如果计算机上已经安装了 Python,安装Anaconda也不会对你有任何影响。实际上,脚本和程序使用的默认 Python 是 Anaconda 附带的 Python,所以安装完Anaconda已经自带安装好了Python,不需要你再安装Python了。
  2. anaconda可以建立很多个虚拟环境,可以把每个虚拟环境理解成操作系统原始环境的继承,有共同的全局变量等配置,但是每个环境有自己的python版本(anaconda中一切皆包,py也可以理解成一个包)、包版本。
    1. 使用”conda info -e”可以查看目前系统中已有的虚拟环境:

image.png

  1. 其中base是安装后默认自带的一个虚拟环境。
    1. 使用”conda activate base”就可以进入指定的虚拟环境
  2. 然后使用conda安装包等命令功能,都是在该特定环境下运行的。进入特定环境后,在命令行前面会有环境名标识,例如上图是linux中效果。在cmder中则为:
    image.png
  3. 退出虚拟环境可以使用”conda deactivate”:
    image.png
    1. 总结,以及增删环境命令: ```shell conda env list # 查看已有哪些环境,同 conda info -e,写法不唯一

conda activate base # 进入base环境 conda deactivate # 退出当前环境

conda create -n py38 python=3.8 # 新建一个叫py38的虚拟环境,使用py3.8版本 conda env remove -n py38 # 删除py38

  1. 1. 我个人为了方便,平时最常用,最完整的配置都放在base,然后其他明确有特定配置需求,或者需要打包发布exe为了避免依赖过于冗余等问题,例如labelme的开发环境等,再额外增补环境。
  2. 1. 对于常要部署项目的,裕沛不建议大家在base安装东西,可能会对其他虚拟环境产生干扰。
  3. 5. 必须新建一个虚拟环境,或者进入base也行,后续pytorch必须在conda虚拟环境下安装。
  4. <a name="h1Q7c"></a>
  5. ## 1.2 PyCharm
  6. <a name="kjrwx"></a>
  7. ### 安装社区版或专业版
  8. 官网:[PyCharm: the Python IDE for Professional Developers by JetBrains](https://www.jetbrains.com/pycharm/)<br />使用免费的社区版能满足大部分开发需求了。
  9. 专业版主要有
  10. 1. 远程运行功能。
  11. 1. Profile性能分析工具,可以用来很好地分析代码运行速度瓶颈在哪,重点改进。
  12. 1. 使用pycharm风格的jupyter功能(不好用,不推荐)
  13. 如果对以上功能有需求,或者不闲麻烦的话,可以尝试安装专业版。<br />[使用专业版的五种方法](https://pycharm.iswbm.com/c01/c01_03.html):可以用学生账号申请,或者用自己的开源项目申请。
  14. <a name="TLwq3"></a>
  15. ### 使用指南
  16. 推荐大家通读一遍该手册:详细介绍了很多有用的pycharm技巧<br />[PyCharm 中文指南 PyCharm 中文指南(Win版) 2.0 documentation](https://pycharm.iswbm.com/)
  17. <a name="BtIRx"></a>
  18. ### 远程运行
  19. windowspycharm用户的福利,linux小白的救星
  20. 运行、调试远程服务器的项目代码,本文改编自《PyCharm中文指南》:<br />[pycharm远程同步linux以及团队协作 · 语雀](https://www.yuque.com/xlpr/doai/ctd2v5)
  21. 如果使用远程运行时,断点调试看不到变量,或加载特别慢,可以尝试**切换**下Gevent compatible的设置。<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/209178/1650355633805-ec213f43-10f2-47de-af68-2d44394950d0.png#crop=0&crop=0&crop=1&crop=1&height=258&id=u88672fee&margin=%5Bobject%20Object%5D&name=image.png&originHeight=258&originWidth=684&originalType=binary&ratio=1&rotation=0&showTitle=false&size=24516&status=done&style=none&title=&width=684)
  22. <a name="AQ0FB"></a>
  23. ## 1.3 Jupyter Notebook
  24. <a name="fD7PY"></a>
  25. ### 简介
  26. 如果把在控制台交互式写代码比作是“手机”:<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/209178/1627366551483-244add98-aaec-4358-a937-1413c420feac.png#crop=0&crop=0&crop=1&crop=1&height=282&id=u3e80a181&margin=%5Bobject%20Object%5D&name=image.png&originHeight=282&originWidth=468&originalType=binary&ratio=1&rotation=0&showTitle=false&size=39258&status=done&style=none&title=&width=468)<br />把在PyCharm等IDE上写代码比作是“电脑”,<br />那么介于“手机”和“电脑”之间,还有一个生产力工具:“平板”。<br />python中的“平板”,就是:Jupyter。
  27. ---
  28. Jupyter具备一定的IDE开发功能,可以写代码块。<br />并且也能像控制台一样,非常方便地进行交互测试,在数据清理和转换,机器学习有着广泛的应用。
  29. 又因为其可以嵌入Markdown等解释描述文本,所以很多入门教程都会做成jupyter的文件形式,提供给大家测试。<br />Jupyter Notebook的代码文件后缀为:.ipynb
  30. ---
  31. 安装Anaconda3后,就自带了 Jupyter Notebook(这里打开的工作环境默认在“用户目录”):<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/209178/1627366449748-0ac03e62-865a-4a26-b52a-aab397e36f29.png#crop=0&crop=0&crop=1&crop=1&height=255&id=u0dbfc5ec&margin=%5Bobject%20Object%5D&name=image.png&originHeight=255&originWidth=271&originalType=binary&ratio=1&rotation=0&showTitle=false&size=66781&status=done&style=none&title=&width=271)<br />也可以在命令行中打开:jupyter notebook。(命令行打开工作环境默认为当前“工作目录”)
  32. ---
  33. 补充资料:[关于Jupyter中代码运行顺序 · 语雀](https://www.yuque.com/code4101/python/kuu56e)
  34. <a name="JYMML"></a>
  35. ### 在线Jupyter/CoLab
  36. [在线的 Jupyter Notebook 云环境推荐](https://sspai.com/post/55402)
  37. 也可以直接用一些在线的Jupyter做些实验,有时候看文档也会跳到CoLab等在线jupyter。<br />这些在线平台的好处是免去我们自己配置环境的过程,可以用云计算资源。
  38. 这里个人比较熟悉和推荐的就是[CoLab](https://research.google.com/colaboratory/)(外网连不上找我),有免费的GPU算力资源提供。
  39. <a name="dJ21k"></a>
  40. ### JupyterLab
  41. 这是Jupyter官方新推出的,比jupyter notebook更好用的平台环境:<br />[Project Jupyter | Installing the Jupyter Software](https://jupyter.org/install.html)
  42. 能用JupyterLab的情况下推荐大家优先使用JupyterLab
  43. <a name="jKD1c"></a>
  44. # 2 PyTorch深度学习环境
  45. <a name="QfLbG"></a>
  46. ## 2.1 GPU
  47. 参考资料:[显卡和显卡驱动、gpucudacudnn.pdf](https://www.yuque.com/attachments/yuque/0/2022/pdf/209178/1649121525100-220672a4-8bb0-4dde-8207-f3c0bc9e4b7a.pdf?_lake_card=%7B%22src%22%3A%22https%3A%2F%2Fwww.yuque.com%2Fattachments%2Fyuque%2F0%2F2022%2Fpdf%2F209178%2F1649121525100-220672a4-8bb0-4dde-8207-f3c0bc9e4b7a.pdf%22%2C%22name%22%3A%22%E6%98%BE%E5%8D%A1%E5%92%8C%E6%98%BE%E5%8D%A1%E9%A9%B1%E5%8A%A8%E3%80%81gpu%E3%80%81cuda%E5%92%8Ccudnn.pdf%22%2C%22size%22%3A985189%2C%22type%22%3A%22application%2Fpdf%22%2C%22ext%22%3A%22pdf%22%2C%22source%22%3A%22%22%2C%22status%22%3A%22done%22%2C%22mode%22%3A%22title%22%2C%22download%22%3Atrue%2C%22taskId%22%3A%22ue9f69f4f-2c7b-4575-8cbc-74d7e940167%22%2C%22taskType%22%3A%22upload%22%2C%22id%22%3A%22u7b414f76%22%2C%22card%22%3A%22file%22%7D)
  48. <a name="Sp69C"></a>
  49. ### GPU显卡是什么东西
  50. 个人电脑请优先确认本机是否有英伟达的gpu显卡(不会查的请百度)
  51. 1. 一般小白不知道自己有没有的,那大概率就是没有,后面pytorch安装cpu版即可,不需要管nvidia-smicuda这些东西。平时做小实验用cpu足够了,以后正式的实验,数据体量、模型都特别庞大,那时候就必须要用服务器的gpu,速度可能会差百倍。
  52. 1. 科普
  53. 1. gpucpu差不多,不过cpu什么都能做,gpu只擅长做并行类的、矩阵运算。gpu并不是每台电脑一定有的,只是有些男生喜欢打游戏,都是大量的图形并行运算,就会买好的显卡,或者说gpu
  54. 1. 显卡也有很多厂商,深度学习一般都用英伟达的,不过英伟达也不是自己做的,而是分发给技嘉、华硕等一些制造商生产的。
  55. 1. 英伟达gpu的编程接口,是cuda写的,cuda是一种“运算平台”,也可以简单理解成给硬件封装的一个软件功能调用接口,有版本区别。pytorch就需要指定cuda的版本,否则python这里调用cuda可能代码版本不兼容。
  56. <a name="qqKVt"></a>
  57. ### nvidia-smi/gpustat
  58. 可以使用nvidia-smi命令确认下显卡状态,右边备注顺便介绍了下我们团队显卡的使用规范。
  59. 示例图,请把全部备注都读一遍!![image.png](https://cdn.nlark.com/yuque/0/2020/png/209178/1604024017540-9cdaf4b4-e255-4b5e-8975-51c0ce3093c8.png#crop=0&crop=0&crop=1&crop=1&height=741&id=Ytxqo&margin=%5Bobject%20Object%5D&name=image.png&originHeight=741&originWidth=1059&originalType=binary&ratio=1&rotation=0&showTitle=false&size=133953&status=done&style=none&title=&width=1059)<br />windows上命令无法使用的话,需在环境变量path中添加:C:\Program Files\NVIDIA Corporation\NVSM
  60. ---
  61. 平时查gpu使用,推荐:[gpustat · PyPI](https://pypi.org/project/gpustat/),比nvidia-smi简洁直观。<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/209178/1626262774113-10e6ed6e-5362-4b41-8fa0-1913b42320a1.png#crop=0&crop=0&crop=1&crop=1&height=189&id=u92df816f&margin=%5Bobject%20Object%5D&name=image.png&originHeight=189&originWidth=876&originalType=binary&ratio=1&rotation=0&showTitle=false&size=32302&status=done&style=none&title=&width=876)<br />实时监控要加-i参数:gpustat -i
  62. <a name="Xi9R1"></a>
  63. ### CUDA_VISIBLE_DEVICES
  64. 以后运行py等程序项目时
  65. 1. 可以指定可见的显卡编号:CUDA_VISIBLE_DEVICES=3,4,5(这句话要放在命令最前面)。此时py代码里指定的0卡,实际是外部的第3卡,
  66. 1. [示例:用第8卡执行程序](http://i1.fuimg.com/582188/a545f640ba500724.png)<br />CUDA_VISIBLE_DEVICES=8 python cnn.py
  67. ---
  68. 该命令的运作原理,本质是linux的命令语法机制。
  69. 1. 命令行开头的变量赋值,会添加到临时环境变量中
  70. 1. py里可以使用os.getenv('CUDA_VISIBLE_DEVICES')获取环境变量值
  71. 1. pytorch就是在运行前,尝试读取CUDA_VISIBLE_DEVICES,并重置可用GPU的相对编号位置
  72. <a name="5Cfkd"></a>
  73. ## 2.2 pytorch
  74. 确认显卡正常后,可以安装PyTorch
  75. 1. PyTorch官网 [Start Locally | PyTorch](https://pytorch.org/get-started/locally/),[选择对应版本](http://i2.tiimg.com/582188/175e453c5617f546.png),确认安装所需使用的命令
  76. 1. 这里cudatoolkit版本不太对应,似乎也没关系的
  77. 1. 代码:conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
  78. 2. 下载太慢的话
  79. 1. 可以先配置清华源:[anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站](https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/)。
  80. 1. 但清华源有时候也不稳定,在有相应配置下,推荐优先试用proxychains,翻墙下载:<br />proxychains conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
  81. 3. 最后可以确认下安装是否成功:
  82. ```python
  83. import torch
  84. print(torch.cuda.is_available()) # 返回True则表示安装成功可以正常调用GPU

后记,初步实验,好像用:pip install torch torchvision安装也是可以的,大家可以试试,都没出错的话以后推荐这个安装方式。

3 linux服务器

3.1 命令行/环境变量/工作目录

使用linux,就好比在windows使用命令行。

经常看到的这些名词:命令行、环境变量、工作目录、相对路径、绝对路径、命令参数,都是很基础的概念,
如果有同学对这些概念还不是很清楚,建议看下这篇扩展资料:cmd介绍_代号4101的专栏-CSDN博客

在windows命令行使用比较多的,推荐一个软件cmder · 语雀
其在windows仿制了linux的一些常用基本命令,以及内置了git。

3.2 MobaXterm

为了在windows连接使用linux服务器的资源,需要一个工具软件:
MobaXterm free Xserver and tabbed SSH client for Windows


找我或团队相关负责人,开通账号,会给到服务器ip地址(+端口,默认是22),你的账号名和初始密码,建立对应的session:
image.png
首次连接,要输入密码。输完密码,mobaxterm会提示是否要自动保存,建议自动保存,每次登陆比较便捷。


由于目前服务器在局域网中,公网访问不到,推荐“向日葵”软件,可以家里的电脑远程控制学校的电脑,再通过MobaXterm连服务器。。。(公网也有穿刺,在家需要用服务器的也可以找我配置穿刺的host和port)

3.3 命令基础

linux速查备忘手册

linux常用的功能命令,参考:linux速查备忘手册 · 语雀

在服务器给新人添加账户的流程

有些研究生可能会参与服务器的管理,给人创建账号,参考操作方式如下:

  1. 新建用户:useradd -d /home/ckz -s /bin/bash -m ckz (黄色:该用户目录,红色:用户名 -d:指定工作目录 -s 添加权限 -m:自动建立用户的登入目录(注意为小写m)-m不需要参数 )
  2. 设置密码:passwd ckz —> 123456 (建议使用密码生成器-生成随机密码
  3. [可选]sudo权限:usermod -aG sudo ckz
    1. 注意ckz使用sudo命令时,要输入自己(ckz)的账号密码确认
  4. 删除用户:userdel -r ckz

3.4 补充重要技巧

ipdb/断点调试

如果没有使用PyCharm配置远程运行python,
此时在linux调试、打断点,可以使用该工具:ipdb · PyPI

screen/tmux

挂载后台运行:screen · 语雀,防止断网、方便挂机,方便挂多个实验。
类似的工具还有tmux,大家只要会用一种就行。

vim

由于我们平时运行环境主要都在服务器上,就算有pycharm远程,也避免不了需要直接在服务器编辑文件内容的时候。
在服务器一般用vim编辑文件,非linux骨灰级用户,只需要掌握核心的一些vim操作功能即可:
Learn X in Y Minutes: Scenic Programming Language Tours

致谢

颜裕沛指导了anaconda、pytorch基本安装过程,显卡使用规范,linux创建账号。
裕沛也写过一套基础的入门教程大纲,有兴趣的可以参考:
团队入门知识体系(待完善逻辑关系) · 语雀

吴岳峰推荐的《Python中文指南》。
翁康明完善的pycharm远程运行详细配置文档。
翁远钰推荐的《Linux速查备忘手册》。