语音处理 之 训练维护

后台执行,当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。用setsid好了。记录下id号就可以了。

用这个查看id:

ps -ef | grep python

同时用来查看CPU使用情况

id现在为49719

sudo kill id就可以了。

如何查看后台进程的输出?

Linux下可以试试用nohup命令来后台启动,nohup会把stdout的日志记录在nohup.out文件上面,下次想查看的时候可以用tail-f nohup.out进行查看。

在命令最后加上&符号,表示让这个进程到后台去执行,这样立刻返回到提示符状态,我们可以接着做下面的事。

最好输出重定向到日志,或者用screen之类的模拟交互终端。

nohup java -jar /usr/sbin/lb-agent.jar >>/var/log/lb-agent.log 2>&1 &
将jar执行的结果写入到lb-agent.log中
在命令最后加上&符号,表示让这个进程到后台去执行,这样立刻返回到提示符状态,我们可以接着做下面的事。如:command &。
这种“后台”进程在shell一直打开的情况下是没有问题的,如果我们关了shell窗口甚至退出ssh登录或vnc登录,那么进程自动就结束了。所以如果想退出窗口乃至退出登录仍然保持程序运行,再加上nohup,形如:nohup command 1>output 2>&1 &

查看内存使用情况

cat /proc/meminfo

整个内存才1GB吗。。。

查看显卡使用情况

nvidia-smi

显卡是由GPU和显存等组成的,显存和GPU的关系有点类似于内存和CPU的关系。我跑caffe代码的时候显存占得少,GPU占得多,师弟跑TensorFlow代码的时候,显存占得多,GPU占得少。

混合精度是指训练时在模型中同时使用 16 位和 32 位浮点类型,从而加快运行速度,减少内存使用的一种训练方法。通过让模型的某些部分保持使用 32 位类型以保持数值稳定性,可以缩短模型的单步用时,而在评估指标(如准确率)方面仍可以获得同等的训练效果。本文介绍如何使用实验性 Keras 混合精度 API 来加快模型速度。利用此 API 可以在现代 GPU 上将性能提高三倍以上,而在 TPU 上可以提高 60%。如今,大多数模型使用 float32 dtype,这种数据类型占用 32 位内存。但是,还有两种精度较低的 dtype,即 float16 和 bfloat16,它们都是占用 16 位内存。现代加速器使用 16 位 dtype 执行运算的速度更快,因为它们有执行 16 位计算的专用硬件,并且从内存中读取 16 位 dtype 的速度也更快。

NVIDIA GPU 使用 float16 执行运算的速度比使用 float32 快,而 TPU 使用 bfloat16 执行运算的速度也比使用 float32 快。因此,在这些设备上应尽可能使用精度较低的 dtype。但是,出于对数值的要求,为了让模型训练获得相同的质量,一些变量和计算仍需使用 float32。利用 Keras 混合精度 API,float16 或 bfloat16 可以与 float32 混合使用,从而既可以获得 float16/bfloat16 的性能优势,也可以获得 float32 的数值稳定性。

注:在本指南中,术语“数值稳定性”是指使用较低精度的 dtype(而不是较高精度的 dtype)对模型质量的影响。如果使用 float16 或 bfloat16 执行运算,则与使用 float32 执行运算相比,使用这些较低精度的 dtype 会导致模型获得的计算准确率或其他指标相对较低,那么我们就说这种运算“数值不稳定”。

张量处理单元(TPU)是一种定制化的 ASIC 芯片,它由谷歌从头设计,并专门用于机器学习工作负载。TPU 为谷歌的主要产品提供了计算支持,包括翻译、照片、搜索助理和 Gmail 等。Cloud TPU 将 TPU 作为可扩展的云计算资源,并为所有在 Google Cloud 上运行尖端 ML 模型的开发者与数据科学家提供计算资源。在 Google Next’18 中,我们宣布 TPU v2 现在已经得到用户的广泛使用,包括那些免费试用用户,而 TPU v3 目前已经发布了内部测试版。

Filling up shuffle buffer (this may take a while): 288967 of 310000

这个是用来打乱样本的,当样本比较大的时候需要比较长的时间。打乱样本主要靠cpu而不是gpu

内存占满,训练次数为0,loss值没出就自己跳出了,请问下有没有遇到同样问题的,好像是显存内存问题,但不知道具体的改法,求指导一下

就是数据集太大,显存溢出,要么换显卡,要么把数据大小降低,刚看见……

那怎么办?数据集太大,你只能将valid复制一份吧。

 

如果我们自己已经有了一个大的标注数据集,想要完成一个有监督模型的测试,那么通常使用均匀随机抽样的方式,将数据集划分为训练集、验证集、测试集,这三个集合不能有交集,常见的比例是8:1:1,当然比例是人为的。从这个角度来看,三个集合都是同分布的。如果是做比赛,官方只提供了一个标注的数据集(作为训练集)以及一个没有标注的测试集,那么我们做模型的时候,通常会人工从训练集中划分一个验证集出来。这时候我们通常不再划分一个测试集,可能的原因有两个:1、比赛方基本都很抠,训练集的样本本来就少;2、我们也没法保证要提交的测试集是否跟训练集完全同分布,因此再划分一个跟训练集同分布的测试集就没多大意义了。

也就是说,emmmm,就是这个意思了,意思有细微的差别,但就是这么意思了。而验证集基本是在每个epoch完成后,用来测试一下当前模型的准确率。因为验证集跟训练集没有交集,因此这个准确率是可靠的。那么为啥还需要一个测试集呢?从狭义来讲,验证集没有参与梯度下降的过程,也就是说是没有经过训练的;但从广义上来看,验证集却参与了一个“人工调参”的过程,我们根据验证集的结果调节了迭代数、调节了学习率等等,使得结果在验证集上最优。因此,我们也可以认为,验证集也参与了训练。我们还需要一个完全没有经过训练的集合,那就是测试集,我们既不用测试集梯度下降,也不用它来控制超参数,只是在模型最终训练完成后,用来测试一下最后准确率。其实这是一个无休止的过程。如果测试集准确率很差,那么我们还是会去调整模型的各种参数,这时候又可以认为测试集也参与训练了。好吧,我们可能还需要一个“测试测试集”,也许还需要“测试测试测试集”...

Your CPU supports instructions that this TensorFlow binary was not compiled

Advanced Vector Extensions (AVX, also known as Sandy Bridge New Extensions) 先进的矢量扩展(AVX,也称为桑迪桥新的扩展)是从英特尔和英特尔在2008年3月提出的微处理器的X86指令集架构的扩展,第一次由英特尔支持,在第2011季度和以后的SoeBoE桥处理器装运。AMD与推土机处理器航运在Q3 2011。AVX提供了新的特性、新的指令和新的编码方案。AVX2将大多数整数命令扩展为256位,并介绍了融合乘法累加(FMA)操作。AVX-512扩展AVX到512位支持使用一个新的EVEX前缀编码由英特尔提出的2013年7月,第一次支持英特尔与骑士着陆处理器,在2016装运。

这个意思其实是,您下载的TensorFlow太low了,根本没有通过兼容AVX来Compile。如果您下载源代码在该电脑上重新compile,就可以支持AVX。其实你的电脑是支持AVX的,只是编译好的TensorFlow不支持。

忽视就好了。

tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(log_device_placement=True))

既有GPU又有CPU信息是怎么回事,那就是gpu。

Efficient allreduce is not supported for 1 IndexedSlices

AllReduce是一种将所有process中的目标数组(即表示All),减少为单个数组(即表示Reduce)并将结果数组返回给所有process的操作。(比如将所有GPU上的梯度值,假设数组表示,合并并执行reduce操作成一个数组,并返回给所有GPU)

使用混合精度需要两个步骤:移植模型以在适当时候使用半精度数据类型;并使用损耗缩放来保留小的梯度值。我们(指英伟达)为 TensorFlow 引入了自动混合精度功能(现在可以在 1.x 中使用,很快也能在 2.x 中使用),这能通过英伟达的 Volta 和 Turing GPU 中的 Tensor Core 进行修改以提高训练性能。自动混合精度在 TensorFlow 中内部应用这两个步骤,在 NVIDIA 的 NGC 容器中使用单个环境变量,并在必要时实现更精细的控制。

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值