常用的命令

在civitai 用token下载模型
wget -O epiCRealismXL.safetensors "https://civitai.com/api/download/models/324088?&token=YOUR-TOKEN-HERE” --content-disposition
在Linux 系统中使用 kaggle 下载数据

参考此链接链接

kaggle datasets download <USER_NAME>/<DATASET_NAME>
在linux中下载huggingface上的模型

参考此链接

### 第一种方法
git lfs install
git clone git@hf.co:<MODEL ID> # example: git clone git@hf.co:bigscience/bloom

对于huggingface gated models: 参考此链接

### 第二种方法,针对huggingface gated models
#models
huggingface-cli download --resume-download THUDM/chatglm-6b --local-dir model
#dataset
huggingface-cli download --repo-type dataset --resume-download wikitext --local-dir wikitext
#可以添加 --local-dir-use-symlinks False 参数禁用文件软链接,这样下载路径下所见即所得,详细解释请见上面提到的教程。
python import 上上上级包

参考此链接链接

Linux 安装Jupyter notebook 并开启远程访问

参考此 链接

IPDB

使用IPDB调试代码, 参考这篇blog

Git

使用Git上传密码到github,参考这篇blog
使用git add 添加了大文件,参考这篇blog, 通过git rm --cached file以及git commit --amend -C HEAD 删除。

git config
git status

git 删除分支相关命令,参考这篇博客blog

在linux 中比较两个文件夹 diff dir1 dir2

参考此链接

tmux

关于tmux的使用,参考这篇blog

模型训练调参技巧

关于train_loss eval_loss 的各种情况,参考这篇blog
谷歌大脑的深度学习调参手册,参考这篇github

服务器

服务器连外网命令,curl ‘http://10.3.8.211/login’ --data “user=xxxx&pass=xxxxxxx&line=”

下载google drive files using wget: 使用方式链接

查看是谁在用:py3smi -l 4

https://github.com/fbcotter/py3nvml

服务器上下载或上传文件:python http.py ,然后在浏览器端使用http://服务器ip地址:8000访问即可

两个服务器间复制:scp -r username@ip:/home/work/Simnet/utils Simnet/

查看GPU使用情况 nvidia-smi
查看进程 ps -ef

删除当前目录所有文件: rm -f *

删除目录以a开头的所有文件:rm -rf /home/myuser/a*

查找替换:%s/foo/bar/gc
查找历史命令: history | grep (python)

json文件格式化: %!python -m json.tool

杀掉目前hold的所有程序:kill -9 jobs -ps
杀掉multi-gpu的程序

$ kill $(ps aux | grep YOUR_TRAINING_SCRIPT.py | grep -v grep | awk '{print $2}')

查找并杀掉僵尸进程:参考链接链接

ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9

tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件. tee file1

查找文件:find . -name simplify_dataset.py 在当前文件夹下查找名字为simplify_dataset.py的文件

查看当前文件占用内存情况:du -h --max-depth=1
查看当前user占用内存情况:du -sh ~
查看每个user占用内存情况:sudo du -sh /home/* | sort -rh
查看每个disk的使用率以及剩余容量:df -h

conda clean的使用方法 conda瘦身利器:
#删除从不使用的包
conda clean --packages
#删除tar包
conda clean --tarballs
#删除索引缓存、锁定文件、未使用过的包和tar包
conda clean -a
nohup命令输出到指定文件

nohup ./start.sh >output 2>&1 & output是输出文件

vim 尝试出来的命令

shift + 3# 可以实现光标单词的快速查找
只按 > .键可以实现光标所在行到最近的注释行之间所有行的注释

Tensor, numpy, list, Variable之间的互相转换
  1. CPU tensor转GPU tensor:
cpu_imgs.cuda()
  1. GPU tensor 转CPU tensor:
gpu_imgs.cpu()
  1. numpy转为CPU tensor:
torch.from_numpy( imgs )
  1. CPU tensor转为numpy数据:
cpu_imgs.numpy()
  1. note:GPU tensor不能直接转为numpy数组,必须先转到CPU tensor。
  2. 如果tensor是标量的话,可以直接使用 item() 函数(只能是标量)将值取出来:
print loss_output.item()
  1. 将numpy转换为Variable
sub_va = Variable(torch.from_numpy(sub_img))
  1. 将Variable张量转化为numpy
sub_np2 = sub_va.data.numpy()
Linux卸载工具
$pip install pip-autoremove
$pip-autoremove -h
Usage: pip-autoremove [OPTION]... [NAME]...

Options:
  --version     show program's version number and exit
  -h, --help    show this help message and exit
  -l, --list    list unused dependencies, but don't uninstall them.
  -L, --leaves  list leaves (packages which are not used by any others).
  -y, --yes     don't ask for confirmation of uninstall deletions.
Anaconda

Anaconda 常用命令

$ # 创建一个名为tensotflow的环境,指定Python版本是2.7(不用管是2.7.x,conda会为我们自动寻找2.7.x中的最新版本)
$ conda create --name tensotflow python=2.7  # 这里的--name可以简化为-n

$ source activate tensotflow  # 安装好后,使用activate激活某个环境
$ # 激活后,会发现terminal输入的地方多了tensotflow 的字样

$ # 此时,可以安装和操作一些包

$ source deactivate tensotflow   # 如果想返回普通环境,运行

$ conda remove --name tensotflow --all  # 删除一个已有的环境


$ # conda的包管理类似pip

$ conda install scipy  # conda安装scipy

$ conda list  # 查看已经安装的packages

$ conda list -n tensotflow   # 查看某个指定环境的已安装包

$ conda search numpy  # 查找package信息

$ conda install -n tensotflow numpy  # 安装某个指定环境的package
$ # 如果不用-n指定环境名称,则被安装在当前活跃环境,也可以通过-c指定通过某个channel安装

$ conda update -n tensotflow numpy  # 更新package

$ conda remove -n tensotflow numpy  # 删除package
Conda

pytorch和conda对应版本关系
点击这里
查看conda信息需要用到的命令:

which -a conda
conda info
conda config --show-sources
conda info --envs

安装固定版本和固定cuda版本的pytorch

conda install pytorch==1.4.0 cudatoolkit=10.0 -c pytorch

查看CUDA版本

#Method 1
cat /usr/local/cuda/version.txt
#Method 2
nvidia-smi
#Method 3
nvcc -V
#Method 4
ipython
import torch
torch.version.cuda

查看 cuDNN 版本

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

查看 torch安装的CUDA 和 cuDNN 版本

import torch
print(torch.__version__)

print(torch.version.cuda)
print(torch.backends.cudnn.version())

Conda降级pytorch版本或安装指定版本pytorch
如果你是使用conda包管理,你可以很容易实现版本降级,你只需要指定版本即可:

# 比如你想降级到以前的v0.1.10版本
conda install pytorch=0.1.10 -c soumith

查看python版本

python -V

查看conda版本

conda -V
Linux

查看一个文件详细信息 stat filename

vim

vim设置行号 set number
vim取消行号 set unnumber

循环读取文件末尾 tail -f filename

VIM 复制一个单词
1.光标移动到aaa的开头,按 v 按e 按y
2.光标移动到bbb的开头,按 v 按e 按p
也就说,快速选中一个单词,按v按e即可。

Vim 多行注释

  1. 首先按 esc 进入命令行模式下,按下 Ctrl + v ,进入列(也叫区块)模式;
  2. 在行首使用上下键选择需要注释的多行;
  3. 按下键盘(大写) “I” 键,进入插入模式;
  4. 然后输入注释符( “//”、“#” 等);
  5. 最后按下 “Esc” 键。

vim中多行注释和多行删除命令,这些命令也是经常用到的一些小技巧,可以大大提高工作效率

1.多行注释:
1). 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式;
2). 在行首使用上下键选择需要注释的多行;
3). 按下键盘(大写)“I”键,进入插入模式;
4). 然后输入注释符(“//”、“#”等);
5). 最后按下“Esc”键。 注:在按下esc键后,会稍等一会才会出现注释,不要着急~~时间很短的
2.删除多行注释:
1). 首先按esc进入命令行模式下,按下Ctrl + v, 进入列模式;
2). 选定要取消注释的多行;
3). 按下“x”或者“d”. 注意:如果是“//”注释,那需要执行两次该操作,如果是“#”注释,一次即可
3.多行删除

1).首先在命令模式下,输入“:set nu”显示行号;
2).通过行号确定你要删除的行; 3.命令输入“:32,65d”,回车键,32-65行就被删除了,很快捷吧
如果无意中删除错了,可以使用‘u’键恢复(命令模式下)

  1. 其他方法介绍:

法一:
单行删除,:1(待删除行)d
多行删除 ,:1,10d
法二:
光标所在行,dd
光标所在行以下的N行,Ndd
方法1:
光标放到第6行,
输入:2yy
光标放到第9行,
输入:p
此方法适合复制少量行文本的情况,复制第6行(包括)下面的2行数据,放到第9行下面。
方法2:
命令行模式下输入
6,9 co 12
复制第6行到第9行之间的内容到第12行后面。

光标移动

1.快速至当前行的行首;

  1. Home键; 2) 数字0; 3) 符号^;

2.快速至当前行的行尾使用$;

  1. End键; 2) 符号 3)n+符号 3)n+符号 表示当前行开始的第(n-1)行行尾;

3.快速至某行;

1)冒号(:)+行号+回车; 2)行号+gg; 3) 行号+G(注意大写);

4.快速至最后一行;

  1. 冒号(:)+$+回车; 2) 大写字母G; 3) shift+G(同2);

5.删除n个字符:

n+x
当前字符为第一个要删除的字符;

6.当前行新增一行内容;

一般模式下按大写字母O,则在当前行(即当前行内容之前)新增一行,且为插入模式(Insert Mod);

复制粘贴剪切
  1. 选定文本块。使用v进入可视模式,移动光标键选定内容。

  2. 复制的命令是y,即yank(提起) ,常用的命令如下:
    y 在使用v模式选定了某一块的时候,复制选定块到缓冲区用;
    yy 复制整行(nyy或者yny ,复制n行,n为数字);
    y^ 复制当前到行头的内容;
    y$ 复制当前到行尾的内容;
    yw 复制一个word (nyw或者ynw,复制n个word,n为数字);
    yG 复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾)

  3. 剪切的命令是d,即delete,d与y命令基本类似,所以两个命令用法一样,包括含有数字的用法.
    d 剪切选定块到缓冲区;
    dd 剪切整行
    d^ 剪切至行首
    d$ 剪切至行尾
    dw 剪切一个word
    dG 剪切至档尾

  4. 粘贴的命令式p,即put(放下)
    p 小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面
    P 大写P代表贴至游标前(上)
    整行的复制粘贴在游标的上(下)一行,非整行的复制则是粘贴在游标的前(后)

注:
在正则表达式中,^表示匹配字符串的开始位置,$表示匹配字符串的结束位置。
命令前面加数字表示重复的次数,加字母表示使用的缓冲区名称。使用英文句号"."可以重复上一个命令。
在复制粘贴时,另一组常用的命令是u(撤销操作),U(撤销某一行最近所有修改),Ctrl+R(重做),这些功能主要是vim中的,vi中略有差别

压缩与解压缩

tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)

.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName.bz
解压到固定文件夹 : tar jxvf FileName.tar.bz2 -C DirName
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName

Linux 压缩包解压后撤销(undo unzip & tar)

zip

zipinfo -1 path/xx.zip | xargs rm -rf

tar

tar -tf xx.tar | xargs rm -rf

tensorflow 转换成pytorch等价函数

tf.sign = torch.sign
tf.abs = torch.abs
tf.reduce_max = torch.max
tf.reduce_sum = torch.sum
tf.reduce_mean = torch.mean
length = tf.cast(length, tf.int32)与length=length.type(torch.IntTensor)相同
tf.shape() = torch.size()
tf.sequence_mask() == torch.masked_select()
tf.einsum() = torch.einsum()
tf.nn.softmax() = nn.Softmax()

Python常用命令

re 匹配一个或多个空格包括tab:\s+|\t+

arxiv中文域名: http://cn.arxiv.org/

导入上级目录:
在这里插入图片描述

pytorch

PyTorch默认使用从0开始的GPU,如果GPU0正在运行程序,需要指定其他GPU。

有如下两种方法来指定需要使用的GPU。

  1. 类似tensorflow指定GPU的方式,使用CUDA_VISIBLE_DEVICES。

1.1 直接终端中设定:

CUDA_VISIBLE_DEVICES=1 python my_script.py
1.2 python代码中设定:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "2"

见网址:http://www.cnblogs.com/darkknightzh/p/6591923.html

  1. 使用函数 set_device
import torch
torch.cuda.set_device(id)

该函数见 pytorch-master\torch\cuda_init_.py。

不过官方建议使用CUDA_VISIBLE_DEVICES,不建议使用 set_device 函数。
3. 还有一种自己发现的方法

device = torch.device("cuda:1" if torch.cuda.is_available() else "cpu")

通过这个方法可以直接将device指定在cuda1上

判断一个tensor是否在cuda上:

tensor.is_cuda

判断一个tensor在哪个GPU上:

device = tensor.device

查看当前在哪个GPU上

print("device:",torch.cuda.current_device())

Linux修改PATH环境变量的四种方式,每种方式有不同的权限。以添加mongodb server变量为列

1.修改临时型的PATH
查看PATH:echo P A T H 修改方法一: e x p o r t P A T H = / u s r / l o c a l / m o n g o d b / b i n : PATH 修改方法一:export PATH=/usr/local/mongodb/bin: PATH修改方法一:exportPATH=/usr/local/mongodb/bin:PATH
//配置完后可以通过echo $PATH查看配置结果。
生效方法:立即生效
有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置。
用户局限:仅对当前用户

2.修改当前用户的PATH
通过修改.bashrc文件:vim ~/.bashrc
//在最后一行添上:export PATH=/usr/local/mongodb/bin:$PATH
生效方法:(有以下两种)
1、关闭当前终端窗口,重新打开一个新终端窗口就能生效
2、输入“source ~/.bashrc”命令,立即生效
有效期限:永久有效
用户局限:仅对当前用户

3.修改所有用户的PATH
通过修改profile文件:vim /etc/profile/export PATH
//找到设置PATH的行,添加:
export PATH=/usr/local/mongodb/bin:$PATH
生效方法:系统重启
有效期限:永久有效
用户局限:对所有用户

4.修改系统环境的PATH
通过修改environment文件:vim /etc/environment
在PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"中加入入“:/usr/local/mongodb/bin”
生效方法:系统重启
有效期限:永久有效
用户局限:对所有用户

Docker使用方法
看这两个链接就可:
1.入门教程:Docker入门教程
2.一小时入门教程: 只要一小时,零基础入门Docker

numpy两个对象之间的相互转化
对于两个对象之间的相互转化,在两个对象的生成中就讲过了。这里再次总结下。

从array()函数到mat()函数用np.asmatrix()或np.mat()
从mat()函数到array()函数用np.asarray()

Scipy.sparse中coo_matrix、csc_matrix、csr_matrix、lil_matrix区别与特点
点此链接

Install Cuda with root

wget http://developer.download.nvidia.com/compute/cuda/7_0/Prod/local_installers/cuda_7.0.28_linux.run
chmod +x cuda_7.0.28_linux.run
./cuda_7.0.28_linux.run -extract=`pwd`/nvidia_installers
cd nvidia_installers
sudo ./NVIDIA-Linux-x86_64-346.46.run 
sudo modprobe nvidia
sudo ./cuda-linux64-rel-7.0.28-19326674.run 

Install Cuda without root

参考这个链接

查看linux系统信息

查看Linux内核版本信息

方法1:登陆Linux,在终端输入

cat /proc/version

方法2:登陆Linux,在终端输入

uname -a

方法3:登陆Linux,在终端输入

uname -r
查看Linux系统版本信息

方法1:登陆Linux,在终端输入

cat /etc/issue

方法2:登陆Linux,在终端输入

cat /etc/lsb-release

方法3:登陆Linux,在终端输入

lsb_release -a
创建一个全新的环境
#事先准备工作
#1.先通过以下命令找到当前cuda文件位置
dpkg -L nvidia-cuda-toolkit | grep version
#2.然后通过以下命令找到CUDA版本
#需要说明一点:安装时需要的cuda版本不是从nvidia-smi命令看到的CUDA的版本,
#而是从以下命令找到的CUDA的版本,因为安装pytorch跟系统的cuda版本无关,
#跟系统的驱动有关(具体的解释可以参考这个链接:https://www.cnblogs.com/Wanggcong/p/12625540.html)
cat /usr/lib/cuda/version.txt
#3.找到CUDA对应版本的pytorch,从以下链接找
https://pytorch.org/get-started/previous-versions/

1.安装anaconda
参考链接安装最新版本conda

https://docs.conda.io/projects/conda/en/latest/user-guide/install/linux.html

2.安装pytorch
根据准备工作中的第3步找到的对应的pytorch的版本,如下,安装pytorch

conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=10.2 -c pytorch

另一些reference

#如何查找一个NVIDIA CUDA version
https://www.cyberciti.biz/faq/how-to-find-the-nvidia-cuda-version/
#pytorch版本,cuda版本,系统cuda版本查询和对应关系
https://www.cnblogs.com/Wanggcong/p/12625540.html
#在一个全新Ubuntu环境中如何安装Pytorch 1.7, CUDA 11.1的环境
https://fmorenovr.medium.com/set-up-conda-environment-pytorch-1-7-cuda-11-1-96a8e93014cc

####### 查看内存占用情况的代码

import torch
import pynvml
import psutil
import objgraph

def get_avaliable_memory(device):
	if device==torch.device('cuda:0'):
		pynvml.nvmlInit()
		handle = pynvml.nvmlDeviceGetHandleByIndex(0)        # 0表示第一块显卡
		meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)
		ava_mem=round(meminfo.free/1024**2)
		print('current available video memory is' +' : '+ str(round(meminfo.free/1024**2)) +' MIB')

	elif device==torch.device('cpu'):
		mem = psutil.virtual_memory()
		print('current available memory is' +' : '+ str(round(mem.used/1024**2)) +' MIB')
		ava_mem=round(mem.used/1024**2)
	
	elif device==torch.device('cuda:1'):
		pynvml.nvmlInit()
		handle = pynvml.nvmlDeviceGetHandleByIndex(1)        # 0表示第一块显卡
		meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)
		ava_mem=round(meminfo.free/1024**2)
		print('current available video memory is' +' : '+ str(round(meminfo.free/1024**2)) +' MIB')
	elif device==torch.device('cuda:2'):
		pynvml.nvmlInit()
		handle = pynvml.nvmlDeviceGetHandleByIndex(2)        # 0表示第一块显卡
		meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)
		ava_mem=round(meminfo.free/1024**2)
		print('current available video memory is' +' : '+ str(round(meminfo.free/1024**2)) +' MIB')
	elif device==torch.device('cuda:3'):
		pynvml.nvmlInit()
		handle = pynvml.nvmlDeviceGetHandleByIndex(3)        # 0表示第一块显卡
		meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)
		ava_mem=round(meminfo.free/1024**2)
		print('current available video memory is' +' : '+ str(round(meminfo.free/1024**2)) +' MIB')

	return ava_mem

print("cuda0:", get_avaliable_memory(torch.device('cuda:0')))
print("cuda1:", get_avaliable_memory(torch.device('cuda:1')))
print("cuda2:", get_avaliable_memory(torch.device('cuda:2')))
print("cuda3:", get_avaliable_memory(torch.device('cuda:3')))
DistributedDataParallel

清空cuda内存:torch.cuda.empty_cache()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值