文章目录
windows/ubuntu
Windows 10 启动盘
ubuntu 18.04 启动盘
nvidia cuda driver
ubuntu16.04安装NVIDIA驱动
安装方式 | 说明 |
---|---|
命令行安装 | 1. 查看GPU是否是支持cuda `lspci |
文件安装 【推荐】 | [下载指定版本驱动文件],例如:NVIDIA-Linux-x86_64-367.44.run 禁用nouveau并重启 1. 卸载nvidia旧驱动 sudo apt-get remove nvidia* 【【推荐】】2. 安装需要的包 sudo apt-get install dkms build-essential linux-headers-generic 3. 禁用nouveau内核驱动 sudo vim /etc/modprobe.d/blacklist.conf ubuntu 16.04默认安装驱动nouveau,和nvidia显卡驱动冲突。安装之前需要禁用nouveau。 4. 编辑blacklist.conf,插入以下内容,保存并退出 blacklist nouveau options nouveau modeset=0 5. 如果nouveau-kms.conf文件存在,添加以下内容 echo options nouveau modeset=0 sudo tee -a /etc/modprobe.d/nouveau-kms.conf 6. build新核 sudo update-initramfs -u 7. 重启 reboot 重启并安装 8. 如果提示the system is running in low-graphics mode,选择running in cosole,关闭当前窗口 9. 进入命令行界面 Ctrl+alt+F1 10. 验证nouveau是否已禁用 `lsmod |
问题 | 方案 |
---|---|
安装时问题 | 1. 安装驱动提示You appear to be running an X server 1. 执行sudo init 3再执行安装命令 2. Would you like to register the kernel module sources with DKMS?This will allow DKMS to auomatically build a new module,if you install a different kernel later 。No 3. 安装程序问你是否使用nv的xconfig文件,这里一点要选yes,否则在启动x-window时不会使用nvidia驱动 4. 如果出现循环登录问题,尝试安装时添加选项 sudo NVIDIA-Linux-x86_64-367.44.run --no-opengl-files 5. 集显独显切换有时会涉及到BIOS设置中的设置,例如VGApriority的onboard/offboard Ubuntu16.04安装NVIDIA驱动](https://blog.csdn.net/zhang970187013/article/details/81012845) Ubuntu16.04+Caffe+GTX1070+CUDA8.0+OpenCV3.2安装 |
安装编译问题 | 安装时“CC Version Check”提示版本不匹配。比如,为了安装cuda9.2将gcc降级到5.0,但是安装驱动440.82需要7.0(编译内核)。cd /usr/bin rm gcc sudo ln -s gcc-7 gcc |
驱动售后 | 1. the system is running in low-graphics mode 用run文件重装【谨记:别更新!】 2. Failed to initialize NVML: driver/library version mismatch `sudo dpkg --list |
conda
操作 | 说明 |
---|---|
下载安装anaconda | sh Anaconda2-5.2.0-Linux-x86_64.sh |
查看cuda版本 | conda list cuda |
查看cuda版本,[拷贝对应pytorch安装命令] | nvcc -V |
删除虚拟环境 | conda remove -n pt0.2 --all -y |
创建pytorch虚拟环境 | conda create -n pytorch1.1 python=3.5 -y· conda install pytorch torchvision cudatoolkit=9.0 -c pytorch conda install pytorch=0.4.1 cuda80 -c pytorch # 旧版本 |
查看torch版本 | conda list torch |
验证pytorch是否安装成功 | . activate pytorch1.1 python import torch torch.__version__ torch.cuda.is_available() True表示成功 |
创建TensorFlow-gpu环境 | 查看显卡驱动cuda版本对应表 conda安装 cat /proc/driver/nvidia/version conda create -n tf-gpu python=2.7 conda activate tf-gpu conda install cudatoolkit==8.0 conda install tensorflow-gpu pip安装 pip install tensorflow-gpu==1.4.0 |
验证TensorFlow是否安装成功 | . activate tf1.4 python import tensorflow as tf tf.version |
查看已安装环境 | conda env list conda info -e |
激活/退出环境 | source activate pytorch0.2.0 source deactivate pytorch0.2.0 |
重命名环境 | conda create -n pytorch0.2.0–clone tf1.8 conda remove -n pt0.2 --all -y |
实时监控GPU使用情况 | watch -n 1 nvidia-smi gpustat -i |
查询当前环境下cuda cudnn版本号 | conda list cudnn conda list cuda |
查询conda环境下的安装包 | conda list |
conda突然找不到了 | 查看~/.bashrc,更新一下,或者添加运行路径 终端提示会由yhr@ubuntu变成(base)yhr@ubuntu |
jupyter
操作 | 说明 |
---|---|
远程访问服务器 | 1. 安装python 2. 安装 anaconda 3. 安装 jupyter conda install jupyter 4. 生成配置文件 jupyter notebook --generate-config 5. 生成密钥 python from notebook.auth import passwd passwd() #输入新的登陆密码(本地访问的时候使用) #再次确认 #生成key,复制到配置文件中。 ubuntu终端中ctrl+shift+c复制,ctrl+shift+v粘贴 6. 修改配置文件 vim ~/.jupyter/jupyter_notebook_config.py c.NotebookApp.ip=‘0.0.0.0’ # 所有ip地址皆可访问 c.NotebookApp.password = 'sha:ce… # 密文key c.NotebookApp.open_browser = False # 禁止自动打开浏览器 c.NotebookApp.port =8888 # 指定端口,默认8888 7. 后台运行 nohup jupyter notebook & 后台运行并输出到空 nohup jupyter notebook >/dev/null 2>&1 & |
远程访问服务器中的conda虚拟环境 | 9. 进入虚拟环境 source activate pytorch1.1 10. 安装jupyter和ipykernel ① pip install jupyter ②pip install ipykernel 11. 配置ipykernel python -m ipykernel install --user --name pytorch1.0 --display-name "pytorch1.0" 12. 后台运行 nohup jupyter notebook & 参考:本地浏览器远程服务器上的jupyter notebook |
linux
命令 | 说明 |
---|---|
查找所有文件中的某字符串 | grep "/home/yhr/" filename.txt #字符串 文件名 grep -r "/home/yhr/" /home/ #递归查找目录下所有文件 |
批量重命名文件夹下的文件 | `ls |
查找文件夹“DogsVSCats” | find /home -name "DogsVSCats" -type d |
138创建用户 | sudo useradd -md /data2/yhr -m -s /bin/bash yhr sudo passwd yhr |
按文件名查找文件 | find / -name “texstudio*.tex/pdf” |
根据PID查看哪个用户使用哪个进程 | ps -eo pid,user,group,euser,egroup,cmd |
查找目录下的所有文件是否包含某字符串[只显示文件名] | `find . |
查找目录下的所有文件是否包含某字符串[只显示文件名] | grep -rn "ipv4" * -r 是递归查找 -n 是显示行号 * : 表示当前目录所有文件,也可以是某个文件名 |
替换所有文件中的某字符串 | ssed -i "s/std=c++11/std=c++14/g" xx.cpp sed -i "s/\/root/\/headless/g" /etc/passwd 批量替换 find . -type f -name "*.yaml" -exec sed -i "s/\/data\/ycf\/data\//\/home\/yhr\/data\//g" {} \; sed -i “s/CUB_200_2011/CUB/g” `grep ‘DATA_PATH’ -rl experiments/* ` |
统计当前目录下文件个数 | `find . -type f -print |
du命令(disk used) | du -h a.txt //查看文件夹大小`du –h dir |
scp命令 | scp yhr@210.30.96.138:/home/yhr/a.txt . scp a.txt yhr@210.30.96.138:/home/yhr/ 复制文件 scp local_file remote_username@remote_ip:remote_folder scp local_file remote_username@remote_ip:remote_file scp local_file remote_ip:remote_folder scp local_file remote_ip:remote_file 复制目录 scp -r local_folder remote_username@remote_ip:remote_folder scp -r local_folder remote_ip:remote_folder |
ps命令 | ps -ef #查看进程,常配合grep使用 |
tree命令 | 以树结构显示当前文件组织方式。 tree -d # 仅显示目录 tree -L n # 显示n层 tree -f # 显示完整路径 |
查找指定文件并删除 | ref `find . -name *.png |
latex
代码 | 效果 | |
---|---|---|
花体大写字母 | \mathcal {L} | loss符号
L
\mathcal {L}
L V \mathcal V V S \mathcal S S |
花体小写字母 | \ell | loss符号 ℓ \ell ℓ |
正体 | \rm {intC} \textbf x |
i
n
t
C
\rm {intC}
intC x \textbf x x |
多行公式对齐 | \begin{aligned} a &= b + c \ &= d + e + f \tag{4} \end{aligned} | a = b + c = d + e + f (4) \begin{aligned} a &= b + c \\ &= d + e + f \tag{4} \end{aligned} a=b+c=d+e+f(4) |
overleaf 参考文献引用方式 | \usepackage[backend=bibtex]{biblatex} \addbibresource{references.bib} 正文 \newpage \printbibliography | \bibliographystyle{neurips_2020}指定参考文献风格,提示invalid |
texstudio 参考文献引用方式 | \bibliographystyle{elsarticle-num} 正文 \bibliography{references} | \bibliographystyle{neurips_2020}是有效的 overleaf指定参考文献文件的方式无效。原因是[backend=bibtex]回去查找bbl文件格式。应该是overleaf和texstudio的编译环境不同。 |
期望 | 空心符号 \mathbb E | E \mathbb E E |
Dos
命令 | 说明 |
---|---|
查看IPv4地址 | `ipconfig /all |
查看文件夹/文件 | dir |
回到根目录 | cd\ |
进入E盘 | E: |
Vim
命令 | 说明 |
---|---|
行尾进入insert模式 | Shift+A #会在行尾插入一个字符 |
查找xxx字符串并高亮 | 普通模式下,光标在“print”上。Ctrl+# ,<==>?\<print\> |
窗口水平分割,并打开a.cpp | split a.cpp |
窗口垂直分割,并打开a.cpp | vsplit a.cpp |
窗口切换 | Ctrl + w |
移动光标 | [Ctrl]+[f] 屏幕[向下]移动一页// f – forward [Ctrl]+[b] 屏幕[向上]移动一页// b – backward [Ctrl]+[d] 屏幕[向下]移动半页// d – down [Ctrl]+[u] 屏幕[向上]移动半页// u – up |
移动到行首字符 | 0/Home |
移动到行末字符 | $/End |
移动到文档第一行 | gg |
移动到文档最后一行 | G |
移动到文档第n行 | nG <==> :n |
查找与替换 | 100到200行查找asde并替换成ASDE:100,200s/asde/ASDE/g |
所有行行首加4个空格 | :1,$s/^/ /g |
所有行查找word1替换为word2,且取代前确认提示 | :1,$s/word1/word2/g |
复制/剪切文档中的word1并粘贴在某处 | v l y/x p 依次解释:进入visual模式,移动光标,复制或剪切,粘贴 |
撤销和重做,重复 | u [Ctrl] + r |
VIM环境设定 | 高亮查询 :set hlsearch :set nohlsearch 自动缩进 :set autoindent :set noautoindent 自动备份 :set backup vim ~/.vimrc set hlsearch set backspace=2 set autoindent set ruler set showmode set nu set bg=dark syntax on |
语系编码转换 | 通过文本编辑器查看文件时出现乱码,主要原因是环境的语系编码和文件的编码不一致导致的。 比如,系统语系是简体中文(gb2312),文件语系是繁体中文(big5)。 1. 设置系统语系编码 LANG gb2312 2. 文件转换和系统一致 iconv --list iconv -f big5 -t gb2312 filename [-o newfile] 选项与参数 * --list 列出支持的语系* -f 原编码* -t 新编码* -o file 保留源文件 |
references
命令 | 说明 |
---|---|
中文参考文献-知网 | 例子:“采用自适应搜索范围的多介质立体匹配算法” 批量: 1)一个一个复制 2)“导出”到EndNote等,再处理 |
英文参考文献-GoogleScholar | 例子:“Imagenet classification with deep convolutional neural networks” 选择自己想要的格式 【小建议】 1. 录用未发表的,需要到会议网站上去找。比如CV 2. GoogleScholar的时候,查完一个文献,直接双击搜索框,不用X掉对话框。 |
知网论文下载 | 1. 输入网址 cnki.net 2. 机构登录 2.1 默认是登录的,右上角会显示,如下图 2.2 如果没登录,点击"登录",选择IP登录,如下图 3. 搜索硕士论文“基于卷积神经网络的行人性别识别方法研究”, 结果如下 4. 修改搜索选项为“题名”成功找到 4.1 默认搜索选项中没有“题名” 4.2 点击“学位论文”,选择搜索选项“题名”,找到 |
PyCharm
命令 | 说明 |
---|---|
学生免费使用pycharm专业版 | |
Pycharm配置远程调试 | 1.确保本地代码的改动已经同步到远程的服务器 2.在Pycharm中对指定的代码打断点 3. 使用debug模式启动代码 4. 访问远程服务器上的程序(如:远程服务是一个web服务,则需要访问远程的web访问地址)本地debug生效 要选对python解释器ssh://yhr@210.30.97.190:22/home/yhr/anaconda3/bin/python |
Can’t get remote credentials for deployment server yhr@210.30.97.190:22 pass | 红框中的/tmp/pycharm_project_526是系统自动生成的,不修改 |
PyCharm使用技巧及常用快捷键 | Step Into F7 Step Over F8 Step Out Shift+F8 |
server
命令 | 说明 |
---|---|
指定GPU运行程序 | CUDA_VISIBLE_DEVICES=0 python train.py CUDA_VISIBLE_DEVICES=0, 2, 5, 7 python train.py |
查看占用GPU的进程 | fuser -v /dev/nvidia* fuser -v /dev/nvidia7 |
解除显存占用 | fuser -k /dev/nvidia* |
screen命令 后台运行程序 | ssh ysh@210.30.96.138 # 连接服务器 screen -S zsl # 创建Session python train.py # 运行程序 Ctrl+a+d # 离开Session Ctrl+d # 结束session |
重新进入Session | ssh ysh@210.30.96.138 # 连接服务器 screen -ls # 查看所有Session screen -r zsl # 恢复Session screen -d -r test # 恢复Session(-d表示detach,处理session意外断开仍处于attached状态) |
nohup 命令 | nohup python train.py & |
添加用户 | sudo adduser tt adduser:自动创建主目录、系统shell版本,创建时输入用户密码。 sudo useradd -d /data/yhr -p yhr yhr useradd:需使用参数选项指定上述设置;如果不使用,则创建的用户无密码、无主目录、没有指定shell版本。 |
删除用户 | userdel -r 用户名 -r 选项表示在删除用户的同时删除用户的家目录。 |
查看磁盘剩余空间 | df -h |
服务器硬盘挂载190挂载硬盘 | fdisk -l # 查看 mkfs.ext4 /dev/sda # 格式化分区 echo “/dev/sda /data ext4 defaults 0 0” >> /etc/fstab # 开机启动挂载 mount -a #重新挂载所有分区 df-lh |
Linux下查看在线用户及用户进程 | who w finger users |
查询周期运行程序 | crontab -l |
挖矿查杀 | 查看所有自动程序 开启防火墙 kswapd0挖矿病毒查杀过程 |
查看磁盘空间 计算磁盘文件夹占用空间 | df -h du -sh test |
查看某个用户运行的程序,并按照时间排序输出 | `ps -ef --sort=start_time |
tensorboard
- 启动一个
tensorboard --logdir dir - 启动两个
tensorboard --logdir dir1 --host 210.30.97.111 --port 8899
tensorboard --logdir dir2 --host 210.30.97.111 --port 8898
torch cuda cudnn version
import torch
import torch.nn as nn
print(torch.__version__)
print(torch.version.cuda)
print(torch.backends.cudnn.version())
print(torch.cuda.get_device_name(0))
zip
压缩file.zip文件
zip -r file.zip code
解压file.zip到指定目录
unzip file.zip -d xxx
find 搜索路径 [选项] 搜索内容
-name: 按照文件名搜索;
-iname: 按照文件名搜索,不区分文件名大小;
-inum: 按照 inode 号搜索;
-type d:查找目录
-type f:查找普通文件
-type l:查找软链接文件
查找所有名为checkpoints的文件夹,并删除
find 搜索路径 【选项】 搜索内容 -exec 命令2 {} ;
tensorboard_logger
安装
pip install tensorboard_logger
示例代码
import numpy as np
import tensorboard_logger as tb_logger
if __name__ == '__main__':
# tensorboard instance
logger = tb_logger.Logger("./log", flush_secs=2)
for epoch in range(1, 1000 + 1):
loss = np.log(epoch);
train_acc = epoch/1000.0 * 100;
# tensorboard logger
logger.log_value('train_loss', loss, epoch) ## 注意此处loss是scalar,不能是tensor
logger.log_value('train_acc', train_acc, epoch)
- 生成日志文件
python test.py
- 服务器端,打开访问接口
tensorboard --logdir=./log --host=210.30.97.190
- 浏览器访问
210.30.96.190:6006