配置阿里云GPU服务器py-tf环境

简介: 本文分为如下几个部分• 什么是GPU服务器• 租用阿里云GPU服务器ubuntu系统• 安装python3.6• 安装pip• 安装anaconda3• 配置jupyter• 服务器与本地windows文件互传• 安装GPU版TensorFlow• 开启多个进程(多个窗口)• 本地sublime编辑远程文件• vim配置

本文分为如下几个部分

  • 什么是GPU服务器
  • 租用阿里云GPU服务器ubuntu系统
  • 安装python3.6
  • 安装pip
  • 安装anaconda3
  • 配置jupyter
  • 服务器与本地windows文件互传
  • 安装GPU版TensorFlow
  • 开启多个进程(多个窗口)
  • 本地sublime编辑远程文件
  • vim配置


什么是GPU服务器

相比于CPU,GPU在进行矩阵运算等高度并行化计算任务上有非常大的速度优势,比如你使用TensorFlow构建卷积神经网络进行图片分类,在CPU上训练模型会非常非常慢,这时我们通常会希望使用GPU进行训练。

使用GPU一般有如下几种选择

1.如果你的电脑带有独立英伟达显卡(查看电脑显卡配置自己查),可以安装GPU版本的tensorflow或者其他深度学习框架,通过一系列配置就可以使用GPU训练模型了。

以windows10下安装python的Tensorflow库为例,参考官网安装CUDA,cuDNN和tensorflow-gpu库,可能还要安装visual studio等,安装过程可能伴随痛苦,报错只能一直百度。

如果自己的电脑显卡配置不是很好,会发现跑模型依然不是很快(但是能比用CPU跑快上几倍);而且电脑会发热出声,看着都心疼。所以我们一般都不会用自己的笔记本电脑来跑模型。

2.如果你有钱的话,可以买一个GPU主机,也就是一个可以用GPU计算的台式电脑,这个最低配的也要好几万,详情可以到淘宝京东上看。或者是学校实验室提供这种主机。

3.第三种就是租用服务器了。这里以阿里云为例进行说明。这种租用的服务器相当于你在自己电脑里操控阿里公司里的一台电脑,你可以在一个窗口中操控远程的电脑,就和在自己电脑上使用一样。

租用阿里云GPU服务器

步骤如下

  • 打开下面链接,登录阿里云

https://partner.aliyun.com/shop/1586986852753298?spm=a2cbv.aps.0.0.6989561cVAC8gr

  • 点击领取优惠券

image.png

按照相关提示注册阿里云账号

  • 注册账号之后,打开下面链接:

https://www.aliyun.com/product/ecs/gpu?spm=5176.19720258.J_8058803260.33.435c2c4ainsu2k

去购买GPU服务器


image.png

  • 规格族选择GPU计算型gn4

image.png

  • 镜像部分选择自己想要的操作系统,这里选择ubuntu16.04 64位。选择自动安装GPU驱动,CUDA9.0.176,Driver390.46,如下图所示

image.png

  • 创建成功后可以在“管理控制台”中看到自己的实例(也就是你租用的GPU服务器)。选中实例点击启动,就会出现一个“远程连接”,如下图所示

image.png

点击远程连接(必须等到状态是“已启动”之后才可以)就会出来一个新的浏览器窗口,在那里会让你输入账号密码,之前没有设置过的话可以在更多-密码-重置密码进行设置。如下图所示

image.png

远程连接后你就可以操作这台主机了(登陆账号是root),不过你可能会发现一个问题,那就是你在自己电脑里复制的东西无法粘贴到远程主机上,这一点非常不方便,还有一些其他不方便的地方,因此我一般不会使用远程连接去使用远程的主机。推荐下载putty,使用putty去连接远程的主机。

putty下载后打开,在Host Name位置填入实例的公网IP地址,也就是上上图中我打马赛克的位置。右边端口默认22即可,点击open

image.png

此时会打开一个黑色窗口,在这里让你输入的账号密码和“远程连接”那里一样。账号密码正确的话就可以开始使用这台主机了,如下所示(下面输入了python命令进入了python交互环境,就像windows的命令行一样)

安装python3.6

(也可以按照后面的方式直接安装anaconda,跳过安装python3.6和pip两节)

ubuntu16.04自带了两个版本的python,2.7和3.5,下面我们会删掉2.7安装3.6版本,并将3.6版本设置为默认版本(即输入python自动启动的是3.6的环境)

依次输入如下命令(在这里复制之后,在putty中点击右键即粘贴)

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6
cd /usr/bin
rm python
ln -s python3.6m python

运行结束后可以尝试输入python看进入的环境是否python3.6,测试结束后输入exit()退出python环境

安装pip

进行上面操作后会发现无法用pip安装包(可以通过这条命令pip --version判断是否可以使用),下面是安装过程

wget https://pypi.python.org/packages/6f/10/5398a054e63ce97921913052fde13ebf332a3a4104c50c4d7be9c465930e/setuptools-26.1.1.zip#md5=f81d3cc109b57b715d46d971737336db
unzip setuptools-26.1.1.zip
cd setuptools-26.1.1
python setup.py install
wget --no-check-certificate https://files.pythonhosted.org/packages/c4/44/e6b8056b6c8f2bfd1445cc9990f478930d8e3459e9dbf5b8e2d2922d64d3/pip-9.0.3.tar.gz
tar -zxvf pip-9.0.3.tar.gz
cd pip-9.0.3
python setup.py install

(注:这里安装的是9.0.3版本的pip,之后使用pip命令时会提示更新,因为更新后会有一些问题所以不用管它就好,觉得自己可以解决这个问题的话也可以尝试更新看看)

安装anaconda3

安装anaconda3会自带一个python,因此这一步和上面安装python3.6有些重叠,只选其一即可,运行如下命令完成安装

mkdir anaconda
cd anaconda
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.2.0-Linux-x86_64.sh  
bash Anaconda3-5.2.0-Linux-x86_64.sh

(注:这步中间会需要回答一些yes no之类的问题)

下一步添加环境变量

export PATH=~/anaconda3/bin:$PATH

这样就可以调用pythonpython3进入python3.6环境了,而且pip也是可以正常使用的。

注:可以直接安装anaconda,配置好环境变量后,默认调用的就是anaconda的python(不需要单独安装python3删除python2),也可以使用pip,jupyter也不需要单独安装。

配置jupyter

当前的服务器是没有图形界面的,所以不能用鼠标操作,一切都要用代码。但是jupyter不一样,下面配置之后,我们就可以在本地的浏览器中打开远程的jupyter,并且用鼠标进行操作,操作和在本地使用jupyter没有任何区别。

pip install jupyter    # 如果已安装anaconda可省略此步
jupyter notebook --generate-config
ipython

在ipython交互环境中依次输入下面两条命令

from notebook.auth import passwd
passwd()

它会让你设置一个密码(这个密码自己要记住,之后从本地连接时需要使用),然后生成一串字符密文,将这串字符记下来之后会有用(从putty中复制东西只需要选中那段文本,即执行了复制操作)。然后exit()退出ipython环境

下面修改jupyter配置文件,对linux下编辑文件的vim命令不熟悉的可以参考菜鸟教程

vi ~/.jupyter/jupyter_notebook_config.py

在这个文件最后加上下面几行,保存退出即可

c.NotebookApp.ip='*'
c.NotebookApp.password = u'把上面记下的密文粘贴到这里'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8899

上面端口(port)设置8899为了不和本地jupyter8888冲突

之后在服务器中输入

jupyter notebook --allow-root

然后在本地(自己的电脑)windows10系统下打开命令行输入

ssh -N -f -L localhost:8899:localhost:8899 root@公网ip

上面命令中的“公网ip”换成你租用的服务器的公网ip地址。(这个窗口一直都不要关,直到你不用jupyter为止)

之后在本地浏览器中输入localhost:8899,会有一个让你输入密码的页面,输入ipython环境下你自己设置的密码,即可登录远程的jupyter了。(这里不需要像其他博客说的那样关掉putty等其他连接)

你可以在服务器linux命令行中安装jupyter扩展和改变主题,就和本地使用一样。还有一个很好的功能是,点击upload可以直接将本地的文件上传到服务器中使用。

如果想退出jupyter,只需要关闭本地浏览器的jupyter窗口,在linux服务器中ctrl+c终止即可。

我们在使用jupyter时,往往还需要用putty窗口执行其他命令,这就需要上面的指令在后台运行,可以用下面这种方式开启jupyter

nohup jupyter notebook --allow-root &

服务器与本地windows文件互传

想将本地的代码、数据等文件上传到服务器,或者将服务器中的训练结果传回本地,是需要用代码执行的

下面的代码都在本地windows10系统的命令行中执行(“公网ip”都要换成租用的服务器的公网ip地址)

1.将本地C:/Users/路径下的chuan.txt文件上传到服务器root目录下

scp C:/Users/chuan.txt root@公网ip:/root/

2.如果想传到自己在服务器根目录下新建的new文件夹中需要这样

scp C:/Users/chuan.txt root@公网ip:~/new/

3.将服务器中root目录下的chuan.txt文件下载到本地C:/Users/路径下

scp root@公网ip:/root/chuan.txt C:/Users/

4.传递文件夹需要用-r

scp -r root@公网ip:/root/chuan C:/Users/

也可以用客户端WinSCPFileZilla通过SFTP协议进行文件互传。

安装GPU版TensorFlow

下面安装gpu版本的tensorflow和一些GPU驱动程序库

先安装gpu版本的tensorflow(注意这里要指定版本,否则安装太新的版本可能与CUDA等版本不匹配)

pip install tensorflow-gpu==1.9.0

测试是否可以使用tensorflow,先进入python环境

python

导入tensorflow,如果不报错则安装成功,之后安装的那一堆都不用管了

import tensorflow

如果上一步import发生了错误,则安装下面命令安装依赖程序。

(可以用这条命令查看CUDA版本cat /usr/local/cuda/version.txt

无论你现在是否有CUDA等,或者有什么版本的(CUDA9.2的貌似用不了,需要9.0的),下面命令会删除当前CUDA等,安装可以使用的版本,我们不需要管它安装的是什么,只要依次执行下面命令来安装,可以用就好了(如果你安装了不能用,不要来问我,我也不知道为什么)

sudo apt-get purge cuda
sudo apt-get purge libcudnn6
sudo apt-get purge libcudnn6-dev
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libcudnn7-dev_7.0.5.15-1+cuda9.0_amd64.deb
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libnccl2_2.1.4-1+cuda9.0_amd64.deb
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/libnccl-dev_2.1.4-1+cuda9.0_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo dpkg -i libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.0.5.15-1+cuda9.0_amd64.deb
sudo dpkg -i libnccl2_2.1.4-1+cuda9.0_amd64.deb
sudo dpkg -i libnccl-dev_2.1.4-1+cuda9.0_amd64.deb
sudo apt-get update
sudo apt-get install cuda=9.0.176-1
sudo apt-get install libcudnn7-dev
sudo apt-get install libnccl-dev
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

参考博客

之后终端输入

python

再导入库

import tensorflow

没有报错就可以用了(本地用CPU的tensorflow代码可以直接拿过来在这里跑,不需要做任何更改,速度会有非常大的提升)

开启多个进程

因为进入服务器只有一个窗口,当我们用这个窗口跑代码时,就没有办法同时用命令编辑一些文件。为了解决这个问题,我们可以使用screen开启多个进程,用一个进程跑代码,然后将这个窗口折叠到后台,创建新的进程来编辑代码。

(下面截图来源于我本地的虚拟机,远程服务器是一样的)

1.安装

用下面这条命令安装screen

sudo apt-get install screen

2.创建进程

我们可以刚进服务器就用下面命令创建一个process(其中process1是该进程名称,可以随意命名)

screen -S process1

这时会开启一个干净的窗口

image.png

我们在这个窗口下执行一些操作,然后运行代码,在代码运行的过程中,连续按Ctrl+A、Ctrl+D,就会回到主进程,之前创建的进程中代码会继续执行着,只是我们还可以继续做编辑文件等其他工作。

image.png

可以在这里创建第二个进程

screen -S process2

(其实如果不需要更多进程,也可以不用创建新进程,直接编辑文件)

第二个进程的操作和第一个进程相同,如果想要将其折叠到后台运行,也是连续按Ctrl+A、Ctrl+D。

3.查看进程

用下面这条命令查看当前有哪些进程

screen -ls

image.png

进入某一进程

可以用下面代码进入之前创建的process1进程

screen -r process1

进入之后会发现之前的代码仍然继续运行着

image.png

5.终止进程

比如要将process1进程终止掉,用下面这条命令

screen -X -S process1 quit

如果把之前创建的所有进程全部终止,就和最初没创建进程一样。

6. 断开不结束进程

在不使用screen时,当与服务器断开连接(但没有停止实例,只是关掉了putty窗口,断开了ssh连接),正在跑的程序会被终止。而如果程序在screen的进程中运行,则不会受ssh断开的影响,关掉窗口合上电脑都不会影响程序的正常运行。

此外,tmux也可以实现和screen类似的功能。

本地sublime编辑远程文件

刚接触linux可能对vim编辑文件很不习惯,我们更希望用鼠标来操作,如果能用本地的工具来编辑远程文件就更得心应手了,sublime的sftp插件就可以实现这件事。它的原理是将远程文件下载到本地,修改完之后再推送到远程。

vim配置

其实通过修改vim的配置文件,可以使之支持鼠标操作、代码自动缩进等,可以使在远程编辑更加得心应手。

打开配置文件

vim ~/.vimrc

将下面这些配置信息粘贴进去

"去掉vi的一致性"
set nocompatible
"显示行号"
set number
" 隐藏滚动条"    
set guioptions-=r 
set guioptions-=L
set guioptions-=b
"隐藏顶部标签栏"
set showtabline=0
"设置字体"
set guifont=Monaco:h13         
syntax on   "开启语法高亮"
set background=dark     "设置背景色"
set nowrap  "设置不折行"
set fileformat=unix "设置以unix的格式保存文件"
set cindent     "设置C样式的缩进格式"
set tabstop=4   "设置table长度"
set shiftwidth=4        "同上"
set showmatch   "显示匹配的括号"
set scrolloff=5     "距离顶部和底部5行"
set laststatus=2    "命令行为两行"
set fenc=utf-8      "文件编码"
set backspace=2
set mouse=a     "启用鼠标"
set selection=exclusive
set selectmode=mouse,key
set matchtime=5
set ignorecase      "忽略大小写"
set incsearch
set hlsearch        "高亮搜索项"
set noexpandtab     "不允许扩展table"
set whichwrap+=<,>,h,l
set autoread
set cursorline      "突出显示当前行"
set cursorcolumn        "突出显示当前列"

退出之后打开一个python文件,会发现代码高亮了、写代码时回车可以自动缩进、鼠标可以确定光标位置了,滚轮也有效了,总之会更符合我们日常的使用习惯。

但是原来鼠标选中即复制、右键即粘贴的功能看起来用不了了。实际上只要按住shift再选中就还是复制,按住shift右键是粘贴。

如果对颜色不满意,可以下载其他主题颜色设置进去。下面我以monokai为例

mkdir ~/.vim
mkdir ~/.vim/colors
cd ~/.vim/colors
wget https://raw.githubusercontent.com/sickill/vim-monokai/master/colors/monokai.vim
vim ~/.vimrc

加入下面一行

colorscheme monokai

保存退出后,再打开python文件就可以看到效果。

vim配置非常强大,更多功能读者自己探索。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
2天前
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器计算架构X86/ARM/GPU/FPGA/ASIC/裸金属/超级计算集群有啥区别?
阿里云服务器ECS提供了多种计算架构,包括X86、ARM、GPU/FPGA/ASIC、弹性裸金属服务器及超级计算集群。X86架构常见且通用,适合大多数应用场景;ARM架构具备低功耗优势,适用于长期运行环境;GPU/FPGA/ASIC则针对深度学习、科学计算、视频处理等高性能需求;弹性裸金属服务器与超级计算集群则分别提供物理机级别的性能和高速RDMA互联,满足高性能计算和大规模训练需求。
|
29天前
|
编解码 前端开发 安全
通过阿里云的活动购买云服务器时如何选择实例、带宽、云盘
在我们选购阿里云服务器的过程中,不管是新用户还是老用户通常都是通过阿里云的活动去买了,一是价格更加实惠,二是活动中的云服务器配置比较丰富,足可以满足大部分用户的需求,但是面对琳琅满目的云服务器实例、带宽和云盘选项,如何选择更适合自己,成为许多用户比较关注的问题。本文将介绍如何在阿里云的活动中选择合适的云服务器实例、带宽和云盘,以供参考和选择。
通过阿里云的活动购买云服务器时如何选择实例、带宽、云盘
|
27天前
|
弹性计算 运维 安全
阿里云轻量应用服务器和经济型e实例区别及选择参考
目前在阿里云的活动中,轻量应用服务器2核2G3M带宽价格为82元1年,2核2G3M带宽的经济型e实例云服务器价格99元1年,对于云服务器配置和性能要求不是很高的阿里云用户来说,这两款服务器配置和价格都差不多,阿里云轻量应用服务器和ECS云服务器让用户二选一,很多用户不清楚如何选择,本文来说说轻量应用服务器和经济型e实例的区别及选择参考。
阿里云轻量应用服务器和经济型e实例区别及选择参考
|
28天前
|
机器学习/深度学习 存储 人工智能
阿里云GPU云服务器实例规格gn6v、gn7i、gn6i实例性能及区别和选择参考
阿里云的GPU云服务器产品线在深度学习、科学计算、图形渲染等多个领域展现出强大的计算能力和广泛的应用价值。本文将详细介绍阿里云GPU云服务器中的gn6v、gn7i、gn6i三个实例规格族的性能特点、区别及选择参考,帮助用户根据自身需求选择合适的GPU云服务器实例。
阿里云GPU云服务器实例规格gn6v、gn7i、gn6i实例性能及区别和选择参考
|
21天前
|
弹性计算 人工智能 安全
阿里云推出第九代ECS实例,最高提升30%性能
阿里云推出第九代ECS实例,最高提升30%性能
208 14
|
21天前
|
人工智能 运维 Cloud Native
专访阿里云:AI 时代服务器操作系统洗牌在即,生态合作重构未来
AI智算时代,服务器操作系统面临的挑战与机遇有哪些?
专访阿里云:AI 时代服务器操作系统洗牌在即,生态合作重构未来
|
14天前
|
存储 Unix 数据挖掘
服务器数据恢复—SAN环境下LUN Mapping出错导致文件系统共享冲突的数据恢复案例
服务器数据恢复环境: SAN环境下一台存储设备中有一组由6块硬盘组建的RAID6磁盘阵列,划分若干LUN,MAP到不同业务的SOLARIS操作系统服务器上。 服务器故障: 用户新增了一台服务器,将存储中的某个LUN映射到新增加的这台服务器上。这个映射的LUN其实之前已经MAP到其他SOLARIS操作系统的服务器上了。由于没有及时发现问题,新增加的这台服务器已经对此LUN做了初始化操作,磁盘报错,重启后发现卷无法挂载。
|
2月前
|
机器学习/深度学习 编解码 人工智能
阿里云gpu云服务器租用价格:最新收费标准与活动价格及热门实例解析
随着人工智能、大数据和深度学习等领域的快速发展,GPU服务器的需求日益增长。阿里云的GPU服务器凭借强大的计算能力和灵活的资源配置,成为众多用户的首选。很多用户比较关心gpu云服务器的收费标准与活动价格情况,目前计算型gn6v实例云服务器一周价格为2138.27元/1周起,月付价格为3830.00元/1个月起;计算型gn7i实例云服务器一周价格为1793.30元/1周起,月付价格为3213.99元/1个月起;计算型 gn6i实例云服务器一周价格为942.11元/1周起,月付价格为1694.00元/1个月起。本文为大家整理汇总了gpu云服务器的最新收费标准与活动价格情况,以供参考。
阿里云gpu云服务器租用价格:最新收费标准与活动价格及热门实例解析
|
1月前
|
Cloud Native Java 编译器
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
随着云计算技术的不断发展,云服务商们不断推出高性能、高可用的云服务器实例,以满足企业日益增长的计算需求。阿里云推出的倚天实例,凭借其基于ARM架构的倚天710处理器,提供了卓越的计算能力和能效比,特别适用于云原生、高性能计算等场景。然而,有的用户需要将传统基于x86平台的应用迁移到倚天实例上,本文将介绍如何将基于x86架构平台的应用迁移到阿里云倚天实例的服务器上,帮助开发者和企业用户顺利完成迁移工作,享受更高效、更经济的云服务。
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
|
1月前
|
存储 弹性计算 运维
阿里云日常运维-购买服务器
这篇文章是关于如何在阿里云购买和配置云服务器ECS的教程。
68 6
阿里云日常运维-购买服务器