PyTorch学习笔记系列是笔者跟随datawhale组队学习的学习成果,也包含了自学PyTorch的一些笔记和总结。
由于笔者使用Macbook作为开发机,性能较差,因此需要连接到有GPU的服务器中进行开发,因此本文主要介绍服务器中PyTorch环境的部署与远程连接方法,适用于自己电脑没有gpu,并且有服务器可用的朋友,服务器默认已通过ssh连接。
一、安装Anaconda/MinicondaAnaconda在windows环境更适合,因为其本身有GUI以及提供了像powershell这样有效的终端工具,另外的好处是Anaconda下载下来后已经包含了很多常用的包,因此建立新环境时有些包不用再单独下载。
不过在Linux服务器中,如果磁盘空间较小的话,可以使用Miniconda,其用法和Anaconda相同,相当于纯净版Anaconda。详见Anaconda与Miniconda对比
以Miniconda为例,可以在该链接中使用wget或curl等工具下载Miniconda,注意下载的python版本和系统Python3的版本对应,强烈建议下载完成后进行校验,因为如果下载有误的话后续出bug可能不会想到是下载这边出的问题。以上链接给的校验算法是SHA256,可以使用以下命令进行校验
(MacOS)shasum -a 256(Linux)sha256sum
生成的校验码与下载链接中的校验码一致后使用命令sh
安装完成后需要配置pytorch环境,可参考datawhale的pytorch安装攻略,以下命令使用torch-gpu作为虚拟环境的名字,可以自定义命名。新建环境时可以不选择python版本,安装pytorch时会自动推理适配的版本,如果有其他依赖的话建议选择相应版本。
conda create -n torch-gpu conda activate torch-gpu
在安装gpu版的pytorch之前,需要了解自己系统的驱动在什么版本,可以使用nvidia-smi -L查看显卡信息,并在NVIDIA官网下载对应显卡的最新驱动。显卡型号决定了能安装到哪个版本的驱动,驱动版本决定了最高能安装到哪个版本的cuda
驱动版本与cuda版本对应关系:
接下来在PyTorch官网找自己的系统及cuda版本对应的PyTorch,拷贝conda命令把cudatoolkit,pytorch以及其他torch包可以一并安上。(注意conda不同的虚拟环境可以有不同的cuda版本,但conda环境下的cuda版本要小于等于系统的cuda版本,否则会在一些情况下报错,因为conda安装的cudatoolkit并不是完整版的cuda)
二、使用jupyter notebook server远程访问服务器注意,安装完conda以后建议后续在终端上调用python时都用conda虚拟环境中的python,而尽量不要更改系统的python版本,尤其是不要将python命令指向python3,否则一些依赖python开发的系统调用会报错,如ufw命令。可以使用which python命令查看当前用的是哪里的python。
为了实现在本地的浏览器中写代码,在远程服务器中运行代码,还需要在服务器中配置jupyter notebook server,这一部分可以参考jupyter notebook官网。首先安装jupyter notebook
conda install jupyter notebook
然后设定一个密码(notebook5.0以上支持,5.0以下需要通过ipython设定密码,详见官网)
jupyter notebook password
这时会提示生成密码在一个jupyter_notebook_config.json的文件里,可以查看文件复制密码,注意前缀也要复制。然后使用命令生成一个jupyter notebook的配置文件
jupyter notebook --generate-config
编辑生成的配置文件,在顶部添加以下命令,密码替换为自己生成的密码,端口可自定义。
# Set options for certfile, ip, password, and toggle off # Set ip to '*' to bind on all interfaces (ips) for the public server c.NotebookApp.ip = '*' c.NotebookApp.password = u'sha1:bcd259ccf...' c.NotebookApp.open_browser = False # It is a good idea to set a known, fixed port for server access c.NotebookApp.port = 9999
接下来可以通过浏览器中输入域名或IP加冒号端口号如127.0.0.1:9999来访问远程服务器。
三、PyCharm连接服务器注意,使用某些商业云服务器如阿里云时,需要在防火墙中开放相应的端口。自己的服务器如果遇到远程访问不了时也需要查看端口是否开放。另外,如果服务器是使用类似花生壳这样的软件进行内网穿透做成的,那就需要改变花生壳配置,改为主机映射,这样可以开放所有端口,因为花生壳默认是开放一个端口通过ssh协议使用。
PyCharm连接服务器与jupyter notebook的不同点是,notebook更轻量级,用来测试深度学习的模型很方便,但是notebook文件间关联性差。Pycharm的好处是不但可以使用服务器的环境来跑当前项目,还可以把当前项目整体部署在服务器中,并且文件间关联性强,适合复杂项目开发。这里不记录pycharm的项目部署,详细可以学习pycharm->deployment的使用,只记录pycharm如何使用服务器的环境来跑本地项目。
在设置中找到project interprete,点击箭头指向的设置按钮,选择add
选择SSH interpreter,并输入自己服务器的信息,将Python路径填写进去,注意,conda的python在anaconda/envs/env_name/python里,具体可以activate env_name,然后which python来确认python的路径



