![dad10652d535bc7f5b698d6a3ab16b60.png](https://i-blog.csdnimg.cn/blog_migrate/0c9f87fee9e4772014912f147d8598d9.jpeg)
笔者公众号:技术杂学铺
笔者网站:http://mwhitelab.com
本文将从购买GPU服务器、远程连接服务器、深度学习环境安装、用jupyter操控服务器等方面逐一讲解购买及使用GPU服务器的步骤。
免费在线jupyter可见在线jupyter平台推荐。
1. 服务器配置与购买
云服务器供应商有很多,本文以阿里云为例,在百度云、腾讯云、谷歌云等其他供应商购买服务器的步骤大同小异。
进入阿里云官网。
![3308177656a1f730e41219fb1016d793.png](https://i-blog.csdnimg.cn/blog_migrate/6294d867994c870610d9c3e9763f7cb2.jpeg)
登录(支付宝、淘宝账户均可登录)并先预充一百元。
![4d37c9787ed6306fdc4745c61653ff78.png](https://i-blog.csdnimg.cn/blog_migrate/80c8d5e0888c583df4e3eda54c33562e.jpeg)
在导航栏中选择“产品”-“云计算基础”-“GPU云服务器”
![198506721c0f9334fd1ecf8974395563.png](https://i-blog.csdnimg.cn/blog_migrate/9968bbdb53c7390adfc9b7a89b4c3127.jpeg)
在云服务器界面选择“GN5(P100)购买”
![ba4531dea128fbd755176b518bd4aaef.png](https://i-blog.csdnimg.cn/blog_migrate/0faa8308f4339925558c1a9782cfe484.jpeg)
接下来,我们便跳转到了阿里云服务器购买界面。默认情况下,系统为我们推荐“包年包月”的计费方式。每月上千的GPU租赁费用对大部分用户来说过于昂贵,而且我们只是偶尔会使用GPU计算服务,以月为单位租赁服务器有点浪费。
![c02fc8a4dc12b63456a84f238ce12d06.png](https://i-blog.csdnimg.cn/blog_migrate/7ac0a96b4bcac7476a6785bfe752183f.jpeg)
除了包年包月,我们还可以选择“按量付费”或者“抢占式实例”。按量付费是以小时为单位进行计费,计算完毕后需手动关闭服务器以停止计费。“抢占式实例”也是按小时计费,价格随市场波动,出价高的一批用户获得GPU服务器的使用权。
“抢占式实例”价格相对便宜,但当市场价格高于我们的出价时,我们的实例将会被释放,服务器将会被他人使用。不过使用“自动出价”可以让我们避免上述风险。
按量付费实例停机后不收费,抢占式网络虽然便宜,但必须释放实例实例后才会停止收费。
如果只是想体验一下,计费方式可选择“抢占式实例”。地域选择“华北5(呼和浩特)”会有优惠,价格大约在五到七块每小时(价格会随时间有些许波动)。读者若想以后长期间断使用服务器,一定要选“按量付费”,根据配置不同,价格在八到十三块每小时。(实际费用以秒为单位进行计算)
![a1f66587e39df09f7269c23fcc965af6.png](https://i-blog.csdnimg.cn/blog_migrate/47840874d99b145457b77d6306892bcb.jpeg)
服务器规格选择“ecs.gn5-c8g1.2xlarge”,该规格有8个vCPU,60G内存,一块P100 GPU,440G存储空间(暂时存储),Intel Xeon E5-2682v4 CPU。配置足以满足绝大部分任务的需求了。
![48a6263e59a35f4c35389f080de7231b.png](https://i-blog.csdnimg.cn/blog_migrate/af03bf00207eac647aca6d6b0958ce6b.jpeg)
接着,设置镜像。
镜像推荐一:如下图进行配置。CentOS/Ubuntu16.04系统都支持“自动安装GPU驱动”(新手推荐使用Ubuntu16.04,遇到的坑会少一点),可免去之后安装GPU驱动的步骤。(若是使用Tensorflow,仍需要手动安装cuDNN)
Tensorflow-GPU的底层支持一直在变。当前(2019年3月20号)Tensorflow-gpu版本要求CUDA版本要9.0(目前不支持9.1!)且Driver要384.x或更高版本。读者若是几年后看到该文章,请先查询tensorflow-gpu的GPU驱动版本要求。安装驱动版本不符无法运行tensorflow-gpu。
![63fd64e32445020d5b8145ddb0ffb78c.png](https://i-blog.csdnimg.cn/blog_migrate/ad5a943954902aa83fc88da73e193794.jpeg)
镜像推荐二:读者也可以选择使用“镜像市场”中的镜像。如下图中的镜像,已经预装了GPU驱动和tensorflow等框架。纯小白建议选择这个方法,此处就免去了文本第三步环境安装的过程。
![642b752874f849cc71c4acd9f63acb56.png](https://i-blog.csdnimg.cn/blog_migrate/f1f063b9e67890d51a54335712947946.jpeg)
存储选择默认设置。本地存储440G空间会随着我们的实例释放后消除。一般我们的代码都放在系统盘,40G的系统盘满足大部分AI比赛或项目的存储需求。若有额外需求,读者可适当增加数据盘。这里保持默认不更改。
![54210dff34aca344916071b1f82492be.png](https://i-blog.csdnimg.cn/blog_migrate/0588ac9032ab1ddd41279aa0f44977be.jpeg)
完成上述配置后,点击“下一步:网络和安全组”。该界面,我们不做任何更改。
值得注意的是“公网带宽”中的带宽大小是指流量留流出的带宽大小,计费0.8元/G也是计算流量留出的费用。我们使用服务器下载文件属于流量流入,与该“公网带宽”选择无关,且服务器下载文件免费。
![0fd4629bd3cc1f65f066b5b15158e9cd.png](https://i-blog.csdnimg.cn/blog_migrate/98c7fbd9c58236c497325b2137897fb3.jpeg)
安全组默认也保持不变。确保22端口打开即可,我们之后会通过ssh的方式连接服务器。
![6ae9ddb20bac44bcc38543b5dfb51ecf.png](https://i-blog.csdnimg.cn/blog_migrate/922708d42a6a18f2ce18548bcebf8e2f.jpeg)
点击“下一步:系统配置”。了解密钥的读者可在“登录凭证”选择“密钥对”的方式。不了解密钥的读者可选“自定义密码”(记住该密码,当我们登录服务器时,登录名为root,密码为此处设置的密码)。
![be3d520bf885305d3702b23d10349b3c.png](https://i-blog.csdnimg.cn/blog_migrate/6a1e6a0b293bba5f45d643777cdcd88d.jpeg)
完成后点击“确认订单”。确认界面如下:
![a85a5ef5377658b1bf808ecfb4c8afa6.png](https://i-blog.csdnimg.cn/blog_migrate/cd20065fa5cfe21e46a48c6502f97e42.jpeg)
“保存为启动模板”可选可不选。保存模板后,当我们再次购买类似服务器时,可以使用模板中的服务器配置。(按量计费时,我们想停止计费,只需关停服务器,不用删除服务器。以后想用服务器,再次启动即可,无需再次配置并购买服务器。)
另外,我们也可以设置自动释放的时间(谨慎操作,到达释放时间后,实例会被释放,数据及IP不会被保留)若读者对自己的使用时间没有把握,不建议设置“使用时限”。
![7fd35ae687c8191859ce532ebe0f3d2f.png](https://i-blog.csdnimg.cn/blog_migrate/8985d4d4813d7d24ec02592682d8454d.jpeg)
点击同意《云服务器 ECS 服务条款》服务协议。
![fbe31fcbd463fcceeb352e560aeaa164.png](https://i-blog.csdnimg.cn/blog_migrate/68d3e974ac4cbaf962e9183cd281adc8.jpeg)
之后我们即可点击右下角的“创建实例”了。创建实例之后即开始计费,直到我们手动停止服务为止。
![3f5430eb6606733d13457bf92d8d3ebe.png](https://i-blog.csdnimg.cn/blog_migrate/5ebde002f8a15297d4013d04dee4714b.jpeg)
另外,当不用服务器的时候,一定记得要停止服务!
若使用按量计费,选择“停止”即可(下图绿色框),想用时选择“启动”即可。若使用抢占式实例,则需要选择“释放设置”了(下图红色框),因为抢占式实例停止服务器后仍旧计费。下次使用时需要重新配置服务器,包括各类环境。
![6592229c730b7a39fa5200bf4582adb3.png](https://i-blog.csdnimg.cn/blog_migrate/6f22f4ea11f6917016f57115f75291c2.jpeg)
2. 服务器连接
在控制台中我们可以看到我们正在运行的云服务器。记住我们服务器的公网IP地址。
![e89b75d0b362f285fca0dc0bd844f515.png](https://i-blog.csdnimg.cn/blog_migrate/d88724e268f87fc2f5b960a9770cb83f.jpeg)
这里笔者使用Xshell来连接远程服务器。打开Xshell,在菜单栏里选择“文件”-“新建”
![53b82e60f681571d749f8370687c4fe8.png](https://i-blog.csdnimg.cn/blog_migrate/5f73a4d61e8ba199a161af346656a616.jpeg)
名称随意设置,“主机”为你购买的服务器的公网IP地址,协议SSH,端口22。
![29ee43b74c58f1d78c756677b955ff72.png](https://i-blog.csdnimg.cn/blog_migrate/1adecd68ebd63bb9a047c361969f16d0.jpeg)
完成上述内容后,点击确定即可。创建成功后,在界面左侧双击我们刚刚创建的“阿里云服务器”以连接服务器。
![53ec7402a68dc96e4f671714a6a27c33.png](https://i-blog.csdnimg.cn/blog_migrate/b21be9bec22a7089f11ee7ede5856200.jpeg)
第一次登陆会有一个SSH安全警告,选择“接收并保存”即可。
之后便是用户登录,默认的用户名为root
![aa1a080776282f1faef5c173b29ce8ac.png](https://i-blog.csdnimg.cn/blog_migrate/5077a264c52a1f4af91cbd3f9317d87f.jpeg)
登录方式则与之前“登录凭证”相对应。密码登录或者密钥登录。
![8f6c598f1b09fe9e485118b58fc0bedc.png](https://i-blog.csdnimg.cn/blog_migrate/ee929b662f32f3a6f3c8f46141d5ea07.jpeg)
接着,我们便成功以ssh的方式远程连接了阿里云服务器。
![a0182f854788f222f53807d7237640a0.png](https://i-blog.csdnimg.cn/blog_migrate/c9cae5e088af53d4f80e0e8071c11361.jpeg)
3. 环境安装
刚购买的云服务器只有最简单的一些配置。我们需要在此基础上安装一些深度学习需要的环境。
3.1 安装GPU驱动、CUDA以及cuDNN
安装GPU驱动、CUDA、cuDNN全是坑,不同环境下出现的问题千奇百怪,此处难以一一举出。读者若安装时出现问题请直接百度/google,网上必有解决方法(虽然可能也不靠谱)。
Ubuntu出现的坑较少,此处以Ubuntu为例。
3.1.1 安装GPU驱动
在第一步配置服务器时若选择“自动安装GPU驱动”则可跳过这一步。
在英伟达驱动下载页面设置自己的配置,之后点击“SEARCH”
![b4434c46ea36e03b8e971241161f4122.png](https://i-blog.csdnimg.cn/blog_migrate/7c634d1a12f55a746d9f2d49f8fafe15.jpeg)
接着进入信息确认界面,点击“DOWNLOAD”
![a6bf28b2953faff03ac64e0e064762dd.png](https://i-blog.csdnimg.cn/blog_migrate/80fd52d7aaf7925a628146a386f82c49.jpeg)
再之后,在如下界面,右键“AGREE&DOWNLOAD”,复制链接地址。
![e91e7e8641e2421435865d4344598cba.png](https://i-blog.csdnimg.cn/blog_migrate/172026908320b1ac69fd33439df524a9.jpeg)
返回服务器命令行,输入wget 地址
本案例是 wget http://us.download.nvidia.com/tesla/384.183/NVIDIA-Linux-x86_64-384.183.run
![dce0e07296d7aed765e4f75fe11adb3b.png](https://i-blog.csdnimg.cn/blog_migrate/44bce894064a6549a7a7da194d1923f7.jpeg)
下载完后,执行如下代码以安装驱动
sudo chmod a+x NVIDIA-Linux-x86_64-384.183.run
sudo ./NVIDIA-Linux-x86_64-384.183.run -no-x-check -no-nouveau-check -no-opengl-files
安装过程中会有窗口让你选择yes或者no,问你是否continue的时候选择yes(笔者没有遇到这个选择),其他时候选择no。
若驱动安装成功,输入nvidia-smi即可查看GPU当前状态。
![1945e9fba69c5baf6bcfe953fcb1421a.png](https://i-blog.csdnimg.cn/blog_migrate/7ae43ef97aac2c3aeae2a8836f1906ec.jpeg)
3.1.2 安装CUDA以及cuDNN
这里给出tensorflow官网上推荐的CUDA以及cuDNN安装代码
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
sudo apt install ./cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
sudo apt update
sudo apt install cuda9.0 cuda-cublas-9-0 cuda-cufft-9-0 cuda-curand-9-0 cuda-cusolver-9-0 cuda-cusparse-9-0 libcudnn7=7.2.1.38-1+cuda9.0 libnccl2=2.2.13-1+cuda9.0 cuda-command-line-tools-9-0
3.1.3 手动安装cuDNN(使用pytorch可跳过)
若3.1.2中成功安装CUDA但未成功安装cuDNN,此时则需要我们进行手动安装cuDNN了。这个步骤略微繁琐,需要用户前往
https://developer.nvidia.com/rdp/cudnn-download
注册账户后才会有权限下载文件,直接以wget的方式下载会被服务器拒绝。
我们只能用本地电脑访问上述网站,注册账户,然后选择我们需要的cuDNN版本,先下载到本地。(选择for CUDA 9.0版的,下载cuDNN Library for Linux)
![3512755c52d0108cf4df248525fb0053.png](https://i-blog.csdnimg.cn/blog_migrate/a6115c40f8f2c2b3d6c7310991f89b98.jpeg)
接下来,我们需要将本地下好的文件传到远程的服务器上。但在这之前,我们需要先要将服务器允许传输文件的端口打开。
在阿里云服务器管理界面,找到我们的服务器,选择“管理”
![8e6bc4ecf668df84bb49d8dab3222e45.png](https://i-blog.csdnimg.cn/blog_migrate/12a6294e8d6364a5217f0d341510ae03.jpeg)
在管理界面选择“本实例安全组”
![b80f16075c3979eb1125ba10c6e7334f.png](https://i-blog.csdnimg.cn/blog_migrate/6f8893e04ab253f6e5256d812913e2ab.jpeg)
打开安全组界面后,在横向菜单栏中选择“安全组列表”,之后选择“配置规则”
![e05f6ad53170ce9f9e3b18a9fbad88ed.png](https://i-blog.csdnimg.cn/blog_migrate/ef776e2bb8ef016426dc5e99e6e54b6f.jpeg)
选择“快速创建规则”
![f9f60ca3ebb9d704ee1a12ada25d13f1.png](https://i-blog.csdnimg.cn/blog_migrate/1411f7aad366b70d31fb46f4c19e36b0.jpeg)
配置如下图,选择telnet(23)端口,授权对象填“0.0.0.0/0”。完成后,我们就可以从本地向服务器传输文件了。
![ab006246f8d62f51118318414a853e5c.png](https://i-blog.csdnimg.cn/blog_migrate/9a9cae3b6583cd380d16f2a1920d8c37.jpeg)
我们在服务器命令行上输入apt-get install -y lrzsz,安装一个便于我们文件传输的工具。
命令行输入rz,会弹出一个窗口,找到我们之前下载的文件,选择“打开”。
![bb197af94c461b84c9d1233238291ad2.png](https://i-blog.csdnimg.cn/blog_migrate/541d541878dd92a58ba08888b618fd15.jpeg)
之后便会开始传输文件
![e880c44b10e7c79536541415cac68db4.png](https://i-blog.csdnimg.cn/blog_migrate/d8ed72e78a0b11e8123960079b734913.jpeg)
当文件传出完成后,我们先把文件重新命名为tgz格式。
mv cudnn-9.0-linux-x64-v7.5.0.56.solitairetheme8 cudnn-9.0-linux-x64-v7.5.0.56.tgz
![38566845f153d59be8f2c057210362b4.png](https://i-blog.csdnimg.cn/blog_migrate/29efe26969aaae296e94687387e7218a.jpeg)
解压该文件tar -xzvf cudnn-9.0-linux-x64-v7.5.0.56.tgz
![7380924e0693001bbc9989cadd66bc51.png](https://i-blog.csdnimg.cn/blog_migrate/74ec3d8d3aa1c587eb8b79c8cf9f2ced.jpeg)
把解压出的这几个文件分别放到cudn安装的位置。
值得注意的是,有的服务器cudn是安装在/usr/local/cuda下,笔者的服务器是安装在/usr/local/cuda-9.0下。读者应该先查看一下自己/usr/local/中cuda文件夹名是什么,再进行如下安装。
![92da971eda6f303e4d4a1b0a17138845.png](https://i-blog.csdnimg.cn/blog_migrate/2cf6d5e78d78f5d0676bec70642cb0eb.jpeg)
依次将我们解压好的文件放入cudn的安装目录对于位置。(每行指令最后的“/”一定要有!)
sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64/
最后执行如下代码即可成功安装完cudnn
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
输入cat /usr/local/cuda-9.0/include/cudnn.h | grep CUDNN_MAJOR -A 2 可检查安装是否成功(路径中cuda-9.0在某些服务器中应该为cuda)
![4fd8cdb32cdf3f8e534d1e04f80fbdd3.png](https://i-blog.csdnimg.cn/blog_migrate/1e9d08dcd0cd9afe45d05deca598104b.jpeg)
3.2 安装anaconda(可跳过)
Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。
3.2.1 下载并安装anaconda
输入wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-4.4.0-Linux-x86_64.sh以下载anaconda文件(linux64位版)
![a9eaf8fa79dbb974a7f6f42936851287.png](https://i-blog.csdnimg.cn/blog_migrate/5b78eab2c21db799118de9a23c9fe096.jpeg)
运行 bash 下载文件名.sh 来安装anaconda,这里是bash Anaconda3-4.4.0-Linux-x86_64.sh
安装过程中一直回车。遇到问yes或no的问题,除了问是否安装vscode输入no,其他都输入yes。
若遇见“bunzip2: command not found”报错,执行yum install -y bzip2之后再执行bash 下载文件名.sh -u (要加-u,-u的意思是重新安装,覆盖之前安装的内容)
3.2.2 添加anaconda环境变量
安装成功后,我们还要将anaconda添加到环境变量中。输入vim .bashrc 以用vim编辑器来编辑.bashrc文件。
![ce0b273679f218631b80a8b2ebba6c70.png](https://i-blog.csdnimg.cn/blog_migrate/2f45f4c4a3c65c00613673e2987ed5f3.jpeg)
注意,vim编辑器不是word文档!想要修改文件,我们要先按下“i”键切换到插入模式。按下i后,左下角会有“INSERT”显示,表示我们现在敲打键盘即可插入文字。
![6580a84b048cf165016b6ed4922027ee.png](https://i-blog.csdnimg.cn/blog_migrate/59965343bff3cc6edbd903576a6dee25.jpeg)
我们在文件开头输入:
#Anaconda
export PATH=/home/用户名/anaconda3/bin:$PATH
其中用户名在本案例中就是root,于是就应该输入:
#Anaconda
export PATH=/home/root/anaconda3/bin:$PATH
![fa9acbae9bbb79acd51f15e6fe22dcd8.png](https://i-blog.csdnimg.cn/blog_migrate/fb9870e31e7413135052f8ed0fd40fc6.jpeg)
按下Esc键,退出插入模式。依次按下”:”, “w”, “q”, 左下角应该显示如下图,之后“回车”,即可保存并关闭文件。
![a07a1e82109001319dc6d38bfe88c152.png](https://i-blog.csdnimg.cn/blog_migrate/8522eca748b169501ed4a4eeb267381c.jpeg)
输入source .bashrc 重新激活一下。此时输入which python即可发现当前使用的python是anaconda3中的。(/root/anaconda3/bin/python)
![319707016ab5cab71810ad28138b3f38.png](https://i-blog.csdnimg.cn/blog_migrate/0ad9958da010306cb8321fc5cc9802b7.jpeg)
若不行,则需重启服务器,再输入source .bashrc 重新激活。
3.3 修改镜像源(可跳过)
3.3.1 修改conda镜像
conda默认的镜像源在国外,下载文件速度可能比较慢。我们需要将镜像源修改为国内的,下载速度会提高很多。
输入如下命令修改conda的镜像源
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
3.3.2 修改pip镜像源:
(阿里云服务器的默认镜像都已使用阿里云的镜像,读者可跳过本步骤)
输入mkdir .pip 创建.pip文件夹(有可能mkdir: cannot create directory ‘.pip’: File exists,表示已经有该文件了。)
输入cd .pip 移动到.pip文件夹
输入vim pip.conf,创建并修改pip.conf文件
将该文件修改为如下内容(按下i进入插入模式,按下Esc退出插入模式,按下:wq并回车则保持并关闭文件):
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
3.4 anaconda环境管理(可跳过)
anaconda可进行环境管理,可创建多个环境,不同环境内可安装不同的包。默认情况下,我们在base环境中。新建环境可用:
conda create -n 环境名 python=python版本
我们新建一个名字叫tensorflow的环境,这个环境的python版本是3.6则应该为:conda create -n tensorflow python=3.6。安装过程中会问我们是否执行Proceed ([y]/n)?,我们回复y。
![409a349cbc1172e08bb09ffa2bfa1c3a.png](https://i-blog.csdnimg.cn/blog_migrate/b35299d26a59fdbdf98a8e59acf69381.jpeg)
安装完新环境后,我们使用conda activate 环境名,即可从base环境切换到新环境。
![4c5b1c6997114c34fee133a7a9216727.png](https://i-blog.csdnimg.cn/blog_migrate/dd0f2e79a523fdebabf406d5ee1f7bbe.jpeg)
可见该环境是python3.6的,我们之后安装各类python包,import各类python包都是在该环境下进行。退出该环境可以输入conda deactivate,这样,我们就回到了base环境。
3.5 安装深度学习框架
3.5.1 机器学习函数库
常用的机器学习包有numpy,pandas,matplotlib,sklearn等,其中有的包已经随anaconda一起安装好了,有的则没有(具体情况根据安装的anaconda版本而定)。尚未安装的需手动安装。
使用 pip install 包名 即可。如:pip install pandas
3.5.2 Tensorflow
使用NVIDIA显卡运行Tensorflow-gpu需要除了要装驱动以外,还需要安装cuDNN。(见3.1)
由于我们使用的是gpu版本,输入pip install tensorflow-gpu即可安装gpu版tensorflow。
![1a8e5035aee997454b2eefdc3235b25d.png](https://i-blog.csdnimg.cn/blog_migrate/22b6b8e79a6b1e7cc8865e43723c3bb2.jpeg)
安装完后,检验一下我们的tensorflow是否安装成功。
输入python,进入python执行界面。在该界面下输入import tensorflow as tf,不报错即代表安装成功。
![f2b3d23a5f67617b006091218130396a.png](https://i-blog.csdnimg.cn/blog_migrate/12bd3999c83e678211c07852542c955f.jpeg)
报FutureWarning不要紧,只要import tensorflow成功即可。
安装gpu版tensorflow出错概率极高,各类问题请参见“3.6 安装tensorflow-gpu出错的各种可能”
3.5.3 PyTorch
在PyTorch的官网上选择自己的服务器配置即可找到对应下载代码。
![88836b709b363e1b7856dad3153b111d.png](https://i-blog.csdnimg.cn/blog_migrate/8afc791ae6a86650a23f7a5fb291a6d6.jpeg)
我们输入 pip install torch 即可安装PyTorch
输入python,进入python执行界面。在该界面下输入import torch ,不报错即代表安装成功。
![7814a847a60133275e4f528dea2c09f0.png](https://i-blog.csdnimg.cn/blog_migrate/d0d2c1d786943d079202d84ae0fbbfa6.jpeg)
3.6 安装tensorflow-gpu出错的各种可能
我们之前提到过,tensorflow对环境有比较严格的要求,如python版本只可为2.7、3.3-3.6,CUDA为9等等。
![9e7ab6c2f5f6a99e3f926882a319a170.png](https://i-blog.csdnimg.cn/blog_migrate/3d8cb2fd50c463f389daa5e325c5502c.jpeg)
3.6.1 python版本检查
在命令行输入python -V(V要大写)查看python版本,若为版本不在2.7、3.3-3.6之间,请参照3.4 使用conda创建一个3.6python版本的环境,在该环境下安装并使用tensorflow。
3.6.2 驱动以及CUDA版本检查
输入nvidia-smi查看GPU状态,若报错,则要重新安装GPU驱动。见3.1.1
查看CUDA版本:cat /usr/local/cuda/version.txt (cuda目录也可能为cuda-9.0等,可输入cat /usr/local/cuda-9.0/version.txt )若没有,则参见3.1.2
查看cuDNN版本 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2(cuda目录也可能为cuda-9.0,可输入cat /usr/local/cuda-9.0/include/cudnn.h | grep CUDNN_MAJOR -A 2)若没有,则参见3.1.3
若CUDA和cuDNN的版本与tensorflow-gpu要求的版本不符,则需重新安装CUDA和cuDNN。
3.6.3 安装指定tensorflow-gpu版本
输入pip uninstall tensorflow-gpu即可卸载之前安装的tensorflow-gpu
输入 pip install tensorflow-gpu==版本号 如pip install tensorflow-gpu==1.12.0 即可安装1.12.0版本的tensorflow。
4. 用jupyter操控服务器
我们可以通过xshell的隧道方式,让我们以本地浏览jupyter的方式控制远程服务器。
4.1 配置jupyter
首先,在远程服务器上安装jupyter:pip install jupyter
接着,输入jupyter notebook –generate-config –allow-root生成配置文件。
我们输入python,进入python执行界面。输入:
from notebook.auth import passwd
passwd()
![080870ded57244cb9aff463ad5051d5a.png](https://i-blog.csdnimg.cn/blog_migrate/9a74f6605f48255f95c5cd848822e906.jpeg)
之后系统会让我们输入并验证新密码,密码选一个好记的即可。输入完成后,系统会返回给我们一个加密的字符串,复制该字符串。
按下ctrl+z返回命令行,输入vi ~/.jupyter/jupyter_notebook_config.py,以编辑该文件。
按下”i”键进入插入模式,插入如下内容
c.NotebookApp.ip='*'
c.NotebookApp.password = u'之前的那串sha1字符串'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 # 任意端口均可(只要不占用22,80等常用端口)
![fa1c716f2c7250247efb57b41fe7cee1.png](https://i-blog.csdnimg.cn/blog_migrate/04f5dbe647a83b66f41d22f644d4e846.jpeg)
按下‘Esc’退出插入模式,输入:wq回车以保持并关闭文件。
此时,输入jupyter notebook –allow-root 服务器就在运行jupyter了,不过想要本地访问,我们还需要让阿里云打开8888端口
![f5aae7a4c0aa092030f36483beaf77e9.png](https://i-blog.csdnimg.cn/blog_migrate/57b1a67eb30da6e49b5384a8da141907.jpeg)
4.2 开通服务器端口
与3.1.3开通端口类似。在修改安全组规则界面(具体详情见3.1.3),我们选择“添加安全组规则”
![9b05a4d368549ad56b0ac2e73e4fa807.png](https://i-blog.csdnimg.cn/blog_migrate/2bf6932ff080dc1eb31bc9692783abf9.jpeg)
添加如下规则即可
![4be31c23d0fd1f05826501cc2beee7f2.png](https://i-blog.csdnimg.cn/blog_migrate/33a9948ba8cf36c92541cd99d5bb7d90.jpeg)
此时,访问我们服务器ip:8888 即可进入jupyter界面。密码输入我们在from notebook.auth import passwd; passwd() 时输入的密码。
![5d6b6c3866b5527e1d3e4a4243b593ef.png](https://i-blog.csdnimg.cn/blog_migrate/26a9a6ab5f9f6635abceb33a44cc80ff.jpeg)
密码输入完成后,即可用jupyter的方式访问到我们的服务器了。
![ccb3e9d696c7ed7d13aedcd16c75b3c7.png](https://i-blog.csdnimg.cn/blog_migrate/2bd105f4ff20136124e3886a8be8c6ca.jpeg)
4.3 隧道连接
在Xshell界面左侧的会话管理器,选择属性
![0d459d43949f7037d8a2c97d9bff8aab.png](https://i-blog.csdnimg.cn/blog_migrate/6885132fa62495e44d1388459deb36ec.jpeg)
点击“隧道”-“添加”
![e246f8556173c80730e26909ebd5567e.png](https://i-blog.csdnimg.cn/blog_migrate/cfc2b8e629dbe3792f9031a959f326c9.jpeg)
输入如下信息,侦听端口任意,这里为5000;目标主机可以不用设置,目标端口是之前c.NotebookApp.port =8888设置的端口号。
![18925f85fd199e20cac0dfbdd1c6783f.png](https://i-blog.csdnimg.cn/blog_migrate/03daed45e8549f9ee81021161da846e1.jpeg)
完成后点击确定。断开与服务器的连接并重连。
此时运行jupyter后。我们可以以访问本地5000端口的形式访问远程服务器了。
![88e57530fc117d19f6b2dc7f5f82f77d.png](https://i-blog.csdnimg.cn/blog_migrate/c262655eda3b6e80dc95a36c90a3229c.jpeg)
附录:使用密钥对
在配置阿里云服务器时,在登陆凭证界面选择“新建密钥对”。
我们创建一个密钥,并点击确定。此时我们会下载一个.pem文件
![b1e48044fd06f15cc49641c05e6329a0.png](https://i-blog.csdnimg.cn/blog_migrate/9e9c23a214911b8925ce4252df14e8a7.jpeg)
下载的.pem文件为密钥(密钥请勿泄露,公钥随意,其他人知道你的公钥也无法伪造成你登录服务器)。
以XShell为例,我们在菜单栏选择“工具”-“用户密钥管理者”
![0a5e766b6239123db919749633b3c394.png](https://i-blog.csdnimg.cn/blog_migrate/fb484fe0c7b887805ea6336cfd872e8f.jpeg)
在打开的“用户密钥”窗口,我们选择导入,导入之前的.pem文件
![d4328e704698b01980e9d80796148ff6.png](https://i-blog.csdnimg.cn/blog_migrate/9bf297612bb6b3c05c8a6a946b75c0fe.jpeg)
导入成功后如下图。
![c04a4c3206ae9435b22be0afe722cad2.png](https://i-blog.csdnimg.cn/blog_migrate/2f1fb237c77f20a206d338b88bf9cd2b.jpeg)
密钥相对于直接密码登录来说会安全很多。
回到登陆凭证界面,选择我们之前创建的密钥对即可。
![ae2d8c1796f9b1f84bc430bf3592ccaf.png](https://i-blog.csdnimg.cn/blog_migrate/bb80db8cfa541110dc727a2efc1d3bd7.jpeg)
![ae46a25a6f97ce1b3aa6467f3010944f.png](https://i-blog.csdnimg.cn/blog_migrate/19b9e1145767476afe8c2cbbe7e184b3.jpeg)