服务器炼丹常见操作笔记本(持续更新)

众所周知,炼丹需要强大的计算资源,通常都是在服务器(集群)上进行炼丹。
但是,对于新手来说,Linux命令不熟悉,远程登录软件不会用,python环境不会管理等等,分分钟劝退。曾经的我就是这样一个小小白,跳了许多坑,慢慢摸索着才上了道。
所以就写一篇博客,随手记录一下常见的一些操作,会一直更新,免得自己忘记。这些是我个人使用的一些操作或者解决方案,不是放之四海而皆准的,请酌情参考哈!
我的基本环境是:

  • CentOS
  • VSCode
  • Anaconda(python3.6.2)

文章目录

    • 配置远程登录
    • 服务器基本操作
          • 服务器结点间跳转
          • 查看服务器GPU使用情况
          • 查看CUDA版本
          • 删除文件
          • 统计文件个数
          • 将程序放到后台运行
    • Python及框架使用
          • 指定GPU训练模型
          • conda安装第三方库
          • conda管理虚拟环境
          • pytorch需要注意的细节

配置远程登录

远程我使用的是VSCode+Remote SSH拓展+OpenSSH
VSCode远程登录服务器

服务器基本操作

服务器结点间跳转
ssh node2    #当前结点跳转到结点node2
查看服务器GPU使用情况

在终端输入以下命令

nvidia-smi    
查看CUDA版本
#终端输入
nvcc -V
#或者
cat /usr/local/cuda/version.txt
删除文件

Linux下删除文件
rm [-选项] 文件或目录
-f:不做确认提示,忽略不存在的文件,不会出现任何警告
-i:进行确认提示,删除前询问是否确认删除
-r:递归删除,可以删除目录
-v:在删除文件之前打印文件名称

rm -f a.o

删除目录

rm -r dir  #dir是指定目录

删除特定开头的文件,只需要在特定开头后面加上*

rm -r P*  #删除以P开头的所有文件
统计文件个数
find -type f | wc -l 
#如果要统计文件夹个数,将f改成d即可
find -type d | wc -l
将程序放到后台运行
nohup python train.py >train.log 2>&1 &

将train.py运行输出的内容重定向到train.log中,最后一个&表示将程序放入后台运行。

Python及框架使用

指定GPU训练模型

在你的训练的python文件中加入,指定使用序号为2的GPU

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "2"  #2代表GPU的序号,可以是一个,也可以是'0,1,2,3'这样的多个
conda安装第三方库
conda install numpy     # 最基本的情况将numpy替换成要安装的库即可
conda install numpy==1.14.3   #安装指定的版本

安装指定较老版本的pytorch和torchvision,GPU版。

conda install pytorch==0.4.0 torchvision cuda92  #去掉cuda92安装cpu版本

安装最新的pytorch可以到pytorch官网直接安装。

conda install pytorch torchvision cudatoolkit=10.2 -c pytorch

对于安装cv2,conda好像没有???

#用
conda install opencv
#安装的包在import cv2时会报
ModuleNotFoundError: No module named 'cv2'

说明opencv这个包和cv2是不同的包。
然后我用

conda install opencv-python

发现在conda的channels里面没有找到这个包。

最后,使用pip安装opencv-python成功,能够使用cv2库。
所以安装cv2推荐使用pip

pip install opencv-python
conda管理虚拟环境

创建一个名为pytorch10,python版本为3.6的新环境

conda create -n pytorch10 python=3.6

查看你创建了多少个虚拟环境

conda env list   #或者
conda info -e 

激活你创建的环境,这样就可以使用你新建的环境了,可以正常滴安装需要的库。

conda activate pytorch10 #Linux Windows
source activate pytorch10  #Linux下,若上面命令不行,使用这个命令

退出虚拟环境

conda deactivate pytorch10  #退出pytorch10
source deactivate pytorch10  #Linux下

删除不想要的虚拟环境

conda remove -n pytorch10 --all

安装指定版本pytorch,GPU版本的pytorch要和CUDA版本对应。

# CUDA 9.2
conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=9.2 -c pytorch
# CUDA 10.0
conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0 -c pytorch
# CPU Only
conda install pytorch==1.2.0 torchvision==0.4.0 cpuonly -c pytorch
pytorch需要注意的细节

torchvision.transforms.ToTensor()

在加载数据的时候,经常需要用到这个类。其输入可以是PIL Image或者np.ndarray格式(包括cv2)。它会先将图像由HWC格式转换成CHW格式。

对于ndarray,如果输入的数据类型是int型,那么ToTensor之后输出的将会是[0,1]归一化的结果。如果输入的数据类型是 float的,其输出数据范围为[0,255]。很多时候我们的模型输入是归一化的,如果不注意这一点,有可能会使模型loss很大,甚至出现nan。

>>> from torchvision import transforms
>>> import torch
>>> import numpy as np
>>> transform = transforms.Compose([transforms.ToTensor()])
>>>#整型
>>> img1 = np.array([[1,2,3],[4,5,6]], dtype=np.uint8)
>>>#float型
>>> img2 = np.array([[1,2,3],[4,5,6]], dtype=np.float32)
>>>
>>> img1 = transform(img1)
>>> img1     #其数据范围[0-1]
tensor([[[0.0039, 0.0078, 0.0118],
         [0.0157, 0.0196, 0.0235]]])
>>>
>>> img2 = transform(img2)
>>> img2 #其数据范围[0-255.]
tensor([[[1., 2., 3.],
         [4., 5., 6.]]])
>>>   

对于PILImage转化的Tensor,其数据类型是torch.FloatTensor。具体参考博文1、博文2。

THCudaCheck FAIL file=/opt/conda/conda-bld/pytorch_1579022034529/work/aten/src/THC/THCGeneral.cpp line=313 error=98 : invalid device function

新版本pytorch运行旧版本的代码时遇到的问题,我的解决方案是将cuda从9.2更新到10.1 。不知道大家还有什么好办法??
解决方案
To Be Continue…

你可能感兴趣的:(C\C++\Linux,pytorch,python,python,anaconda,centos,linux)