深度学习中使用shell脚本实现多进程并发/挂机炼丹/学术实验

前情概要:拥有多块GPU,需要跑多个模型测试baseline

所以需要同时跑多个训练代码,使用shell脚本和python的argparse库解析参数是最方便的。

1.argparse解析参数

现在看下可选参数的用法,所谓可选参数,也就是命令行参数是可选的

# -*- coding: utf-8 -*-

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("--square", help="display a square of a given number", type=int)
parser.add_argument("--cubic", help="display a cubic of a given number", type=int)

args = parser.parse_args()

if args.square:
    print args.square**2

if args.cubic:
    print args.cubic**3

将上面的代码保存为文件 argparse_usage.py,在终端运行,结果如下:

$ python argparse_usage.py --h
usage: argparse_usage.py [-h] [--square SQUARE] [--cubic CUBIC]

optional arguments:
  -h, --help       show this help message and exit
  --square SQUARE  display a square of a given number
  --cubic CUBIC    display a cubic of a given number

$ python argparse_usage.py --square 8
64

$ python argparse_usage.py --cubic 8
512

$ python argparse_usage.py 8
usage: argparse_usage.py [-h] [--square SQUARE] [--cubic CUBIC]
argparse_usage.py: error: unrecognized arguments: 8

$ python argparse_usage.py  # 没有输出

详情见:这个博客

2.使用shell脚本实现多进程并发

在这里插入图片描述
如图示代码:每两个执行程序后面都带有一个&符号,表示挂在后台执行(同时执行),因为分别用到两块不同的GPU,wait表示等上述两个程序执行完毕才接着执行下述文件

使用

nohup sh *.sh > myout.file 2>&1 &

执行shell脚本

解释:
& 放在命令到结尾,表示后台运行,防止终端一直被某个进程占用,这样终端可以执行别到任务

nohup放在命令的开头,表示不挂起(no hang up),也即,关闭终端或者退出某个账号,进程也继续保持运行状态

0 表示stdin标准输入
1 表示stdout标准输出
2 表示stderr标准错误
2>&1 也就表示将错误重定向到标准输出上

所以该语句表示:即使关闭终端窗口,依然继续执行,并且将所有的输出都输入了一个myout.file的文件中

监控GPU运行状态
在这里插入图片描述
发现一直在跑

结束语

做到这里,大家就可以挂机跑去睡觉啦!等第二天起床,发现所有训练都跑完咯!

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值