cabbage

cabbage

菜鸟写给小白的教程

0%

哈哈

安装pytorch

(我创立了一个python3.9的环境叫p3.9g),接下来我们要在该环境中配置pytorch

pytorch官网中可以找到对应CUDA10.0版本的pytorch安装命令

然后在终端直接输入该命令conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0 -c pytorch就可以。但是你会发现速度极慢,上图!这大概是我等了一个多小时的结果吧。

解决的办法就是直接去官网手动下载包了。注意要下载两个,分别是torch和torchvision。文件名写出了pytorch版本号和python版本号。

pytorch 离线.whl包官方下载地址:

https://download.pytorch.org/whl/torch_stable.html

记录一下安装Pytorch和cuda的踩坑经历 - 知乎 (zhihu.com)

这里顺便解释一下上图中文件的命名规则(自己推测的,如有不对欢迎纠正)。

  1. 最前面的’cu113’指的是支持11.3版本的cuda,同理’cu101’就是支持10.3版本的cuda。看到的最低的cuda版本是10.0,低于10.0版本cuda对应的pytorch安装包可能存放在其他地方,或者不提供支持了。如果是’cpu’则说明是cpu版本的包,不适配gpu。
  2. cuda版本号后的’/‘和’%’之间的是包的内容和版本,比如torch-1.10.0就是1.10.0版本的torch,这个很容易理解。
  3. 再往后的’2B’没猜出来是什么意思,可能是to B?
  4. 紧接着的’cu113’和前面是一个意思,表示支持的cuda版本,’cp3x’则表示支持的Python版本是3.x,如果是由于我安装的是Python 3.9.5,因此我选择的是cp39的包。
  5. 最后面的’Linux_x86_64’和’win_amd64’就很简单了,Linux版本就选前一个,Windows版本就选后一个,MacOS的就不知道了,可能也是后一个(不负责任的瞎猜)。

下载到本地后上传至服务器。然后在虚拟环境中进入到存放目录,分别pip install一下就可

nohup

(7条消息) ubuntu nohup命令_selous的博客-CSDN博客_用nohuo命令跑的代码速度很慢

CUDA_VISIBLE_DEVICES=0 nohup python -u main.py>log.txt 2>&1 &

#注意CUDA_VISIBLE_DEVICES在nohup前面

哈哈

cuda

选好版本(重要

综合考虑,谋定而后动

与显卡驱动

命令行输入nvidia-smi

显示Driver Version是驱动的版本,CUDA Version是当前驱动支持的最高版本

之后可以根据英伟达官网上的对照表选择CUDA的版本 【CUDA Toolkit Documentation

image-20230322150503958

与pytorch

版本对照图如下:

image-20230322145005507

一般来说高版本的pytorch能兼容低版本cuda

再通俗点,就是pytorch版本选高了没事;但是低了,就只能再降低cuda版本了

ps:官方推荐的cuda版本为10.2和11.3,这两种 cuda 支持大多数的 pytorch 版本。

不过一般人都是根据cuda装pytorch,谁没事指定pytorch版本反装cuda啊,哦是复现baseline啊,那没事了

进入虚拟环境中

(我创立了一个python3.9的环境叫p3.9g),接下来我们要在该环境中配置pytorch

下载与安装

将下载好的文件执行以下操作:

先将安装包复制到服务器上,能找得到的地方。

然后进入到该目录下,使用chmod 755 cuda_10.2.89_440.33.01_linux.run更改文件的执行权限。

由于我们不是管理员用户,因此无法使用sudo安装,因此直接执行以下命令即可 sh cuda_10.2.89_440.33.01_linux.run

命令行输入 nvcc -V 查看cuda版本,如果符合预期,则安装成功

非root用户与软连接切换

cudnn

很简单

1.安装对应的cudnn。根据cuda版本选择对应的cudnn进行安装

2.将解压后的lib和include这两个目录拷贝到cuda的对应bin和include目录下,即是所谓插入式设计,把cuDNN数据库添加CUDA里,cuDNN是CUDA的扩展计算库,不会对CUDA造成其他影响。

cp -r ./lib/* /homeB/liangxiaoyu/.local/cuda-11.3/bin/

cp -r ./include/* /homeB/liangxiaoyu/.local/cuda-11.3/include/

隔了好久,太难写了

anaconda

安装

直接下载可能下载失败,或者太慢了,所以选择本地下载后上传

1.下载安装包

可以选择在官网下载,上传到服务器

2.安装

1
bash /public/software/Anaconda3-2022.10-Linux-x86_64.sh

一路enter+yes,接受licence、指定安装路径和init之后安装完成

anaconda在linux下默认安装在文件夹./anaconda3 ,如果安装过程中出现任何问题,删除anaconda3文件夹即可重新开始

简单使用conda

创建环境

删除环境

环境列表

设置默认环境

安装完conda后,进入终端显示(base)

方法一:

每次在命令行通过conda deactivate退出base环境回到系统自带的环境

方法二:

通过配置auto_activate_base关闭自动进入conda基础环境:

conda config --set auto_activate_base false

想要重新开启就设为true就行了

conda config --set auto_activate_base true

修改下载源

复制环境依赖

Linux-Anaconda安装和虚拟环境配置 - 知乎 (zhihu.com)

这个方法一般是在复现相同环境时使用,一键快捷省心。例如更换服务器、复现git开源工程等。

①conda

conda导出已有的环境,保存在myenv.yaml文件中。

conda env export > myenv.yaml

根据yaml文件导入并安装环境

conda env create -f myenv.yaml

注:.yaml文件移植过来的环境只是原来环境里用conda install命令安装的包,pip安装的库可能不会移植过来,需要重新安装。

②pip

把环境中的依赖写入 requirement.txt 中

pip freeze >requirements.txt

安装环境依赖

pip install -r requirement.txt

1.hexo new

当我们使用命令 hexo new "title" 创建文章时,Hexo 会根据 /scaffolds/post.md 对新文章进行初始化

换言之,/scaffolds/post.md 就是新文章的 模板,所以我们可以修改它来适应自己的写作习惯

每次生成后头部

--- title: {{ title }} date: {{ date }} tags: categories: ---

categoriestags分别是分类与标签

以tags为例语法是tags: [tag1,tag2,tag3...tagn]

categories: category

分类和标签需要区别一下,分类具有顺序性和层次性;而标签没有顺序和层次。

2.精简首页显示

在利用 Hexo 框架搭建的博客网站中,首页会显示文章的内容,且默认显示文章的全部内容

如果当文章太长的时候就会显得十分冗余,所以我们有必要对其进行精简

这时,我们只需在文章中使用 <!--more--> 标志即可,表示只会显示标志前面的内容

3.在Hexo中对文章md文件分类

https://blog.csdn.net/maosidiaoxian/article/details/85220394

4.others

https://blog.csdn.net/sinat_37781304/article/details/82729029

next

https://tding.top/archives/42c38b10.html

https://tding.top/archives/2bd6d82.html

https://www.cnblogs.com/wsmrzx/p/9439470.html

git

https://blog.csdn.net/blbyu/article/details/126700179

https://blog.csdn.net/blbyu/article/details/126704948

5.yufa

https://blog.csdn.net/Sakura_Logic/article/details/103980420

https://www.cnblogs.com/wsmrzx/p/9439490.html

高级

https://blog.csdn.net/qq_33699981/article/details/72716951

1.添加Github丝带或者角标-ok

首先先点击这里或者这里挑选自己喜欢的样式,并复制代码。

 打开themes/next/layout/_layout.swig文件,在<header></header>之前添加代码,并把href改为你的博客地址

https://zhuanlan.zhihu.com/p/409427566

2.添加RSS

5. 修改文章内链接文本样式

7. 在每篇文章末尾统一添加“本文结束”标记

9. 博文压缩

11. 侧边栏社交小图标设置ok

https://blog.csdn.net/wangqingchuan92/article/details/116223408

通过修改enableicons_only实现对图标的以及图标旁标签文字的显示及隐藏功能,修改transition实现是否显示过渡效果功能。

12. 主页文章添加阴影效果

13. 在网站底部加上访问量ok

18. 实现统计功能

22. 隐藏网页底部powered By Hexo / 强力驱动

.

24. 文章加密访问

26. 博文置顶

27. 修改字体大小

https://blog.csdn.net/Z_Z_W_/article/details/97617436

建立阅读排行榜

新建一个阅读排行榜界面,用于显示本站文章的阅读排行榜,基于lencloud进行统计

https://zhuanlan.zhihu.com/p/55796365

Valine是国内的一款极简风格的评论软件,首先进入LeanCloud注册,然后在控制台随便创建一个项目后,获取密钥:

7. 添加lazyload

lazylod可以在用户不查看的时候,不加载相关部分,从而提升网站加载速度,设置方法同上:

9.添加站内搜索

Next集成了站内搜索功能,可先安装依赖:

10.添加百度谷歌收录

要想让我们的博客被百度、谷歌等搜索引擎索引到,需要提交我们的域名,谷歌很快就能收录,但是百度要一两个月,具体步骤如下:

13.增加文章置顶功能

修改 hero-generator-index 插件,把文件:node_modules/hexo-generator-index/lib/generator.js 内的代码替换为:

https://blog.csdn.net/weixin_42608550/article/details/87876529

评论系统

NexT原生支持多说、Disqus、hypercomments等多种评论系统。我选择了Disqus。

方法也非常简单。直接去Disqus注册,注册完了在配置的时候会给你一个名为shortname的ID,将这个ID填在配置文件里即可。

评论系统

因为多说已经停止服务了,最开始看到有人说Disqus得翻墙,就选了一个韩国的评论服务,叫来必力,但事实证明墙外就没有稳定的服务,在我挂VPN的情况下也要加载好半天,后来就还是换成了Disqus,具体配置方法看前文。

统计文章字数和阅读时间

NexT 主题默认已经集成了文章【字数统计】、【阅读时长】统计功能,如果我们需要使用,只需要在主题配置文件 _config.yml 中打开 wordcount 统计功能即可。如下所示:

一个卡跑的好慢,看着剩下的7张3090陷入沉思,计算力就是财富,对于一个刚入门的小白,又该如何利用分布式来加速你的训练呢?
本教程使用DDP框架
想使用其他框架比如DP,multiprossing之类的可以去其他地方找资料

介绍

为什么使用分布式训练

第一种是模型在一块GPU上放不下,两块或多块GPU上就能运行完整的模型(如早期的AlexNet)

第二种是多块GPU并行计算可以达到加速训练的效果

不同方式

nn.DataParallel单进程控制多 GPU

torch.distributed 加速并行训练

使用 torch.multiprocessing 取代启动器

使用 apex 再加速

  • DataParallel是单进程多线程的,仅仅能工作在单机中。而DistributedDataParallel是多进程的,可以工作在单机或多机器中。
  • DataParallel通常会慢于DistributedDataParallel。所以目前主流的方法是DistributedDataParallel。

ddp使用方法

启动

pytorch 为我们提供了 torch.distributed.launch 启动器,用于在命令行分布式地执行 python 文件。

虽然现在建议用run。但是好多论文sota都用的launch,也不是不能用

1
CUDA_VISIBLE_DEVICES=0,1,2 python -m torch.distributed.launch --nproc_per_node=3 main.py

手动使用 torch.multiprocessing 进行多进程控制。绕开 torch.distributed.launch 自动控制开启和退出进程的一些小毛病

流程

启动器会将当前进程的index 参数传递给程序

使用 init_process_group 设置GPU 之间通信使用的后端和端口

包装数据集

包装模型

1
optimizer

新人如何debug呢,本地我们都会,那么vscode远程到服务器之后怎么办呢?

print大法好(x

vscode和pycharm,Jupyter Notebook不一样,区别我们以后再说
vscode他的debug需要我们配置一些东西,不难,但是网上没有很系统的教程

下面请看我一点一点讲

两种方式

A.下载包pdb(python debugger简称)

安装ipdb:pip install ipdb

在xxx.py文件中在需要中断的地方插入代码进行debug

个人并不建议使用,感觉很麻烦,而且破坏了程序源代码的完整性,改来改去就晕了。

B.使用vscode本身的debug(推荐)

使用vscode进行一些json文件设置,让我们在远程连接服务器与在本地上一样可以轻松调试

1.生成配置文件

launch.json文件存放在你项目的根目录(workspace)的.vscode文件夹中

我们先在你工作区下找到.vscode文件夹,这里往往会有一个叫launch.json的文件

没有的话点击debug创建一个,教程如下

参考:https://blog.csdn.net/qq_16587307/article/details/106593867

2.编写配置文件

强烈建议去看官方文档https://code.visualstudio.com/docs/editor/debugging

编写配置文件的一些参数和注释,并在后面给出我的配置文件供参考

必须参数

  • “type”:是你用的debugger类型。我们这里用python调试器
  • “request:”调试的模式。launch调试新启动进程,attach调试运行中进程。我们这里用launch
  • “name”:是你配置的名字,随便取。run debug的时候点你配置文件的名字

可选参数(通用)

presentation…

可选参数(大部分调试器支持)

”program:“ 在启动调试器的时候选择要执行的文件地址
“args”:传递给program调试的参数,和命令行输入效果是一样的,搭配argparse使用
”env“环境变量,分布式的时候用哪个卡
”cwd“:工作目录
”port“:当attach一个正在运行的程序时的端口号
“console“:使用哪种控制台,例如integratedTerminal, or externalTerminal

变量替换

**${workspaceFolder}:**给出工作区(workspace)文件夹的根路径

${file}: 在活动编辑器中打开的文件

${env:name}: ’Name‘的环境变量

3.我的配置文件

照抄即可,只需替换一下 “python”: 用你python解释器位置,剩下几乎不用改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
// 我的工作区在~/23w0323 所以配置文件也在这个下面的.vscode
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387

"version": "0.2.0",
"configurations": [

{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"python": "/homeB/liangxiaoyu/anaconda3/envs/p3.9g/bin/python", // 你python解释器位置
"console": "integratedTerminal",
"cwd": "${fileDirname}", // 主要是这个修改为文件所在目录,不写就默认是工作区根目录
"justMyCode": true,//如果需要进入第三方库进行debug,需要设置justMyCode为false
"args": [
"--lr", "0.4",
"--n_epochs", "30",
"--net", "vit",
], //传入的参数,搭配argparse一起用,
}
]
}

4.然后运行就可以愉快debug了

完结撒花,有不懂的欢迎评论交流

vscode连接远程服务器

ssh-remote

vscode下载ssh插件并连接的教程已经有很多了,例如:

https://zhuanlan.zhihu.com/p/470592903

但是一般会在安装过程遇到问题

问题:

vscode卡在Setting up SSH Host XX:Copying VS Code Server to host with scp

本以为等一下就好了,结果十几分钟还没好

原因:

远程服务器不能连外网,home/.vscode-server/bin/commit_id/vscode-servlet.tar.gz 没有下载下来(注意你路径,一般是在你自己根目录下)

commit_id是一串数字,很重要,先记下来之后要用

解决办法:

我用自己电脑手动下载,然后再上传到服务器
1.进行下载vscode-servlet.tar.gz。通过下面的连接进行下载

1
https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stable

注意把:${commit_id}替换成你的id

比如

1
https://update.code.visualstudio.com/commit:123456789/server-linux-x64/stable

3.运行下面这行命令。把 /home/.vscode-server/bin目录下的东西删除干净

(注意你路径,一般是在你自己根目录下)

1
rm /home/.vscode-server/bin/* -rf

4.将下载好的压缩包vscode-server-linux-x64.tar.gz放在 /home/.vscode-server/bin目录下
5.运行下面这三行命令

1
2
3
4
5
6
cd /home/.vscode-server/bin 
移动到目录
tar -zxf vscode-server-linux-x64.tar.gz
解压
mv vscode-server-linux-x64 ${commit_id}
改名,其中${commit_id}需要替换成之前记下来的commit_id.

6.重新打开vscode就ok了~