第一次通过服务器远程跑代码

在师姐保姆级教导下进行一次尝试。

由于师姐特别nice,而我特别小白,所以其实这篇更像我的一次日志记录,而非经验贴,给不了同为小白的朋友们什么帮助。

一、下载安装MobaXterm

MobaXterm free Xserver and tabbed SSH client for Windows

二、连接服务器

点击session -> ssh,填remote host、specify username、port(因为师姐是直接发给我的,填进去就好,我还不知道如何获取可用服务器信息)。

填好确认后,在左侧user sessions中出现了目标服务器,双击连接,输入密码(ubuntu命令窗输入密码时屏幕一直黑的,不会显示输入了什么以及输入了几位,我一开始还以为键盘坏了…)。

连接成功后,左侧可以进行从本电脑到远程终端的文件传输,右侧是黑乎乎的terminal。

三、跑代码

(由于这是师姐常用的远程终端,所以环境什么的已经搭好了,我激活就行)

1、激活环境

conda activate xxx

2、进入工程文件所在的文件夹目录

常用命令:

pwd显示当前路径

cd ..返回上一级目录

cd home/psp/打开了psp文件夹

3、确认工程中各个.py文件无误

4、打开与服务器新的连接,检测显卡情况

watch nvidia-smi

5、用命令运行代码文件

我的命令:指定要用的显卡+要跑的文件+要用的参数

CUDA_VISIBLE_DEVICES=0,1 python scripts/train.py --exp_dir=results/train_attn --batch_size=4 --test_batch_size=4

 然后就是不断报错,打开文件找到报错的行数,按照错误类型找问题到底在哪儿,然后再跑再改再跑…

6、把进程放进后台跑(一些Linux命令)

Ⅰ、放进后台操作:

nohup python -u train.py > train.log 2>&1 &

#师姐给的注释:

(1)nohup 不挂起的意思。
(2)-u 代表程序不启用缓存,也就是把输出直接放到log中,没这个参数的话,log文件的生成会有延迟。
(3)> train.log 将输出日志保存到这个log中。
(4)2>1 2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;
2>&1 &与1结合就代表标准输出了,就变成错误重定向到标准输出。(这个我没看懂)
(5) 最后一个& ,代表该命令在后台执行。

结合我们这次的命令,最终写作:

CUDA_VISIBLE_DEVICES=0,1 nohup python -u scripts/train.py --exp_dir=results/train_attn --batch_size=4 --test_batch_size=4 > train.log 2>&1 &

Ⅱ、强制关闭进程(kill):

kill -9 28148

#28148是我正在跑的进程的PID,PID可以在显卡watch窗口找到。

Ⅲ、进程查看

ps -aux | grep "main.py"  

(1)a:显示所有程序。

(2)u:以用户为主的格式来显示。

(3)x:显示所有程序,不以终端机来区分。

num jobs查看nohup命令下运行的所有后台进程。

Ⅳ、查看train.log的日志

tail -f train.log

日志:

7、在本地监听服务器上的tensorboard

(1)将服务器的某个端口转发到本地的8888端口。

ssh -L 8888:localhost:6665 服务器端用户名@ip地址

(2)服务器运行tensorboard,指定日志文件存放目录,在指定端口打开(默认端口6006)。

先cd到logs文件夹所在的大目录下,运行以下代码:

tensorboard --logdir=logs --port 6665

(3)在浏览器打开http://localhost:8888/实现监听。

来源:三思为上策

物联沃分享整理
物联沃-IOTWORD物联网 » 第一次通过服务器远程跑代码

发表评论