Ubuntu无root权限安装miniconda到配置jupyter、GPU版本pytorch一条龙服务

前言

倒腾学校服务器来回几次了,对学校给学生无root普通用户权限,老师要求的只能安装miniconda然后手动配jupyter、GPU版本pytorch等环境已经轻车熟路了。

如果你是老手,完全可以按照这些个命令安装。如果你是初学者,碰到了bug,把bug的具体情况复制下来,重点复制报错代码及后面的报错总结,然后上网去搜即可。中文互联网资源已经很丰富,碰到一般的bug也不必非要谷歌,就是要带着相信能够解决的心态先学习安装的一般步骤,看源代码之类的就交给日后经验丰富的自己吧。

安装miniconda

miniconda顾名思义,mini版本的conda,轻量,安装时长短,这也是老师要求我们用它的原因。

另一个原因就是,与之相对的anaconda,环境齐全,同时包也很大,不适合服务器上所有同学都折腾一个。

下面介绍如何安装miniconda。

获取安装包

wget https://mirrors.bfsu.edu.cn/anaconda/miniconda/Miniconda3-py38_4.9.2-Linux-x86_64.sh

或者手动下到电脑然后rz传到服务器

链接在这:

https://mirrors.bfsu.edu.cn/anaconda/miniconda/

或者直接点击下载:

https://mirrors.bfsu.edu.cn/anaconda/miniconda/Miniconda3-py38_4.9.2-Linux-x86_64.sh

然后rz

rz

rz不行,用scp也可以。

全过程参考我的文章Windows电脑向无lrzsz、无root权限Linux服务器传输文件的方法

打开Windows命令行。

(打开命令行,具体可参考我的文章打开Windows命令行、Powershell窗口的多种方法

输入命令:

scp D:\Download\Miniconda3-py38_4.9.2-Linux-x86_64.sh user007@101.102.103.104:~

此即把D:\Download文件夹下下好的Miniconda3-py38_4.9.2-Linux-x86_64.sh传给IP地址为101.102.103.104,用户名为user007,的目标文件夹~(即用户根目录)。

看好你文件的位置,你的公网或私网ip地址,用户名,目标文件夹,这些都要改对。

(要传其他大文件,超过lrzsz的4GB限制的,也可以用scp)

用安装包安装

输入命令:

bash Miniconda3-py38_4.9.2-Linux-x86_64.sh

然后阅读许可证license,enter回车下一行。

然后键盘敲yes同意许可。

然后等它解析完要下载的包,问你要不要初始化时输入yes同意,省流程。

等待安装完成。

配置环境变量

进入环境变量的配置文件

vim ~/.bashrc

在最后或者任何你感觉舒服的位置,加入以下这行,保证不被注释掉即可。

export PATH=/home/user007/miniconda3/bin:$PATH

user007那里换成你的用户。

激活配置好的环境

source ~/.bashrc

然后应该就切换到了conda环境的默认环境base。命令行会从下方代码的上面转化成下面:

user007@dlp10:~$ source ~/.bashrc 
(base) user007@dlp10:~$ 

检查

可以检查一下:

(base) user007@dlp10:~$ conda -V
conda 4.9.2

配置镜像源

镜像源好像是所有虚拟环境通用,所以不用先创建虚拟环境,可以先进行这一步。

命令行输入以下全部:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

conda config --set show_channel_urls yes

前7行添加镜像源,后一项设置搜索时显示通道地址。

删除默认源

进入镜像源配置文件:

vim ~/.condarc

找到显示defaults的行,删除该行。

channels:
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    - https://...
    - https://...
    - defaults
show_channel_url: true

文件中类似这样,然后我们就删除其中的defaults行,比如这里就是第五行。

小技巧

vim中,选中处到了一行的位置时,按dd可以直接删除该整行。

dd

检查

conda config --show-sources

显示如下:

(base) user007@dlp10:~$ conda config --show-sources
==> /home/user007/.condarc <==
channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
show_channel_urls: True

创建并使用新虚拟环境

创建一个新的虚拟环境,方便我们折腾jupyter、pytorch等。

其实直接在base环境下安装也无不可,不过不同版本环境对应不同用途总归是程序员需要掌握的。比如你整个pytorch跑深度学习,可能还需要使用tensorflow跑,这就可以创建两个不同的虚拟环境来搭配使用。

创建环境

conda create --name d2l python=3.8

创建一个名为d2l的环境,使用的python版本为3.8。

激活或进入环境

conda activate d2l

你懂的,d2l改为你取的环境名,就进入了你的环境。

查看存在的所有环境

以下两条任意一条都可

conda info --envs
conda env list

结果如下:

(base) user007@dlp10:~$ conda activate d2l
(d2l) user007@dlp10:~$ conda info --envs
# conda environments:
#
base                     /home/user007/miniconda3
d2l                   *  /home/user007/miniconda3/envs/d2l

带*号的为你当前激活的环境。

关闭环境

conda deactivate yourEnv

yourEnv换成你正在运行环境的名字即可。

删除环境

conda env remove -n yourEnv

同上,yourEnv换成你要删的环境的名字即可。

安装配置jupyter

jupyter是一个交互式笔记本,方便我们在网页上调用服务器执行python的代码。你只要准备一个能用的浏览器,输入服务器地址后接好jupyter的端口,即可方便的使用。

安装jupyter

输入命令:

conda install jupyter

然后输入y回车,同意安装这些它找到的包即可。

配置jupyter登录地址

首先配置密码

输入:

ipython

在之后的运行界面分别输入以下两条语句

from notebook.auth import passwd
passwd()

然后会显示Enter passwd:,你就输入你设置的密码,它不会打在屏幕上,确认好后回车

再显示Verity passwd:,这是教你确认密码,输入和上次一样的密码即可。

得到一个密匙,比如如下:

Out[2]: 'sha1:5b5f*****11:371192**************539808392c6ff97'

*号是我遮住自己密匙的部分。

具体ssh界面情况可以参考下图:

方法二

输入:

jupyter notebook password

然后同上输入两遍密码,会显示:

[NotebookPasswordApp] Wrote hashed password to /home/user007/.jupyter/jupyter_notebook_config.json

然后进入该文件查看:

vim /home/user007/.jupyter/jupyter_notebook_config.json

你可以看到:

{
  "NotebookApp": {
    "password": "sha1:0916*****f:a4614d9f**********615be8a8755865857fe0"
  }
}

其中password后面的就是你生成的密匙。

保存好这个密匙,待会会用的。

生成jupyter notebook配置文件并设置

输入:

jupyter notebook --generate-config

之后下行会显示生成的配置文件地址:

Writing default config to: /home/user007/.jupyter/jupyter_notebook_config.py

进入该配置文件,进行修改:

vim ~/.jupyter/jupyter_notebook_config.py

然后可以直接在开头添加下面的这些。

c.IPKernelApp.pylab = "inline"
c.NotebookApp.ip = "*"
c.NotebookAPp.open_browser = False
c.NotebookApp.password = "sha1:b39*****79f:9b9ab99********b99a841a6403aa52647"
c.NotebookApp.port= 8888
c.NotebookApp.notebook_dir = "/home/user007/jupyter"
c.NotebookApp.allow_remote_access = True

其中,第一行是设置所有matplotlib的图像都通过iline的方式显示;

第二行是允许任意ip地址访问该jupyter端;

第三行是禁止在运行ipython的同时弹出浏览器;

第四行是设置启动的密码,就把刚才记住的密码搬过来即可当然,如果你用了上面的方法二来生成密码,这里也可以不用搬过来;

第五行是设置端口,似乎可以不设;

第六行是设置jupyter notebook的默认文件夹,这个文件夹必须存在,不然报错;

第七行是设置允许远程启动,不设置会报错。

当然也可以搜索到它文件中注释的位置,然后取消注释,修改后面的设置。还因为注释的是默认的,为了保存默认作为参考,查找到后在下方添加你的设置。(推荐最后一种方法,方便以后的查看,也有助于自己查看后恢复默认设置。)

vim小技巧

vim有三种模式:(1) 命令模式; (2) 编辑模式(输入模式); (3) 末行模式(尾行模式)。

其中尾行模式就是你在下方输入了:或者/的时候的模式。

输入/,后方接你要查找的字符,即可实现字符查找。比如你要查找'App.ip'在哪,就输入:

/App.ip

结果如下:

还有其他的要提一提。如果你输入了,发现没找到你想找的,先回车,然后

输入n为进入下一个查找位置,输入N为返回上方找到的字符位置。

当然,最好的办法还是确定你要找的字符具体是什么样的,精确定位。

注意

还有要解释以下,很多文章提到要设置ssl证书,但使用后会报错,所以下面的设置就不用了

#命令行中
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem
# 然后要你输入一些国家啊组织名什么的,随便输,都可以生成这个证书

# jupyter_notebook_config.py中的
# c.NotebookApp.certfile = u'/home/user007/.jupyter/mycert.pem'
# c.NotebookApp.keyfile = u'/home/user007/.jupyter/mykey.key'

我估计可能是不认可这种私人设的证书了吧,反正自己连学校服务器不要整这种。

登入jupyter

启动juypter notebook

命令行输入

jupyter notebook

观察它打开的端口(因为是服务器,可能有别人在用,所以分配给你的端口不一定是你设置的8888,所以你要会看。其实你之后用jupyter打代码,有很多报错也需要在这个后台来看的。

比如我这次,显示了8888端口已经被占用,于是给我转到了8889端口。下面就记住不要再输成8888。

从浏览器进入jupyter

打开浏览器,在地址栏输入你的ip:端口号,比如

101.102.103.104:8889

然后回车,就可以看到进入了登录界面

小报错

当然,如果你看到Token authentication is enabled,那肯定是你密码没设置好。(比如,你在之前c.NotebookApp.password打成了...App.passwd)

懒得整成正确的再整到错误处重新截图了,就借用一下这个,几度热忱大佬的图吧

可以参考后台报错信息看。

可以确认,确实是打成passwd了。改好就行。

输入密码登录

如题,输入密码点Log in就成。

可以看到我们就进入了界面。

配置不同环境内核

方法一

好像,不同于网上大部分的,ipykernel都不用下,直接下这个:

conda install nb_contrib_kernels

方法二:配置ipykernel

首先下载ipykernel,好些所有你要配有的环境都要下:

conda install ipykernel

然后在你需要关联的环境中使用命令

ipython kernel install --user --name=d2l

比如,你在base下,然后你有tf2的虚拟环境,需要关联,那么你可以用:

(base)conda activate tf2
(tf2)conda install ipykernel
(tf2)ipython kernel install --user --name=tf2-kernel

这种方法来创建一个叫tf2-kernel的内核,和tf2虚拟环境关联。

(这里也说明了,你的ipkernel中的内核不一定非要和虚拟环境同名的)

不配置也不是不行……

当然,如果你是狼灭,比狠人还不止狠一点,可以一直手动切换环境启动jupyter,完全绕开这些内核配置……

(base)conda activate tf2
(tf2)conda install jupyter
(tf2)jupyter notebook

事实上,我以前比较单纯,一直都是这么做的,完全没意识到老师和论坛大佬们教我们这些人配虚拟环境,就是让我们base里启动jupyter,再在jupyter里面创建在不同环境下运行的文件,调好内核就行……

调内核等操作之后讲解……

Jupyter基本操作

创建Jupyter运行python的特有文件——ipykernel文件

点击右上角New,然后挑选你要选的内核。

比如挑选第二个。可以看到进入后是这样:

运行

d2l后,可在In后输入你要运行的代码,比如:

import math
x = math.sin(3.14 / 2)
print(x)

运行快捷键为shift+enter。

得到结果为:

0.9999996829318346

运行后,可在下方继续运行。继续运行的代码可以继承之前所有的变量、参数、类等。比如再返回x的反正弦函数:

y = math.asin(x) * 2
print(y)

得到结果为:

3.1399999999999753

可以观察到,第一个运行的,块中左上角为In [1];第二个的,为In [2] 。这可以帮助你调试。

到这里,Jupyter就可以正常使用了。不过还有工作要做,如果你需要用torch跑深度学习的话。

安装GPU版pytorch

只装torch,没问题的。如果你是要在服务器上,顶着老版本CUDA,安装能够在GPU上跑的torch,难度可以说是有点死去活来。不过放心,看了我这篇文章,还是能整活的。

具体可以参考这篇文章:

torch报错AssertionError: Torch not compiled with CUDA enabled解决方法 torch适配CUDA降版本、选择gpu版本最终方案

就说简单流程:

首先更新一下conda

(nn滴,这是我写完后面试了之后试出来不对才加的,tmd上面刚说的还不死去活来,这次差点是没活过来,血的教训,一定吸取啊xdm)

输入:

conda update conda

可能不对,因为你不在base环境还是怎么的。然后你根据提示把它里面的代码输进去就行。(哈,我说什么之前,学会认真看出错的bug吧)

查看机子的CUDA版本

输入:

nvidia-smi

比如我这里CUDA是10.2

在官网查看适配版本

点击官网:https://pytorch.org/get-started/previous-versions/

这里查看到我10.2的CUDA适配1.12.1的pytorch,0.13.1的torchvision。

在镜像源直接找到对应的CUDA版本,即GPU版本pytorch下载

省了进镜像源查看的说明,自己找到对应的吧,直接用对应的包conda install下载。

记得自己找到哦

这里选用的是https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch这个源。

conda install https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/linux-64/pytorch-1.12.1-py3.8_cuda10.2_cudnn7.6.5_0.tar.bz2

接着再用以下命令安装适配的相关的、前置的包:

conda install pytorch

然后torchvision就同理,就不赘述了。

检验

Jupyter中创建一个文件输入

import torch

print("是否可用:", torch.cuda.is_available())        # 查看GPU是否可用
print("GPU数量:", torch.cuda.device_count())        # 查看GPU数量
print("torch方法查看CUDA版本:", torch.version.cuda)  # torch方法查看CUDA版本
print("GPU索引号:", torch.cuda.current_device())    # 查看GPU索引号
print("GPU名称:", torch.cuda.get_device_name(1))    # 根据索引号得到GPU名称

运行改小块,得到结果如下:

是否可用: True
GPU数量: 2
torch方法查看CUDA版本: 10.2
GPU索引号: 0
GPU名称: Tesla T4

看到这样的结果,都能打印出来,就是安装成功了。

(独家)(死去活来记:没耐心中途关下载了,报错specified in the package manifest cannot be found)

有人没耐心等完下载,就把conda install的关了,我不说是谁

网上搜的,参考https://blog.csdn.net/qq_44747572/article/details/124960730

输入

conda clean --packages --tarballs

然后,

碰到这个BUG,你极有可能需要回到之前我说的第一步,就是更新conda那里。然后,你可能会丧心病狂地尝试conda再次安装、conda装完了回去cuda安装、cuda装一半发现没用,又试着pip安装、pip安装后发现装了cuda11.7版本的,继续抓狂……

不过,

总之最后我还是用这个方法安装成功了,又一次。对,第一次就是写最上面让你参考的那篇文章,死去活来。这一次,又一次差点气死,怎么说呢,可能作为程序员是难以想象下次又献祭几天寿命来整活来……

至于为什么不能直接conda install安装

可以试一试:

conda install pytorch

结果如下:

可以看到,它自动给我们下的是CPU版本的。

可能也是源没配置好。不过在源没配好的情况下,用这种方法解决,额,也能解决。

后记

写本文本来是因为重复整了次学校服务器的conda安装,有感就写了这篇长文。本来以为轻轻松松,没想到小坑不少,大坑掉得差点没得跑,希望后人看到这马到成功,马不停蹄赶紧好好整整自己和服务器的tm生活吧。

(ps:整这个的时候,还在学校写论文,挺苦逼的,希望后人能摆脱这样的痛苦,和服务器甜蜜双排)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值