(三)linux常用命令(强制结束进程、tmux关机状态训练网络、rm: command not found)、单GPU训练网络

前言

初次使用远程服务器的GPU时遇到了以下问题:

  1. 某些进程本地端结束但是远程服务器仍在运行,导致过分占用GPU进程;
  2. 训练过程必须保证本地电脑开机状态,随着训练时间增长这将变得很不现实;
  3. 试图使用rm命令时出现报错:rm: command not found,一般由环境变量配置出错导致;
  4. 同时使用多个GPU运行网络,导致 GPU资源的浪费。

配置:本地:win10系统Pycharm2022.3.2专业版、远程服务器:Linux系统CUDA Version: 11.2
说明:由于之前一直使用win10系统刚刚接触linux时很多操作都并不熟悉,所以决定记录当下学习过程中遇到的问题。考虑到笔者自身水平有限存在一定的局限性,欢迎在评论区指正,后续也会持续更新。

一、命令行结束进程

很多情况下在本地通过手动停止而结束的进程在远端依旧存在,这时需要kill该进程来避免服务器过于拥堵。

nvidia-smi #查看当前GPU使用情况,找到进程的PID
kill -9 PID #强制结束该进程

关于kill命令可以参考Linux 之 kill 命令入门实践,后续用到了我会再更新相关内容。

二、本机关机状态下远端继续训练网络

内容完全借鉴文章:Tmux 使用教程,但是根据自身使用习惯进行了一定的归纳。

Tmux 本质上是将会话与窗口进行"解绑"的工具,将它们彻底分离这样在本地关闭窗口之后远程服务器将会继续运行,我们只需要在需要时再次载入进程即可。

Tmux命令有三种方式:[1] 命令行运行tmux指令;[2]Tmux窗口运行指令;(两者指令完全相同,因为本质上tmux窗口就是命令行)[3]Tmux窗口使用快捷键。

[1] Tmux指令
# 帮助信息
tmux ls #显示所有快捷键
tmux list-keys #显示所有快捷键
tmux list-commands #显示所有指令信息

# 创建、重命名、退出窗口、杀死进程
tmux new -s <session-name> #创建新tmux(默认命名为0),并进入tmux环境
tmux rename-session -t <old-name> <new-name> #重命名
exit #从tmux中退回到命令行
tmux kill-session -t <session-name> #结束远程服务器的进程
tmux ls #显示所有的tmux进程

# 解绑、重载、切换窗口
tmux detach <session-name> #将当前窗口与命令行解绑
tmux attach -t <session-name> #重新载入某个窗口
tmux switch -t <session-name> #切换窗口
[2] tmux快捷键

注意:当tmux窗口正在运行代码时无法输入命令,此时我们可以通过快捷键切换窗口而不必每次都重启命令行窗口。

# 所有的快捷键都需要先按下:“Ctrl+b”,然后按下对应快捷键
? #相当于list-keys指令,按下"ESC"或"q"退出帮助文件
d #相当于detach指令
s #相当于ls指令,显示所有的tmux窗口,并可以通过选中"Enter"访问
$ #相当于rename-session指令

说明:tmux还可以进行窗格操作和多窗口管理,但是目前对我来说并不需要用到。

三、单GPU训练网络

在使用GPU进行训练时,如果使用了nn.DataParallel时,如果存在多块GPU将会进行并行训练,但是其实我目前的网络很小这样会造成GPU资源的浪费,笔者在最初使用GPU时忽略了这个问题,下面介绍三种解决方案。(参考:设置CUDA_VISIBLE_DEVICES的方法

方案一:通过os.environ来设置CUDA_VISIBLE_DEVICES
import torch
import os
os.environ["CUDA_VISIBLE_DEVICE"]="0" #指定运行设备为cuda:0
方案二:通过bash脚本设置CUDA_VISIBLE_DEVICES
CUDA_VISIBLE_DEVICES=0 nohup python -u train.py
方案三:每次运行时指定需要的device并进行参数传递

数据搬到GPU上:data.to(“cuda”)
创建数据时指定设备:torch.tensor(, device=“cuda”)
网络搬到GPU上:net.to(“cuda”)(不要使用nn.DataParallel)

四、rm: command not found

在使用rm -rf命令删除文件时突然出现了rm: command not found的报错,而之前还可以正常使用,经过一定的排查发现是可能是环境变量配置上出现了一定问题,激活一下即可。进入根目录:echo $PATH

更多环境变量配置的方法可以参考:linux查看、添加、删除环境变量

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
conda是一个开源的软件包管理系统和环境管理系统,用于安装和管理不同版本的软件包和依赖项。tmux是一个终端复用器,可以在远程服务器上运行程序并保持会话的持久性,即使网络中断也能保持程序正常运行。 要在远程服务器上安装tmux,可以按照以下步骤进行操作: 1. 对于Linux系统,输入命令:sudo apt-get install tmux 对于Mac系统,输入命令:brew install tmux 如果你使用的是anaconda虚拟环境,你还可以使用conda install tmux命令来安装tmux。 2. 新建和退出tmux会话: 输入命令:tmux,进入新建的tmux会话窗口。 要退出tmux会话窗口,输入命令:exit。 要建立特定名称的tmux会话窗口,输入命令:tmux new -s 新建会话名称。 3. 查看、重命名、接入以及转换: 在未进入tmux窗口的情况下,输入命令:tmux ls,可以查看全部的tmux会话。 要重命名tmux会话,输入命令:tmux rename-session -t 原会话名称 新会话名称。 要进入已有的tmux会话,输入命令:tmux attach -t 会话名称。 进入了tmux会话窗口之后,输入命令:tmux switch -t 会话名称,可以转到对应的tmux会话。 4. 分离和终止: 进入了tmux会话窗口之后,输入命令:tmux detach,会退出当前会话,但会话会在后台继续存在,并且会话中运行的程序也会转到后台。 在未进入tmux窗口的情况下,输入命令:tmux kill-session -t 会话名称,可以强制终止会话,杀死tmux会话进程

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值