问题:

在使用nohup命令后台训练pytorch模型时,关闭ssh窗口,有时会遇到下面报错:

WARNING:torch.distributed.elastic.agent.server.api:Received 1 death signal, shutting down workers

WARNING:torch.distributed.elastic.multiprocessing.api:Sending process 4156332 closing signal SIGHUP

WARNING:torch.distributed.elastic.multiprocessing.api:Sending process 4156333 closing signal SIGHUP

Traceback (most recent call last):

File "/home/user2/anaconda3/envs/mmlab/lib/python3.7/runpy.py", line 193, in _run_module_as_main

"main", mod_spec)

File "/home/user2/anaconda3/envs/mmlab/lib/python3.7/runpy.py", line 85, in _run_code

exec(code, run_globals)

File "/home/user2/anaconda3/envs/mmlab/lib/python3.7/site-packages/torch/distributed/launch.py", line 193, in

main()

File "/home/user2/anaconda3/envs/mmlab/lib/python3.7/site-packages/torch/distributed/launch.py", line 189, in main

launch(args)

File "/home/user2/anaconda3/envs/mmlab/lib/python3.7/site-packages/torch/distributed/launch.py", line 174, in launch

run(args)

File "/home/user2/anaconda3/envs/mmlab/lib/python3.7/site-packages/torch/distributed/run.py", line 713, in run

)(cmd_args)

File "/home/user2/anaconda3/envs/mmlab/lib/python3.7/site-packages/torch/distributed/launcher/api.py", line 131, in call

return launch_agent(self._config, self._entrypoint, list(args))

File "/home/user2/anaconda3/envs/mmlab/lib/python3.7/site-packages/torch/distributed/launcher/api.py", line 252, in launch_agent

result = agent.run()

File "/home/user2/anaconda3/envs/mmlab/lib/python3.7/site-packages/torch/distributed/elastic/metrics/api.py", line 125, in wrapper

result = f(
args, **kwargs)

File "/home/user2/anaconda3/envs/mmlab/lib/python3.7/site-packages/torch/distributed/elastic/agent/server/api.py", line 709, in run

result = self._invoke_run(role)

File "/home/user2/anaconda3/envs/mmlab/lib/python3.7/site-packages/torch/distributed/elastic/agent/server/api.py", line 843, in _invoke_run

time.sleep(monitor_interval)

File "/home/user2/anaconda3/envs/mmlab/lib/python3.7/site-packages/torch/distributed/elastic/multiprocessing/api.py", line 60, in _terminate_process_handler

raise SignalException(f"Process {os.getpid()} got signal: {sigval}", sigval=sigval)

torch.distributed.elastic.multiprocessing.api.SignalException: Process 4156314 got signal: 1

这是nohup的bug,我们可以使用tmux来替换nohup。

解决方案:

直接看阮一峰大佬写的教程,详细且清晰,几分钟就能学会使用:Tmux 使用教程 - 阮一峰的网络日志 (ruanyifeng.com)

我在这稍微整理一下tmux的命令,如果只是简单后台训练,用下面几个命令就够用:

sudo apt-get install tmux   # 安装
tmux # 进入tmux窗口
exit # 推出tmux窗口,或者使用快捷键[ Ctrl+d ]
tmux new -s ${session-name} # 创建一个会话,并设置会话名
# 快捷键[ Ctrl+b ] 是tmux的前缀键,用完前缀键后可以继续按指定键来完成指定命令
[ Ctrl+b ] [ d ] # 将会话与窗口分离,或者[ Ctrl+b ] tmux detach
tmux ls # 查看所有会话,或者使用tmux list-session
tmux attach -t ${session-name} # 根据会话名将terminal窗口接入会话
tmux kill-session -t ${session-name} # 根据会话名杀死会话
tmux switch -t ${session-name} # 根据会话名切换会话
tmux rename-session -t 0 ${session-name} # 根据会话名,重命名会话

tmux简单使用流程:

[terminal]: tmux new -s train_model       # 创建一个会话,并设置会话名:train_model
[tmux]: conda activate env_name # 在tmux会话中,我们激活我们要使用的conda环境
[tmux]: python train.py # 在tmux会话中,开始训练我们的模型
[tmux]: [ Ctrl+b ] [ d ] # 将会话与窗口分离
[terminal]: tmux ls # 查看我们刚刚创建的会话
[terminal]: watch -n 1 -c gpustat --color # 监控我们的gpu信息

nohup训练pytorch模型时的报错以及tmux的简单使用的更多相关文章

  1. Django数据迁移时(或者新建模型时)报错:Did you install mysqlclient,解决后又报错:mysqlclient 1.3.13 or newer is required;you have 0.9.3

    报错信息如下: 解决方法一: 给项目根目录下mysite应用下的__init__.py文件加入如下代码: 运行又报错: 报错信息是:  mysqlclient版本太低 点击上图框中的链接进入到pyth ...

  2. 【PostgreSQL】PostgreSQL添加新服务器连接时,报错“Server doesn't listen ”,已解决。

    PostgreSQL添加新的服务器连接时,报错:

  3. hibernate有关联关系删除子表时可能会报错,可以用个clear避免错误

    //清除子表数据 public SalesSet removeSalesSetDistributor(SalesSet salesSet ){ List<SalesSetDistributor& ...

  4. CentOS命令登录MySQL时,报错ERROR 1045 (28000):

    CentOS命令登录MySQL时,报错ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)错误解 ...

  5. saltstack配置安装的一些关键步骤及安装时各种报错的分析

    以下其他仅做参考,官方网址才是安装重点:http://docs.saltstack.cn/topics/installation/rhel.html 与安装相关的一些文档或资料: 一.linux服务器 ...

  6. keras训练cnn模型时loss为nan

    keras训练cnn模型时loss为nan 1.首先记下来如何解决这个问题的:由于我代码中 model.compile(loss='categorical_crossentropy', optimiz ...

  7. vue使用v-for时vscode报错 Elements in iteration expect to have 'v-bind:key' directives

    vue使用v-for时vscode报错 Elements in iteration expect to have 'v-bind:key' directives Vue 2.2.0+的版本里,当在组件 ...

  8. Ansible 脚本运行一次后,再次运行时出现报错情况,原因:ansible script 的格式不对,应改成Unix编码

    Ansible 脚本运行一次后,再次运行时出现报错情况,原因:ansible  script 的格式不对,应改成Unix编码 find . -name "*" | xargs do ...

  9. 使用vue时,报错“exports is not defined”

    在开发中引用插件时,报错“exports is not defined” 但在引用第三方组件的时候,在浏览器中报错“exports is not defined”.根据浏览器报错信息,查询到报错来源是 ...

  10. 安装vue-cli时-4058报错的解决方法

    一.报错信息 安装vue-cli时-4058报错 二.解决办法 1.安装淘宝镜像 npm --registry https://registry.npm.taobao.org info undersc ...

随机推荐

  1. 如何在数据库中存储小数:FLOAT、DECIMAL还是BIGINT?

    前言 这里还是用前面的例子: 在线机票订票系统的数据表设计.此时已经完成了大部分字段的设计,可能如下: CREATE TABLE flights ( flight_id INT AUTO_INCREM ...

  2. 【深度学习】批量归一化 BatchNormalization

    一.背景       机器学习的本质是对物理世界进行建模,做的就是拟合数据分布.      但是在模型训练过程中,神经网络参数不断更新,导数中间层的数据分布频繁地变化(内部协变量偏移),不利于网络参数 ...

  3. 基于DSP的光纤麦克风声音采集系统硬件设计方案总结

    前记  光纤声传感器是一种利用光纤作为传光介质或探测单元的一类声传感器,相比传统电声传感器其具有灵敏度高.频带响应宽.抗电磁干扰等优越特性,可广泛应用于国防安全.工业无损检测.医疗诊断及消费电子等领域 ...

  4. PBKDF2算法:保障密码安全的利器

    PBKDF2算法起源: PBKDF2(Password-Based Key Derivation Function 2)算法是一种基于密码的密钥派生函数,最初由RSA实验室的密码学家提出,用于从密码中 ...

  5. [TM4] TM4C123G Keil5 新建工程指南

    [TM4] TM4C123G Keil5 新建工程指南 keil新建工程,选择TM4C123GH6PM芯片,然后在CMSIS勾选CORE,DEVICE勾选Startup(如图),来到新工程界面 在So ...

  6. Java博客大汇总

    目录介绍 01.Java基础[30篇] 02.面向对象[15篇] 03.数据结构[27篇] 04.IO流知识[11篇] 05.线程进程[9篇] 06.虚拟机[12篇] 07.类的加载[7篇] 08.反 ...

  7. 鸿蒙HarmonyOS实战-ArkUI组件(Row/Column)

    前言 HarmonyOS的布局组件是一组用于构建用户界面布局的组件,包括线性布局.相对布局.网格布局等.这些组件帮助开发者以简单和灵活的方式管理和组织应用程序中的视图,并支持多种不同的设备屏幕尺寸和方 ...

  8. MacOS安装 JDK 及动态切换版本

    MacOS安装 JDK 及动态切换版本 JDK下载  我自己使用的是Mac m2系列.无所谓用的哪一种开源的OPEN JD,按需下载,我下载了8,11,17三个版本. 安装完成后,终端输入 java ...

  9. Java 多级文件夹创建

    File类中的mkdir()和mkdirs(): mkdir():只能创建一层目录.  mkdirs():可以创建多层目录 String path = "E:\\lxwtest\\test& ...

  10. verilog之display

    verilog之display 1.函数简介 $display是用于显示不同格式的变量的函数,用于测试过程中观察数据数据的特点.该观测不如波形图直观,但是如果可以详细的设置好观测点,有时可以达到事半功 ...