AutoDL服务器、Pycharm、Xshell 7

AutoDL服务器、Pycharm、Xshell 7

这篇文章主要和大家一起学习如何在AutoDL平台租服务器以及使用它的流程。
需要的工具:
Pycharm(专业版): 用于开发(注意一定要专业版)
Xshell: 用于操作服务器
AutoDL官网

1. 租服务器

AutoDL服务器、Pycharm、Xshell 7_第1张图片
在算力广场选择你需要的卡,然后选择环境,我这里选择的是pytorch1.1.0。
(学生党可以先申请学生认证),我已经租了一块2081Ti,进入到控制台,如图所示。红色区域是我们主要使用到的信息。
AutoDL服务器、Pycharm、Xshell 7_第2张图片

2. 给服务器起别名,配置免密登录(可选)

对于一个新服务器,ssh连接方式为:

ssh -p port user@hostname

其中:
port是端口号
user是你用户名
hostname是你要登录服务器的IP地址或者域名
如果每次都输入user@hostname有点太麻烦了,所以可以给服务器起一个别名,如server1,这样可以使用如下命令登录服务器:

ssh server1

此外,每次登录服务器我们还要输入密码,这也有点麻烦,我们可以配置免密登录,可以理解为让服务器记住密码。

2.1 为服务器起别名

创建文件 ~/.ssh/config

vim ~/.ssh/config

在config文件中配置服务器别名,如图所示,HostName你租的服务器的地址, User是用户,AutoDL默认给的是root用户, Host后是你想起的别名,我这里起的是autodl
在这里插入图片描述
配置好以后,输入

ssh -p 24640 autodl

就可以登录服务器了,注意端口号要使用你自己的。但是还是需要输入密码,接下来配置免密登录。

2.2 配置免密登录

1 .创建密钥

ssh-keygen

回车回车回车…,执行结束后,~/.ssh/目录下会多两个文件:
id_rsa:私钥
id_rsa.pub:公钥
之后想免密码登录哪个服务器,就将公钥传给哪个服务器。
2. 复制公钥

cat ~/.ssh/id_rsa.pub

AutoDL服务器、Pycharm、Xshell 7_第3张图片
如图所示,复制公钥(ctrl+insert复制)。
3. 将该公钥复制到我们租的服务器的~/.ssh/authorized_keys文件中。
首先使用密码登录到服务器里,然后执行

vim ~/.ssh/authorized_keys

然后将你的公钥复制进去(shift+insert键)。
保存退出,然后退出服务器,这时我们只需要在本地输入

ssh -p 24640 autodl 

就能连接到我们租的服务器中了。

3. 配置Xshell 7连接服务器

打开Xshell 7,在会话管理器处右键新建一个新会话,将我们租的服务器参数填入。
AutoDL服务器、Pycharm、Xshell 7_第4张图片
如图所示,名称是你准备给这个会话起的名称,主机填入你租的服务器的地址,填入端口号。
然后一路确定即可,中间需要你输入一次密码。会话新建完成后,双击就可以自动连接入服务器。
ps: Xshell在windows还是比较方便的,但ubuntu里没有Xshell。

4. 配置Pycharm的项目解释器为服务器的解释器

这是我们的最终目的,对吧,在本地开发,使用服务器执行程序。
首先Pycharm只有专业版支持SSH连接,所以,一定要下载专业版本的Pycharm。
本次我们以一个项目为例来讲解。
地址:https://pan.baidu.com/s/1c9UDWQWkebuZzen8Z6OF1Q(3n58)
这里面只有一个文件,实现了一个简单的GAN,可以生成MNIST数据集。
1 .配置该项目的解释器为服务器端
文件→设置→项目→Project Interpreter→add
AutoDL服务器、Pycharm、Xshell 7_第5张图片
选择SSH Interpreter,在右边的窗口中配置你的服务器名,端口名和用户名,然后next,
AutoDL服务器、Pycharm、Xshell 7_第6张图片
如果你没有配置步骤2免密登录的话,可能会提示让你输入一次密码,我这里配置了免密登录,所以直接跳到了这里:
AutoDL服务器、Pycharm、Xshell 7_第7张图片

选择你要使用服务器的哪个python解释器,可以和我的一样。Sync folders是配置你的本地项目文件夹对应到服务器的哪个文件夹,我直接使用的默认。红色区域是选择是否将本地项目的文件自动上传到服务器端,也就是你每次改了本地的代码,Pycharm就会自动将这些修改添加到服务器端。我的建议是先不选择,这个是后续可以再设置的,你如果要选择,建议先检查一下项目里有没有放数据集,因为有大型数据集的话,Pycharm也会上传到服务器端,这非常浪费时间。建议将数据集和项目文件代码分离,数据集用scp代码上传。

点击确定后,等待pycharm连接服务器,连接成功后,去服务器的tmp/文件夹,看是否将项目映射到了tmp/pycharm_project_303处。
使用Xshell 7连接服务器

cd /tmp/
ls

AutoDL服务器、Pycharm、Xshell 7_第8张图片
如图所示,我这里已经有了pycharm_project_303项目,接下来我们运行该项目,看是否pycharm会使用服务器端的python解释器

运行方式1:直接点击run

AutoDL服务器、Pycharm、Xshell 7_第9张图片
可以看到,pycharm使用了服务器端的python,配置成功。
在这里插入图片描述

运行方式2:使用python main.py的方式运行

我们更多的时候不会直接点击run按钮,因为我们要配置许多输入参数。一般是使用python main.py方式运行。
我们可以使用X shell7或者pycharm的terminal端ssh登录服务器。我上文已经说明了X shell7如何连接,这里我再以pycharm说明一下。
我们在pycharm下方的terminal处,输入:

ssh -p 24640 autodl

登录服务器
在这里插入图片描述
然后切到/tmp/pycharm_project_303处

cd /tmp/pycharm_peoject_303

最后使用命令python main.py执行项目

python main.py

如图所示
AutoDL服务器、Pycharm、Xshell 7_第10张图片

5. 配置本地项目文件与服务器端同步

通过前面的配置,我们已经实现了在本地端写代码,然后在服务器端执行代码。现在我们需要学习一下如何同步本地端与服务器端的代码,确保在本地端修改代码后,服务器端也能得到修改。
首先,我们在本地端新建一个test.py文件,然后里面输入两行python程序

import torch

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

print(device)

AutoDL服务器、Pycharm、Xshell 7_第11张图片
然后我们点击运行test.py文件,会发现,服务器端会报错,提示没有这个文件。我们需要手动上传这个文件,待会儿会讲解如何配置pycharm自动上传文件。

同步方式1:手动上传文件

右键项目名→Deployment→Upload to→选择我们的服务器即可
AutoDL服务器、Pycharm、Xshell 7_第12张图片
如果只想上传某个文件,就右键某个文件。这时我们再执行test.py文件,可以发现已经执行成功。
AutoDL服务器、Pycharm、Xshell 7_第13张图片

同步方式2:配置pycharm自动上传文件

这个方式能免于每次修改文件后的手动上传文件方式,但是我建议这样做的话一定要把数据和项目分离,即

├── your project
├── your data
│   ├── data1
│   │   ├── Annotations
│   │   └── JPEGImages
│   └── data2
│   │   ├── Annotations
│   │   └── JPEGImages

确保你的项目里只有代码文件和少量的图像文件,而不是几十个G的数据,对于大型数据,不建议使用pycharm自动上传,而应该先把数据压缩,再使用scp命令上传。
配置pycharm自动上传文件方式:
文件→设置→(构建、执行、部署)deployment→Deplotment→Options→将upload changed files automatically to the default server 设置为Always
AutoDL服务器、Pycharm、Xshell 7_第14张图片

你可能感兴趣的:(基础技能,python)