linux环境开发

在服务器中,通过代码读取数据集data,并将数据集data加载到cpu的内存中. 再通过data.cuda()命令将数据集从cpu 传到gpu运行. gpu上开始训练. 模型训练的结果(如权重参数等) 也是存放在gpu中, 再通过.cpu()命令将模型输出结果放到cpu内存中. 最后将服务器cpu内存的数据copy到本地win即可.
3090
有24个G的显存.
Gpu利用率. 在跑的时候会有数值.
有进程在跑模型时,可通过kill-% pid 杀掉进程,终止训练. pid是个进程编号.

看服务器是否联网?  输入firefox, 提示没有这个命令.   输入bash, 再输入firefox, 还是提示没有这个命令, 那应该是没有装.  输入sudo ls ,可以看到我在/home/jia.sun下的代码文件 ,说明我是管理者.
输入sudo apt-get update 更新源. 注意千万不能选择upgrade, 会把所有的都升级一遍, 有可能导致系统内核升级,导致gpu驱动用不了.
之后就可以安装firefox了, 先看看有没有联网.
ping baidu.com, 提示没有ping这个命令也没有.???


 

一、申请服务器ip

使用显卡型号 GeForce RTX 3090,该显卡仅仅支持使用cuda11以上的版本

ping命令的主要功能是用来检测网络的连通情况和分析网络运行速度。判断网络故障常用的命令

“ipconfig”命令查看本机ip

"ping 本机ip",来查看检验本机ip是否正确

输入“ping 网站地址”命令检查网络是否畅通和输入“ping 其它电脑ip”命令是否能连接局域网其它电脑


 

二、moba连接

创建session。将自己的私钥isa挂上来,输入服务器ip。  输入路由器ip和端口号。

进来之后可以通过nvidia.smi查看。如果找不到命令估计是环境变量的问题。

执行nvidia-smi命令报【Failed to initialize NVML: unknown error】 问题

gpu:数据集会存在在cpu的

三、本地vscode或pycharm连接

只有pycharm专业版才能远程连接服务器。

vscode:安装remote ssh插件后,在工具栏中输入ssh config进入配置,输入ip和用户名,保存

 解决问题:

 vs连接不了远程。ip连接不了的原因:要先下载一个nmap,再将proxycommand加入到config中。

nmap的作用:nmap(Network Mapper)是一款端口扫描工具,nmap可以检测目标主机是否在线、主机端口开放情况、检测主机运行的服务类型及版本信息、检测操作系统与设备类型等信息。

代理服务器:用户管理海外服务器,通过公网SSH远程时,由于网络质量原因公网丢包严重,这就导致管理员在对海外云主机进行管理时体验较差,表现形式可能是由于公网丢包严重执行命令卡顿,或者SSH进程异常中断等。针对上述需求,给出以下方案来优化此问题:

  • 新增一台代理服务器,此服务器到用户的网络质量和到海外服务器的网络质量良好,可以充当中间桥梁,途中我们以香港服务器为例。
  • 管理员通过使用代理服务器充当跳板机来对海外服务器进行管理。

将proxycommand加入到config中,是为了指定【代理服务器】的IP及端口信息。这里选择用socks5进行代理。

VScode 用socks5代理连接远程服务器_浅夏梦幻的博客-CSDN博客_vscode socks5


还有一个方法,服务器下载 vscode, 通过命令行打开vscode,进行调试. 流程在下方。这个方法我没有用,真的没必要, 太麻烦了....

方法二、直接在服务器本地安装vscode。

服务器是没有画面的,安装必须全程通过linux指令。mac系统的命令和linux的命令是很像的,平时可以拿mac练手。windows下没有ls,cat,vim,source这些命令,同时win下同样功能语句的写法也和linux不同。

像vscode等其他软件,如果要装,要安装deb格式的,然后本地安装。

原则上不需要服务器安装vscode, 可以用本地的vscode远程连接即可.

基础知识一:目录结构

(一级)/代表根目录,根目录下有home文件夹,

(三级)~代表用户,即/home/jia.sun.o。~代表主文件夹。 这里开头的/代表根目录   

(这里是linux和mac不同的地方,mac的~代表/Users/jia.sun.o。即mac下的用户不是在home文件夹里面,而是设置在Users里面)

基础知识二:环境变量修改export PATH的三种方法

以添加mongodb server为列

修改方法一:直接用export命令   export PATH=/usr/local/mongodb/bin:$PATH

export PATH后面跟着的是系统可执行文件=系统环境变量=系统命令,如果要直接通过命令运行第三方软件,要将第三方软件的可执行文件的路径加入到这里。

不同环境变量之间用冒号:隔开。 “PATH=$PATH:路径1:路径2:...:路径n”,意思是可执行文件的路径包括原先设定的路径,也包括从“路径1”到“路径n”的所 有路径。当用户输入一个一串字符并按回车后,shell会依次在这些路径里找对应的可执行文件并交给系统核心执行。那个“$PATH”表示原先设定的路径 仍然有效,注意不要漏掉。

修改方法二:修改.bashrc文件

  vim ~/.bashrc

  然后加上 export PATH=/usr/local/mongodb/bin:$PATH

  source ~/.bashrc

修改方法三: 修改profile文件

  vim /etc/profile

  然后加上 export PATH=/usr/local/mongodb/bin:$PATH

三种方法选其一,最后可以通过echo命令测试一下:
echo $PATH

一开始在~/下没有.bashrc,因此输入cat ~/.bashrc会提示报错, 手动创建一个。

创建方法:vim ~/.bashrc, 打开这个文件,按esc,然后冒号:wq保存退出。重启终端就可以在目录中看到这个文件夹。

四、 输入ll显示找不到这个command (修改环境变量)

然后vim ~/.bashrc,输入PATH=$PATH:~/bin, 按esc,再输入冒号:wq,w保存,q退出。修改.bashrc之后要手动刷新文件,文件才能更新,更新方法为source,即source ~/.bashrc。之后再按ll,还是还是找不到ll。

输入ll还是显示找不到这个command,可能是因为系统的bin中没有加入。

bin的意思是可执行文件, 是二进制文件。可执行文件=命令。bin文件夹分两类,一类是根目录下的,一个是用户目录下的bin。根目录下的/bin存放了系统内置的可执行文件,如cd,cp,ll,ls这些,都是系统命令。用户目录下的/usr/bin存放的是第三方的命令。

输入cd /bin,这里的/代表根目录,发现bin中就是找不到,一开始觉得可能是因为linux系统版本的问题。后来在百度上看到如下解释:

注意:要查看~/.bashrc的内容,只能用vim或者cat,不能用cd。因为cd是用来访问文件夹的

 五、 输入pip显示找不到这个command。(安装anaconda)

方法:安装anaconda,anaconda自带了numpy等工具包和pip命令。

在官网安装anaconda,选择linux版本,格式为anaconda***.sh。这里的***代表可以被指代为任何字符,如某某版本号

放到服务器本地,我把它放在了/home/jia.o/Anaconda3-2019.07-Linux-x86_64.sh

输入bash Anaconda3-2019.07-Linux-x86_64.sh 安装。安装时长按 Enter,碰到加入环境变量的时候输入yes。

安装完毕后显示Anaconda的路径为:/home/jia.o/Anaconda3。 同时环境变量应该也设置好了,通过 cat ~/.bashrc可以查看,结果如下。anaconda3/bin的路径已经加入系统环境变量里面了:

 但是又遇到问题了:安装好anaconda后,python应该也是附带了的。但是查看python的位置,显示的是系统自带的python的路径:

  系统自带了一个python。想办法修改python默认绑定路径,修改python为anaconda下的python。百度了一下应该是环境变量的问题:

解决方法为:source ~/.bashrc进行更新。 为什么没有对 ~/.bashrc进行修改,却仍然要更新?因为经过上面 cat ~/.bashrc 查看可知,anaconda3/bin的路径已经加入系统环境变量里面了,只是安装完anaconda时,对.bashrc文件的写入没有经过source更新,导致新的软件路径没有完全添加至系统环境变量。.bashrc的变动一定要经过source生效!

注意: python要import包,只能import同一个变量中的包.  因此启动python的时候,注意看启动的是在哪个环境里的python.

六、换源

pip换源,加快速度。pip install

同时conda在$ cat ~/.condarc中增加通道,下第三方软件。 conda install。

先不要用conda来安装,理由下面安装pytorch的时候会说!反正不好用,我用不明白

bat,txt,py之间可以通过直接修改文件后缀进行格式转换。

七:gpu版本的pytorch下载.  cuda+cdunn下载 

python的依赖下载比c++还是容易多了,python直接pip就可以了,c++还要一个个编译,配置cmakelists。

1.安装pytorch。注意pytorch虽然是包,但是不能直接通过pip安装,因为pytorch有不同版本,有cpu版,gpu版,同时不同平台也用不同的版本。我的cuda是11.4,只能下载历史版本的pytorch。要在官网下载特定版本再本地安装。

选择哪一个版本pytorch,和项目有关,看看项目的requirement.txt。pytorch,torchvision, cuda, cudatoolkit,open-cv等几个包的版本是挂钩的,一个变其余的都可能不兼容。

 其中cuda版本选择,先在服务器上输入nvidia.smi,即可查询支持的最高cuda版本。然后注意,cuda的版本和pytorch的版本也必须兼容!!!  从上面pytorch的cuda指令可知道, cuda要下载cuda-10.1版本!!  这也会造成一个问题, 就是电脑里会有很多cuda版本.

结束后,输入pip list,查看我们的包是否被安装,这里可以看到torch相关的包都安装了

注意: 不要用conda来安装,conda我配置的清华源有问题(~/.condarc),老是报错。

注意:系统的这个pip指令, 安装的torchvision有问题, 会少一个包. 建议不要下, 下了也要卸载掉, 自己再重新安装.

注意: 不用安装cudatoolkits.   看官网都是通过conda安装的才会需要安装cudatoolkits.

 

2.安装GPU驱动和CUDA工具包. 

GPU驱动=CUDA Toolkit=cuda.  CUDA工具包=cuDNN.

1)查看系统版本.  ubuntu x86_64

2) 安装cuda

bash输入nvidia-smi,  看到CUDA版本要控制在11.4以下.  我的系统内, cuda-11.4是内置好的,如下.

但是我这个项目要求的是pytorch1.4版本, 对应的cuda应该是10.1的

在系统目录可以看到21年下载的, 是系统自带了两个版本的cuda. 

配置cuda环境变量, 加到~/.bashrc.  因为我想要用11.4, 就建立了11.4的软连接. (软连接=加入系统环境变量)

Pytorch 首先尝试获取环境变量 CUDA_HOME/CUDA_PATH 的值作为运行时使用的 cuda 目录。若直接设置了 CUDA_HOME/CUDA_PATH 变量,则 Pytorch 使用 CUDA_HOME/CUDA_PATH 指定的路径作为运行时使用的 cuda 版本的目录。

  若上述环境变量不存在,则 Pytorch 会检查系统是否存在固定路径 /usr/local/cuda 。

注意:cuda版本一定要和torch兼容. 如果不兼容, 代码能训练,而且torch.cuda.is_available()返回结果是true. 但是一直没有训练进度, 同时输入nvidia-smi可以看到显存占用特别低, 也没有进程号.

注意: 跑深度学习安装上CUDA就可以正常使用GPU了!不一定需要安装cuDNN,具体看你的项目需求,我的是安装上CUDA就可以跑我的深度学习项目了,用不到cuDNN。

我的cuda版本是11.4,驱动就别更新了。之前有个弱智还让我更新,想害死我。。。470够了,别用510

 

 

3) 安装cuDNN

cudnn的版本,需要根据cuda的版本和系统的版本来决定 下载那个包

 

tar -xvf 指令可以解压tar.xz文件

再移动文件位置,设置文件权重啥的

下载不同的cuda版本,,不需要再下载工具包了

根据项目需要可自行下载框架(如pytorch,tensorflow)需要的cuda版本,一个电脑可能有不同的版本。

3.其他依赖如opencv直接通过pip就可以安装
 

创建虚拟环境

每个虚拟环境都会有一个python,这个是虚拟环境的创建指令决定的. 按照项目来创建环境. 

七、gedit ,ping等命令用不了

原因:当前环境基础镜像只包含简单的操作系统,相当于裸机状态,要想用别的命令需要手动安装。

    1.sudo gedit /etc/apt/sources.list 

    源列表里面放置的一行行网址,在这个文件里加入或者注释(加#)掉一些源后,保存。这时候,我们的源列表里指向的软件就会增加或减少一部分

     2. sudo apt-get update

    这个命令,会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑。软件包管理器里看到的软件列表,都是通过update命令更新的

    3. sudo apt-get upgrate

    这个命令,对比源列表网址应用版本和本地应用版本,如果源列表中更新,则更新本地版本。

没有sudo会报错。

这句我们可以拆成三部分,sudo,apt-get,update

1.sudo

其中sudo的主要功能就是提权,因为后方的apt-get需要root权限也就是系统中最高的权限运行,apt-get会在普通用户无法操作的目录进行工作,所以需要大哥来干活(指root。

2.apt-get

apt-get属于apt工具包中的内容,apt的全称为Advanced Package Tool,高级包工具。

属于debian系linux发行版的一大核心内容

apt-get的主要功能与获取安装软件包相关,可以进行下载软件包,安装软件包,分析软件包依赖,更新软件列表等工作

目前大部分apt-get的工作可以直接让apt来做,也就是说以后apt-get可以直接写成apt

3.update

这里就是你需要让apt-get干什么活的指令了。

这一句的意思就是更新,让他更新软件列表,获取源的软件列表方便本地解决依赖与制作软件包获取列表。

综合下来,用我们中文的表达就是

提权,apt-get你去更新一下软件列表

或者,apt-get,我现在给你最高权限,你帮我更新软件列表

解决问题六:python指代问题

切忌不要轻易删除Linux系统自带版本的Python

系统默认的python:

修改.bashrc文件,把python重命名为anaconda里面的python即可。

修改后,输入python则为anaconda里面的python:

"/home/jiajia.sun.o/cudnn/cudnn-linux-x86_64-8.7.0.84_cuda11-archive.tar.xz"

 

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

command.  对于找不到的命令, 要安装:

sudo apt-get update

sudo apt-get install zip 

1.这里pytorch和cudatoolkit版本对应关系:
https://pytorch.org/get-started/previous-versions/

2.cudatoolkit版本和系统cuda对应关系:
https://www.zhihu.com/question/344950161/answer/818139888

3.系统cuda和nvidia对应关系:
https://blog.csdn.net/He_9520/article/details/100032803

4.cuda和cuDNN的关系和对应关系:
https://www.jianshu.com/p/622f47f94784
https://www.cnblogs.com/yeran/p/11345990.html

查看显卡版本:
ubuntu-drivers devices
nvidia-smi

查看服务器的cuda版本
使用如下命令:
nvcc -V

sudo cp /home/jiajia.sun.o/cudnn-linux-x86_64-8.7.0.84_cuda11-archive/include/cudnn.h /usr/local/cuda-11.4/include/
 
sudo cp /home/jiajia.sun.o/cudnn-linux-x86_64-8.7.0.84_cuda11-archive/lib/libcudnn* /usr/local/cuda-11.4/lib64/
 
sudo chmod a+r /usr/local/cuda-11.4/include/cudnn.h
 
sudo chmod a+r /usr/local/cuda-11.4/lib64/libcudnn*

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值