合理占用服务器GPU资源[狗头]

场景:当你想进行模型训练时,发现GPU全被占用,怎么办?

解决方案1:

在终端输入如下命令:watch -n 设定刷新时间(s) nvidia-smi

然后记起来了回来看看有空下来的没?

解决方案2:

首先说明一下我的环境:

  • ubuntu 16.04
  • anaconda3
  • python3.6
  • tensorflow1.13

再说明一下对应的脚本与占用GPU程序路径

   - 用户目录
- UseGPU
- cifar-demo.py # 占用GPU程序
- mnist.npy # 手写字数据
- occupy.sh # 占用GPU的sh脚本

occupy.sh脚本内容:

#!/bin/bash
# 变量定义
index=0 # GPU号
free=1600 # 空闲的GPU显存量(MB)
sleeptime=1 # 查询间隔时间
while :
do
# 需要执行的获取占用GPU显存的命令
STRING=$(nvidia-smi -q -i $index | grep -m 1 'Free' | tr -cd '[0-9]')
# echo $STRING if [ "$STRING" -gt "$free" ]; then
# 当所占资源小于设定值时,执行相应程序
echo `date -d today +"%Y-%m-%d %H:%M:%S"`
echo "Find Free GPU:$index!!!"
# 运行对应程序 占TMD
$(CUDA_VISIBLE_DEVICES=$index python3 ./cifar-demo.py)
break
else
# 没找到,寻找下一块GPU
echo "GPU:$index Not satisfied!"
sleep $sleeptime # GPU号自增
let index++
if [ $index -ge 4 ]; then
index=0
fi
fi
done

cifar-demo.py对应程序

为tensorflow的官方教程:https://github.com/tensorflow/docs/tree/master/site/en/r1/tutorials

import numpy as np
import tensorflow as tf # set train epoch
epochs = 10000000 # suppose the data in the ./mnist.npz
try:
data = np.load('./mnist.npz')
x_train, y_train, x_test, y_test = data['x_train'], data['y_train'], data['x_test'], data['y_test'] # Normalized data
x_train, x_test = x_train / 255.0, x_test / 255.0
except Exception as e:
print('%s' % e) model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
]) model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']) # start train
model.fit(x_train, y_train, epochs=epochs)
model.evaluate(x_test, y_test)

mnist.npy 数据获取

  1. 下载地址:https://storage.googleapis.com/tensorflow/tf-keras-datasets/
  2. 网盘链接:链接:https://pan.baidu.com/s/1E_w_wJbvseU9I6kkShJahQ 提取码:5kdn

可有可无的一点点说明

occupy.sh脚本进行一点点说明:

  1. 查看指定GPU的所有信息:nvidia-smi -q -i 第几块GPU
  2. 查看指定GPU的显存空闲nvidia-smi -q -i 第几块GPU | grep "Free"
# 如,此处我查看第2块GPU的显存占用:
(base) zcc@e0c362370fb8:~$ nvidia-smi -q -i 1 | grep "Free"
Free : 15839 MiB # FB Memory Usage (以此为准)
Free : 16376 MiB # BAR1 Memory Usage # 考虑到上面有两个输出,
# FB Memory Usage (对比后发现是以此为准)
# Total : 16160 MiB
# Used : 321 MiB
# Free : 15839 MiB
# BAR1 Memory Usage
# Total : 16384 MiB
# Used : 8 MiB
# Free : 16376 MiB # 修改命令如下,只输出一条
(base) zcc@e0c362370fb8:~$ nvidia-smi -q -i 1 | grep -m 1 "Free"
Used : 15839 MiB # 最后对数字进行截取
(base) zcc@e0c362370fb8:~$ nvidia-smi -q -i 1 | grep -m 1 "Free" | tr -cd "[0-9]"
15839

参考:

https://blog.csdn.net/geng333abc/article/details/107481364

https://github.com/tensorflow/docs/tree/master/site/en/r1/tutorials

https://www.cnblogs.com/ypzhai/p/9997856.html

合理占用服务器空闲GPU[狗头]的更多相关文章

  1. thinkphp5.0助手函数占用服务器资源

    db('user')  默认情况下,每次请求都会重新连接数据库,这样会占用服务器资源 方法1.如果不想每次都重连可以这样 db("List",[],false) 方法2.还可以直接 ...

  2. 关于使用实验室服务器的GPU以及跑上TensorFlow代码

    连接服务器 Windows - XShell XFtp SSH 通过SSH来连接实验室的服务器 使用SSH连接已经不陌生了 github和OS课设都经常使用 目前使用 192.168.7.169 使用 ...

  3. SQL Server占用服务器内存过高

    SQL Server对服务器内存的使用策略是用多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,所以SQL Server 服务器内存往往会占用很高. 查看内存状态: DBCC M ...

  4. mac终端ssh连接服务器 空闲的时候 连接断开

    ssh_config详解(MAC OSX) 方法1:MAC客户端配置 配置“/etc/ssh/ssh_config”文件 “/etc/ssh/ssh_config” 文件是OpenSSH系统范围的配置 ...

  5. tensorflow 指定使用gpu处理,tensorflow占用多个GPU但只有一个在跑

    我们在刚使用tensorflow的过程中,会遇到这个问题,通常我们有多个gpu,但是 在通过nvidia-smi查看的时候,一般多个gpu的资源都被占满,但是只有一个gpu的GPU-Util 和 21 ...

  6. mysql占用服务器cpu过高的原因以及解决办法

    登陆Mysql: mysql -p<port> -u<user> -p<pwd> mysql> show processlist; show processl ...

  7. 低效sql语句执行缓慢引起的大量占用服务器的CPU问题处理 (优化心得)

    1> 2> 3> 4> 5>删除不良的执行计划后执行时间仍然有150s,这实在是太慢了,继续查看原sql代码,发现父表的关联条件放在了子查询里,这是应该避免的 调整原sq ...

  8. 解决TensorFlow程序无限制占用GPU

    今天遇到一个奇怪的现象,使用tensorflow-gpu的时候,出现内存超额~~如果我训练什么大型数据也就算了,关键我就写了一个y=W*x.......显示如下图所示: 程序如下: import te ...

  9. Tensorflow取消占用全部GPU

    参考:https://www.cnblogs.com/jiu0821/p/9501665.html Tensorflow默认是会占用全部的GPU,而有时候你根本不需要那么占用那么多GPU资源,这时候就 ...

随机推荐

  1. 20210720 noip21

    又是原题,写下题解吧 Median 首先时限有 2s(学校评测机太烂,加到 4s 了),可以放心地筛 \(1e7\) 个质数并算出 \(s_2\),然后问题变为类似滑动求中位数.发现 \(s_2\) ...

  2. Identity用户管理入门七(扩展用户字段)

    在实际使用时会发现很多字段在IdentityUser中并不存在,比如增加生日,地址等字段,可在模型类中实现自己的模型并继承自IdentityUser,需要修改的代码为以下类 一.新增模型 using ...

  3. noip模拟测试52

    这套题总体来说比较简单,但是有一些分数我没有拿到,先说T1,我10分钟左右打完了60分的暴力,然后就开始打表找规律,好像只有我去找了循环节,找规律找了一个多小时,到八点四十的时候我还没有正解做法,就直 ...

  4. ysoserial CommonsColletions4分析

    ysoserial CommonsColletions4分析 其实CC4就是 CC3前半部分和CC2后半部分 拼接组成的,没有什么新的知识点. 不过要注意的是,CC4和CC2一样需要在commons- ...

  5. 苹果ASA广告投放归因的接入

    前段时间,苹果终于在大陆区开放了应用商店的竞价广告.毫无疑问又开启了苹果应用导量的新玩法,各大厂商都紧跟脚步吃螃蟹.本篇讲解苹果广告中的归因部分. 苹果广告其实在海外已运行多年,而因为IDFA的政策变 ...

  6. Vue组件封装之无限滚动列表

    无限滚动列表:分为单步滚动和循环滚动两种方式 <template> <div class="box" :style="{width:widthX,hei ...

  7. 变着花样来接参,PHP中接收外部参数的方式

    对于PHP这样一个web语言来说,接参是非常重要的一个能力.毕竟从前端表单或异步请求传递上来的数据都要获取到才能进行正常的交互展示.当然,这也是所有能够进行web开发的语言的必备能力.今天我们就来看看 ...

  8. Git 访问慢 解决办法

    1. 查询Git最快的IP 通过 https://www.ipaddress.com/ 这个网站来获取当前github最新的ip分别获取以下两个域名的IP地址: 可以在访问git网站使用F12查询哪个 ...

  9. php安装imagick扩展

    下面/usr/local/php5是php的安装目录 安装imagickcd /usr/local/srcwget http://pecl.php.net/get/imagick-3.0.1.tgz  ...

  10. php 扫描url死链接

    * 从Packagist上搜索需要的包 https://packagist.org/ * 通过composer下载依赖包 composer require guzzlehttp/guzzle comp ...