Neo's Blog

“生活就是个缓慢受锤的过程”, 只是有的人像铁, 有的人像牛,有的人像铁牛...


  • Home

  • About

  • Archives

  • Categories

  • Tags

Nvidia GPU风扇和电源显示ERR

Posted on 2019-04-11 | Edited on 2019-11-15 | In 随笔 / Writing
Symbols count in article: 1.2k | Reading time ≈ 1 mins.

问题

最近在Ubuntu上使用Nvidia GPU训练模型的时候,如果机器锁屏一段时间再打开的时候鼠标非常卡顿,或者说显示界面非常卡顿,使用nvidia-smi查看发现,训练模型的GPU没有问题,但是连接显示屏的GPU的风扇和电源报错:
电源和风扇报错

解决方案

自动风扇控制

在nvidia论坛有人给出了解决方案,即问题的根源可能是风扇转速不足使GPU过热导致的。

Read more »

docker警告:Your kernel does not support cgroup swap limit capabilities

Posted on 2019-04-10 | Edited on 2019-04-11 | In 工具 / Tools , 随笔 / Writing
Symbols count in article: 670 | Reading time ≈ 1 mins.

问题

运行docker时如果使用命令``出现如下警告:

1
WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.

解决方案

Read more »

swap和shm的区别

Posted on 2019-04-10 | Edited on 2019-04-11 | In 随笔 / Writing
Symbols count in article: 1.3k | Reading time ≈ 1 mins.

在使用docker的过程中,发现其有很多内存相关的命令,对其中的swap(交换内存)和shm(共享内存)尤其费解。于是查阅了一些资料,弄明白了二者的基本区别。

swap

  • 是一个文件,是使用硬盘空间的一部分作为物理内存来扩展RAM空间的
  • 虽然是物理硬盘的一部分,但是仍然属于RAM,并且属于易失性存储,重启机器会使数据丢失;
  • 空间大小在一般情况下,swap的空间大小设置为物理内存的两倍大小;
  • docker中的swap对应于物理机器linux系统中的swap

shm

Read more »

Docker中PyTorch的dataloader被终止:RuntimeError: DataLoader worker (pid 25564) is killed by signal: Aborted.

Posted on 2019-04-09 | Edited on 2019-04-11 | In 机器学习 / Machine Learning , 框架 / Framework
Symbols count in article: 1.3k | Reading time ≈ 1 mins.

问题

在Docker中运行PyTorch程序时,如果报错:

1
RuntimeError: DataLoader worker (pid 123456) is killed by signal: Aborted.

最可能的原因是,Docker的共享内存不足,解决办法是,要么改成更小的batchsize,要么退出docker后,重新运行docker并指定更大的共享内存。这个原因可以从docker的说明文档中可以看出:

1
--oom-kill-disable=false:Whether to disable OOM Killer for the container or not.

这个命令表示是否要kill超出内存的程序,因此解决上面的问题需要重新调整docker的运行内存。

docker的内存

docker中内存相关的命令

关于docker内存相关的命令:(docker中有很多与内存相关的命令,如kernel-memory,oom等,这里列出常用的几个)

Read more »

MacOS上使用conda init zsh后,每次启动提示(eval):61: = not found

Posted on 2019-04-09 | In 随笔 / Writing
Symbols count in article: 1.2k | Reading time ≈ 1 mins.

conda 4.6.9这个版本是问题很多啊…

问题1

首先最麻烦的一个问题是,运行完conda init zsh后,每次启动命令行的时候,会在开头报错:

1
(eval):61: = not found

起因是为了使用conda activate来切换环境,需要在命令行中对使用的shell执行conda init zsh (或者bash)。执行后,conda会在~/.zshrc(如果使用bash,则会是~/.bashrc)中将原来的export "/anaconda3/bin:$PATH"注释掉,而改成conda init相关的命令。

从说明上来看,是在conda init过程中,执行某个sh文件时执行eval命令时,出现了问题。查遍了网络,最后在GitHub issue中发现了问题的解决办法(可能是因为带有“=”的缘故,google一直搜索不到相关问题)。

问题根源在于,这个版本的conda的conda.sh文件第61行中,[]中判断语句使用了两个等号导致的。

1
if [ "${_CE_CONDA+x}" == "condax" ]; then

解决办法: 直接再MacOS的anaconda目录下搜索conda.sh修改其中的第61行,把两个等号改成一个即可。如果有多个conda.sh就都改掉也没有问题。

另一个简单粗暴的解决办法就是直接对conda进行降级:

1
conda install conda=4.6.8

问题2

问题2是在尝试解决问题1的过程中遇到的,也是conda特定版本的问题。对conda进行降级的时候发现, 会报一个关于qt包的错误:

1
2
3
4
5
6
7
ERROR conda.core.link:_execute(568): An error occurred while uninstalling package 'defaults::qt-5.9.7-h468cd18_1'.
PermissionError(1, 'Operation not permitted')
Attempting to roll back.

Rolling back transaction: done

[Errno 1] Operation not permitted: '/anaconda3/bin/Assistant.app/Contents/PkgInfo' -> '/anaconda3/bin/Assistant.app/Contents/PkgInfo.c~'

解决办法:直接去/anaconda3/pkgs中删除qt-5.9.7-h468cd18_1这个包即可。

参考:https://github.com/conda/conda/issues/8474
https://github.com/conda/conda/issues/8440

ubuntu无法取消粘滞边缘(sticky edge)解决办法

Posted on 2019-04-03 | Edited on 2019-04-10 | In 随笔 / Writing
Symbols count in article: 417 | Reading time ≈ 1 mins.

Ubuntu中使用双屏显示时,两屏之间的边缘默认是开启“粘滞边缘”的,即鼠标滑动慢的情况下,会卡在屏幕中间无法“穿越到”另一个屏幕。如果关闭“setting-display-sticky edge”仍然无法取消“粘滞边缘”功能的话,需要通过安装插件实现:

1
sudo apt-get install compizconfig-settings-manager

安装完成后,命令行中输入ccsm启动刚刚安装的插件,在左侧边栏找到“desktop”,然后选择“Ubuntu Unity Plugin”;然后使用左侧“Filter”搜索edge stop vlocity,将其设置成1即可。

参考:https://askubuntu.com/questions/462629/how-to-disable-sticky-edges-in-ubuntu-14-04-ubuntu-13-10-and-earlier-had-a-opti

Python3 错误UnicodeEncodeError: 'ascii' codec can't encode characters in ordinal not in range(128)

Posted on 2019-03-20 | In 随笔 / Writing
Symbols count in article: 1.3k | Reading time ≈ 1 mins.

问题

之前在使用Python2的时候,经常会遇到编码相关的错误,异常头疼。主要是因为Python2字符串设计上有一些固有的缺陷:

  • 使用 ASCII 码作为默认编码方式,对中文处理很不友好。
  • 把字符串的牵强地分为 unicode 和 str 两种类型,误导开发者

与Python2不同,Python3默认使用utf-8编码方式,并且Python3的字符主要由两种:str/byte。因此正常情况下,Python3很少出现编码问题,但是最近在使用docker的时候,又发生了两次编码错误问题,分别是因为:

  1. docker环境(或当前命令行环境的默认编码不是utf-8)
  2. 处理的文件默认编码不是utf-8,而是ascii

解决方法

问题1

针对这两个可能的原因,首先判断系统的(或者当前命令行环境的)编码:

1
2
3
4
#首先进入python环境
import sys
sys.stdout.encoding
>>> 'US-ASCII'

Read more »

深度学习数据不平衡问题解决方法

Posted on 2019-03-15 | In 机器学习 / Machine Learning
Symbols count in article: 121 | Reading time ≈ 1 mins.
  • 计算loss的时候,对不平衡的类别赋予相应的weight倾斜,例如让类别少的数据产生的loss在总的loss中所占的权重更大一点
  • dataloader时,对不平衡的数据(数据量少的数据)进行over sampling(饱和式采样?😂)

常用损失函数

Posted on 2019-03-14 | Edited on 2019-03-22 | In 机器学习 / Machine Learning
Symbols count in article: 2k | Reading time ≈ 2 mins.

常用损失函数

损失函数(loss function或cost function)是关于模型输出(predict)与标签(ground-truth)的函数,主要用于衡量在训练集(或验证集、测试集)上的效果。

1.均方误差损失函数 (MSE loss function)

损失函数定义如下:

很少用于分类问题(instance level / pixel level),主要是由于MSE对于错误输出过于关注(即错误标签和正确标签之间的误差会被平方操作放大),在分类问题中较难收敛.

Read more »

pytorch中的损失函数中的logits

Posted on 2019-03-11 | Edited on 2019-03-12 | In 机器学习 / Machine Learning , 框架 / Framework
Symbols count in article: 1.1k | Reading time ≈ 1 mins.

PyTorch(tensorflow类似)的损失函数中,有一个(类)损失函数名字中带了with_logits. 而这里的logits指的是,该损失函数已经内部自带了计算logit的操作,无需在传入给这个loss函数之前手动使用sigmoid/softmax将之前网络的输入映射到[0,1]之间.

Read more »
<i class="fa fa-angle-left" aria-label="Previous page"></i>1234…6<i class="fa fa-angle-right" aria-label="Next page"></i>
江前云后

江前云后

Interested in
Deep Learning & Computer Vision
56 posts
13 categories
23 tags
GitHub zhihu Weibo
© 2021 江前云后 | 48k | 43 mins.
Powered by Hexo v4.2.0
|
Theme – NexT.Pisces v7.0.1
|