机器学习服务器使用一些命令记录

王 茂南 2019年6月11日08:09:55
评论
2865字阅读9分33秒
摘要这里会记录一些自己在使用服务器的时候的一些命令,方便查询。在实际跑的时候会使用到这些命令。

前言

这里会记录一些自己在使用服务器的时候的一些命令,方便查询。

服务器环境问题

Jupyter Notebook远程

  1. jupyter notebook --ip='IP地址' --NotebookApp.token='' --NotebookApp.password=''

本地浏览器打开jupyter notebook

有的时候我们不小心关闭了浏览器上的jupyter notebook的tab标签, 我们只需要输入下面的地址既可以再次打开。

  1. http://localhost:8888/tree

查看显卡使用情况

  1. nvidia-smi
机器学习服务器使用一些命令记录

查看cuda版本

目前可以直接使用 nvidia-smi 来查看 CUDA 版本,如下图所示(下面的两个方法是之前使用的)。

机器学习服务器使用一些命令记录

我们可以搜索一下version.txt文件来查看cuda的版本.

  1. find / -name version.txt -type f

或者我们可以通过安装的库来查看cuda的版本. 可以通过torch.version.cuda来进行查看.

机器学习服务器使用一些命令记录

结束进程(释放cuda memory)

可以查找所有的python的进程.

  1. ps -ef | grep python
  1. [root@localhost test6]# ps -ef|grep ssh
  2. root      2720     1  0 Nov02 ?        00:00:00 /usr/sbin/sshd
  3. root     17394  2720  0 14:58 ?        00:00:00 sshd: root@pts/0
  4. root     17465 17398  0 15:57 pts/0    00:00:00 grep ssh

接着根据对应的PID进行kill即可.

  1. kill -9 PID

解决ssh登录慢

如下进行文件的修改

  1. vim /etc/ssh/sshd_config

修改下面的两行,均改为no即可。

  1. UseDNS no
  2. GSSAPIAuthentication no

接着重启服务,再次尝试,会发现快了很多。

  1. service sshd restart

python虚拟环境

  1. source activate tf-gpu

防火墙策略

有的时候我们需要关闭服务器的默认的防火墙来保证连接.

  1. 关闭防火墙 systemctl stop firewalld.service
  2. 配置开机不自启动防火墙 systemctl disable firewalld.service
  3. 查看防火墙状态 systemctl status firewalld.service
  4. 允许TCP的8080端口访问
  5. firewall-cmd --permanent --zone=public --add-port=8080/tcp
  6. 开启防火墙 systemctl start firewalld.service
  7. 配置开机不自启动防火墙 systemctl enable firewalld.service

 

服务器跑脚本一些注意事项

上面是关于一些服务器的环境的问题, 这里介绍一下关于跑脚本的时候要注意的一些问题.

程序后台运行

大部分情况下, 我们需要程序在后台运行, 也就是关闭终端之后程序不会断掉, 我们可以使用以下的方式进行操作. 注意这里结尾需要加上 &,这样才可以在后台运行。

  1. $ nohup python python_script.py > my_output.log &
  2. $ tail -f my_output.log

但是如果在 Python 中使用 print,则不能在 log 中马上看到消息。这是因为 python 的输出有缓冲。我们可以在运行中加入参数 -u 使得可以马上显示。

  1. nohup python -u test.py>tt.log>&1 &

使用top命令查看正在执行的程序.

参考链接:

记录每一个Epoch的时间

一般情况下, 我会将每一个epoch运行的时间保存下来, 方便查看程序运行的情况, 是否还在运行, 以及运行一个epoch需要多久的时间.

  1. from datetime import date,datetime
  2. t = datetime.now() #获取现在的时间

使用Log保存为日志

通常情况下, 会使用logging进行日志的保存, 这样程序运行结束之后也可以进行结果的查看.

  1. import logging
  2. # 将日志保存到文件
  3. logging.basicConfig(filename='logger.log',level=logging.INFO)
  4. # 进行日志的输出
  5. logging.info('Time {}, Epoch [{}/{}], Step [{}/{}]'.format(t, epoch, num_epochs, i+1, total_step))

保存终端输入到日志

除了使用上面的 logging 模块之外,我们可以直接将终端上的输出保存在日志中(例如 print 的输出)。我们使用 script 来实现。

script 是大多数 Linux 产品软件包的一部分。 script 记录会话的一切内容:你输入的内容和你看到的内容。它甚至记录颜色;因此如果你的命令提示符或程序输出中包含颜色,script将记录它。

要使用script,在终端中输入以下命令:

  1. script

默认情况下,它向当前目录的文件中写入内容。然后,你输入的一切内容都被记录到那个文件中。要往另一个文件中记录日志,使用下面的命令:

  1. script /path/to/file

完成记录后,输入 exit 退出。这个命令将关闭 script 会话并保存文件。现在你可以使用cat或其它任何程序来检查日志文件。

参考资料,Ubuntu下将终端输出保存为log日志

每一个Epoch保存模型

这个需要在每一次epoch结束之后, 我们进行保存即可.

  1. torch.save(G.state_dict(), './models/G.ckpt')

 

Windows上的一些注意事项

Windows查看CUDA版本

使用下面命令查看Windows下CUDA的版本.

  1. nvcc --version

 

Pytorch安装问题-64位Python

如果出现如下的报错:

  1. ERROR: Could not find a version that satisfies the requirement torch==1.4.0+cpu (from versions: 0.1.2, 0.1.2.post1, 0.1.2.post2)
  2. ERROR: No matching distribution found for torch==1.4.0+cpu

我们需要重新安装Python, 需要安装64位的. (Are you guys using x64 Python? We don't provide binaries for x86 python distributions.)

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2019年6月11日08:09:55
  • 转载请务必保留本文链接:https://mathpretty.com/10580.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: