目录
1、前言
1.1 2021年09月29日 更新第一版配置
1.2 2021年12月26日 更新第二版配置
1.3 2022年03月05日 更新第三版配置
1.4 2022年04月16日 更新第四版配置
1.5 2022年04月23日 更新第五版配置
1.6 2022年08月23日 更新第六版配置
1.7 2023年08月23日 更新第七版配置
2、服务器基础软件
3、python3.9配置
3.1 下载 py3.9 到home
3.2 py3.9解压编译
3.3 py3.9运行安装
3.4 查看py3.9是否安装成功
4、Anaconda配置
4.1 首先在清华镜像站下载anaconda3
4.2 若无法启动anaconda,尝试配置环境变量
4.3 换源增加清华镜像
5、pytorch配置
5.1 查看显卡
5.1.1 查看显卡版本
5.1.2 查看显卡驱动版本
5.2 配置torch环境
5.2.0.0 更新pip和换源pip(非必要)
5.2.0 查看现有虚拟环境
5.2.1 通过conda来创建一个名为torch的虚拟环境,并且激活它。
5.2.1.1 配置torch主要需要三个包(推荐)
5.2.2 手动配置torch主要需要三个包(当自动失效、需要特定版本)
5.2.3 安装多种库
5.2.4 查看是否安装成功
6、tensorflow 2.12
6.1 安装TF
6.2 测试TF2.x是否安装成功
7、在服务器上配置jupyter
7.1 第一步安装jupyter
7.2 第二步生成配置文件
7.3 密码设置
7.3.1 第一次登陆jupyter时需要输入密码
7.3.2 修改配置文件jupyter_notebook_config.py
7.4 测试jupyter是否安装成功
7.5 jupyter所在服务器有防火墙
7.5 jupyter 拼写补全(相关插件下载)
8、jupyter 切换不同conda虚拟环境
8.1 安装nb_conda插件
8.2 虚拟环境jupyter子包
8.2.1 虚拟环境下安装jupyter
8.2.2 重启jupyter
8.3 切换内核 不同的conda环境可能出现的bug
8.3.1 error1:EnvironmentLocationNotFound: Not a conda environment
8.3.2 error2:AttributeError: ‘dict’ object has no attribute 'rsplit’
8.3.3 error3:’_xsrf’ argument missing from POST
公司服务器与学校服务器一般是无法连接外部网,下载大部分文件是极其麻烦的。服务器只会分配普通的使用权限,不会分配root权限给你,好处在于不用担心折腾坏服务器(rm - rf*这类),缺点也很明显,服务器环境大部分还是python3.6,你需要自己创建虚拟环境,更新python3.9并且安装最新版本的Anconda3来配置pytorch以及TensorFlow环境。
配置的服务器系统为Ubuntu16.04 LTS,不同操作系统的包不一定通用的,在系统更新Ubuntu18.04的情况下之前安装的包还是可以使用,但有一些细微的地方就出现了一点问题。清华的镜像中就已经对不同的操作系统的包分好了类别。在安装完conda后,用conda命令安装为主,pip命令安装为辅,如果出现无法安装的情况目前只能采用换源的方法,一般常用的清华源、阿里云源,如果服务器有连接外网就可以跳过换源这个步骤。
安装 py3.9 anconda3 cuda10.1 pytorch1.8.0 tensorflow2.3 jupyter
安装 py3.9 anconda3 cuda11.3 pytorch1.10 tensorflow2.7 jupyter
增加 jupyter 潜在问题处理,存在主机需要独立建立 ssh通道
增加修改conda 安装 torch torchvision cuda 存在的失败问题
服务器防火墙升级,jupyter需要由localhost链接
更新pip换源 pip升级操作
修复历史疑问与相关bug
修复历史疑问与相关bug,跟新tensor和torch配置
这三篇博客写的很好
服务器配置深度学习环境
Pytorch版本、CUDA版本与显卡驱动版本的对应关系
Jupyter Notebook切换conda虚拟环境
通过教育邮箱下载 Xshell Xftp两个软件对服务器进行操作,Xshell为命令终端,Xftp方便对文件进行操作。
通过两个软件连接后,打开终端开始配置环境,这步很简单一般都没什么问题,最终使用时会出现(Free for Home/School 笑哭)
存在美中不足的小bug:Xshell7在日常启动jupyter时还会出现Xmanager的弹窗,这个目前不会解决。。。只能采用火绒处理弹窗?(解决方法也很简单,csdn上查找类似,就是xshell内禁用弹窗即可)
Linux Ubuntu系统升级Python3版本至Python3.9版本步骤_编程学习笔记本-CSDN博客
总体来说是采用wget命令从官网下载压缩包,在Home下进行解压,编译文件,最后用make命令进行安装。(这里存在疑问,如果无法知晓服务器科学上网的情况下,怎么判断等待的3分钟是网速问题还是搜索匹配问题)(超时换为上网下载安装包,xftp上传,简单不记录)
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
# 在Home中进行解压
tar -zxf Python-3.9.0.tgz
# 进入python3.9
cd Python-3.9.0
# 编译文件 时间大概有1-3分钟
./configure --prefix=/usr/local/python3
# 编译好后,会有另外一个提示,让please run ./configure --enable-optimizations
./configure --enable-optimizations
# 安装
make && make install
我是在test环境下安装的py3.9,base环境下我装的是py3.8.8 直接在命令行里输入.
# 查看是否安装成功
python
# 退出python模式
exit()
linux服务器手动安装Anaconda3教程 - 简书
手动下载最新的 anaconda XXX Linux-x86_64.sh
Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
(我下载的是Anaconda3-2023.03-1-Linux-x86_64.sh,该镜像网址的排序还比较奇怪,需要好好瞧瞧后面的更新时间)
下载好之后用Xftp上传到服务器,切换到文件所在位置,在文件目录下执行
bash Anaconda XXX Linux-x86_64.sh
一路yes,安装完后在终端输入anaconda判断是否安装成功
输入vim命令打开配置文件,加入PATH环境
vim ~/.bashrc
#在最后添加语句
export PATH=/home/XXX/anaconda3/bin:$PATH
#更新配置环境 一般只要在命令行下输入这句
source ~/.bashrc
# 初始化conda环境
conda init
如果不会用vim命令,那就在xftp界面中用记事本编辑 .bashrc文件
conda init 之后需要小心的是 .bashrc文件里的 path 有没有变化为系统的 opt/anconda3那样是不行的,这里踩过一次大坑
安装完conda后,由于网络原因,最好添加清华镜像来加速下载速度,并将该镜像网址放到最顶部。更新该环境下的所有包(服务器可能没有最高权限是无法更新的),最后更新conda自己为最新版本(这步不需要最高权限)。
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
conda update --all #更新所有库
conda update conda #更新自身
lspci | grep -i nvidia
NVIDIA公司显卡 围绕 nvidia-smi 命令
可以看出此时支持的版本为cuda11.3 ,要严格与CUDA Version对应(21年12月),可以低于它一点,但是不能超出,超出必然不支持!
(可以看出此时支持的版本为cuda10.1,要严格与CUDA Version对应(21年9月))
nvidia-smi # 查看显卡信息 (cuda版本)
watch -n 1 nvidia-smi # 每秒更新一次显卡信息
如果pip一直提示超时,那么就需要换源为国内源
方法1:vim控制
# 第一种用vim
# 创建文件目录
mkdir ~/.pip
# 创建pip文件
touch ~/.pip/pip.conf
# 修改pip.conf的内容
vim ~/.pip/pip.conf
# 文件内添加以下内容
[global]
timeout = 6000
index-url = http://mirrors.aliyun.com/pypi/simple
[install]
trusted-host=mirrors.aliyun.com
方法2:Xftp修改
# 创建文件目录
mkdir ~/.pip
# 创建pip文件
touch ~/.pip/pip.conf
直接创建,记事本复制黏贴文件内容
先查看虚拟环境列表,为什么要建立虚拟环境呢?是因为每一篇论文的运行环境有极大的概率是不相同的,尤其是TensorFlow系列,各个版本高低不相互兼容(2.x 和1.x)。所以虚拟环境的管理也是很重要,我的base环境安装的是CUDA10.1 torch1.8 tensorflow 2.3 (写于21年) ,但在虚拟环境中安装的版本是比较高的CUDA11.3 torch1.10.0 tensor2.7(写于23年),再通过jupyter直接跟换内核(后面会说到,我们继续配torch)。
# 查看现有虚拟环境
conda env list
# 如果需要删除现有的环境
# 删除现有的虚拟环境 这里需要改为自己虚拟环境的名字
conda remove -n your_env_name --all
conda remove --name your_env_name --all
# 创建torch配套的Python环境
# 以下是两个例子
conda create --name torch python==3.8.5
conda create --name torch python==3.9
# 激活torch环境
conda activate torch
# 关闭虚拟环境,一般服务器用的都是Linux
Linux : source deactivate
Win : deactivate
# 删除环境
conda remove -n torch --all
conda remove -n tensorflow --all
# 给指定虚拟环境安装额外的包
conda install -n tensorflow scikit-learn
# 删除虚拟环境中的某个指定的包
conda remove --name tensorflow package_name
PyTorch 下载官网
一键安装pytorch torchvision torchaudio pytorch-cuda=11.8
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
配置torch环境主要需要这三个包pytorch torchvision cudatoolkit (CUDA)
现在是2021 12 26 我们配置一些稍微新一点的版本,在添加包之前,考虑到是公用服务器,需要多添加几个清华镜像源来下载这三个包。
conda config --add channels http://mirror.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels http://mirror.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels http://mirror.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --append channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
conda config --set ssl_verify false
添加完之后可以开始下载了,多试几次就可以了,一般不会有问题的,新包会自动替代老包,老包会被删除,比较人性化。如果出现chudatoolkit无法下载,首先确定是否是添加了以下镜像
conda config --add channels http://mirror.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
确定添加后,输入前两个安装,在通过cuda list 命令查看列表中是否自动进行匹配安装了cuda11.3
# CUDA 11.3 选择第一句
# CUDA 10.1 选择第二句
conda install pytorch==1.10.0 torchvision==0.11.1 cudatoolkit==11.3 # cudnn8.2.0配套
conda install pytorch==1.8.0 torchvision==0.9.0 cudatoolkit==10.1
出现安装失败请看这里。
OS:由于包与库更新迅速,同时conda install容易出现访问失败,此时将其分开安装。分开安装也会出现与所需版本不一致的问题,个人建议在安装失败的时候,先install torch 此时conda一般会将另外两个包自动安装上,在指定安装完torch版本后,再次install vision 和 cuda 的指定版本即可。或者随机组合排列进行安装,新安装的包会自动删除旧包。(全部失效,使用pip install)
# 举个例子 先装torch
conda install pytorch==1.10.0 torchvision==0.11.1
conda install cudatoolkit==11.3
# 实在不行,全部分开
conda install pytorch==1.10.0
conda install torchvision==0.11.1
conda install cudatoolkit==11.3
# 最后还是不行,目前还没见过conda 装不了torch的情况
pip install xxxx
pillow matplotlib scipy pandas scikit-learn
tqdm scikit-image imutils PyYAML
seaborn easydict ipython imageio
先装一部分,后面不够或者镜像错误再用pip指定安装
# 成功
pip install pillow matplotlib scipy pandas scikit-learn tqdm scikit-image imutils PyYAML seaborn easydict ipython imageio
# pip安装一些conda无法安装的包
pip install opencv-contrib-python
pip install face_recognition
conda install scikit-image
# 这部分写法 失败 原因待分析
(torch) yym@gpu03:~$ conda install pillow matplotlib scipy pandas scikit-learn tqdm scikit-image imutils PyYAML seaborn easydict opencv
(torch) yym@gpu03:~$ pip install opencv-python pillow matplotlib scipy pandas scikit-learn tqdm scikit-image imutils PyYAML seaborn easydict ipython imageio -i https://mirrors.aliyun.com/pypi/simple/
进入python环境后,导入torch包,通过torch.cuda.is_available() 查看显卡是否能被调用,
torch.__version__查看当前pytorch版本
python # 进入python下
(torch) yym@gpu03:~$ python
Python 3.8.5 (default, Sep 4 2020, 07:30:14)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch # 导入torch 看看cuda在不在
>>> torch.cuda.is_available()
torchTrue
>>> torch.__version__
'1.8.0'
>>> torch.cuda.is_available()
True
https://www.tensorflow.org/install 注意切换为英文界面,中文已经停止更新很久。
# Requires the latest pip
pip install --upgrade pip
# Current stable release for CPU and GPU
pip install tensorflow
# 测试能不能用
import tensorflow as tf
tf.test.is_gpu_available()
True tf2.7 导入成功,写法跟2.3一致,仅改数字为2.7
如何访问服务器的 Jupyter notebook - 知乎
在服务器上使用jupyter - 简书
服务器上安装jupyter可以有效直观的调试代码,在服务器上安装jupyter ,然后本地电脑连接,本地写代码。同时jupyter可以跟换不同的内核来变更不同的虚拟环境,只需要base环境下安装一次,再通过安装不同的插件即可。
pip3 install jupyter
此时会在你的文件夹下生成一个jupyter_notebook_config.py文件,文件夹里找找,很好找的。
jupyter notebook --generate-config
在 notebook 5.0 版本开始,可以通过一个命令 jupyter notebook password设置密码并保存到文件 jupyter_notebook_config.json,(json文件内部会存有哈希密码),自动配置方式如下所示:
$ jupyter notebook password
Enter password: ****
Verify password: ****
[NotebookPasswordApp] Wrote hashed password to /Users/your/.jupyter/jupyter_notebook_config.json
也可以使用第二种手动配置哈希密码(不推荐)
输入密码会自动生成一个哈希密码,后面需要将哈希密码复制到jupyter_notebook_config.py文件中,注意这时是在python环境下进行配置。要输入ipython 或者python,输入两次密码返回一串哈希字符。(记得复制改字符)之后退出,回到最初终端页面。
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'argon2:$argon2id$v=19$m=10240,t=10,p=8$cXxxxxxxxxxxxxiWpMcA7q8+zAw'
jupyter notebook --generate-config
7.3.2.1 第一种直接复制黏贴版
记事本打开.py文件复制进去,因为打开文件你会发现全是注释#过得文件。之前一直去掉#来配置,很容易出错,(第二种去掉注释的我也放在下面了)
第一种直接复制黏贴即可
c.NotebookApp.ip = '*' # 设定为任意ip可以访问,也可设定为你自己的主机ip
c.NotebookApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$cXSar+f/ZwxxxxxMcA7q8+zAw'
c.NotebookApp.port = 8890 #(访问jupyter的端口)
c.InteractiveShellApp.matplotlib = 'inline'
设置jupyter notebook在后台不间断运行,即你关闭该终端之后仍然可以访问,且配置成错误信息输出到屏幕(这步有的服务器会出现bug属于可选项)
$ nohup jupyter notebook >/dev/null 2>&1 &
7.3.2.2 第二种:删注释配置版(不推荐这种,不如第一种直接全部删除后加入)
输入
在第200行位置找到以下配置,修改为自己的ip地址
接下来实在第261行修改哈希密码,复制刚刚的密文,我随便打的
最后一步就是在第269行和271行修改浏览器权限和指定端口
修改为禁止自动打开浏览器,指定访问端口为8888(之后访问地址为 ip:8888)我改成8890了,因为服务器用的人还蛮多,该成后面的端口更好一点??
最后在连接服务器的情况下,在Xshell的终端里输入jupyter notebook 启动jupyter,再打开一个浏览器,输入服务器ip+冒号8888就可以访问jupyter (随便举例子192.112.11.123:8888)
测试发现,能用!!!完成
另外一种是 http://localhost:8888/
Bug1:存在https无法访问,输入http就可以访问,暂时无法解决为什么原因?
Bug2:部分服务器需要建立单独的ssh通道,跨越防火墙之类的(已解决)
Bug3:部分PC主机重装系统后秘钥更变,ssh需要验证(已解决)
浏览器访问服务器Jupyter (本地建立ssh通道)
使用win10 sftp 连接服务器报错 t is also possible that a host key has just been changed. The fingerprint for t - 灰信网(软件开发博客聚合)
打开win11本地的cmd shell窗口输入以下代码:
ssh -L [本地端口]:localhost:[远程端口] [远程用户名]@[远程IP] -p [ssh连接端口]
本机输出端口8888
服务器jupyter端口8890
用户 xxx
@ip地址
一般服务器连接的都是 -p 22 号端口
ssh -L 8888:localhost:8890 用户@172.12.12.12 -p 22
接下来复制 localhost:8888 到本机网页栏中,发现可以登录
使用jupyter的时候,代码提示每次都要Tab键,很麻烦。
jupyter也可以和PyCharm一样强大,自动提示补全,只需要安装几个包即可。
pip install jupyter_contrib_nbextensions -i https://pypi.tuna.tsinghua.edu.cn/simple
jupyter contrib nbextension install --user
pip install jupyter_nbextensions_configurator -i https://pypi.tuna.tsinghua.edu.cn/simple
jupyter nbextensions_configurator enable --user
安装完成之后重新打开jupyter,会看到菜单栏出现 Nbextensions,点击进入。
将Hinterland选项勾上,就可以自动补全代码。
随便开一个,验证成功。
Jupyter 切换conda虚拟环境这篇文章写的很好,该部分90%内容来自这篇文章,并且笔者的一个多核bug就是这篇文章解决的。
Jupyter Notebook本身是默认使用一种Anaconda中root目录下的Python环境的,如果想使用其它的虚拟环境,还需要通过插件来实现,也就是nb_conda插件。
conda install nb_conda
安装完后jupyter主页上就会出现Conda选项包,之前是没有的。
我们安装完nb_conda插件后,打开jupyter在自己的Jupyter笔记中点击“Kernel → Change kernel”应该就可以切换虚拟环境了。除了安装插件外,还需要在你所建的每个虚拟环境中安装jupyter notebook。
激活你想要的虚拟环境
source activate your_env_name
在虚拟环境下安装jupyter
conda install -y jupyter
安装以上命令,在每个虚拟环境中安装jupyter就可以了。
退出虚拟环境,关闭jupyter ,重启后打开笔记本点击kernel 跟换虚拟内核 Change kernel来切换虚拟环境。
打开jupyter后点击Conda会弹出这样的错误(极其常见):
解决方法:
找到Anaconda安装路径下nb_conda库的envmanager.py文件
win系统在目录:Anaconda3\Lib\site-packages\nb_conda\envmanager.py
linux系统在目录:Anaconda3/pkgs/nb_conda-2.2.1-py36_0/lib/python3.6/site-packages/nb_conda/envmanager.py
找到该文件后在83~86行有这样一段代码:
return {
"environments": [root_env] + [get_info(env)
for env in info['envs']]
}
直接用记事本在Xftp软件中修改,再次重启即可。
return {
"environments": [root_env] + [get_info(env) for env in info['envs'] if env != root_env['dir']]
}
解决方法:
找到Anaconda安装路径下文件:Anaconda3\Lib\site-packages\nb_conda\envmanager.py
修改内容
name, version, build = s.rsplit('-', 2)
修改成: 之后重启
if isinstance(s, dict):
s = s['dist_name']
name, version, build = s.rsplit('-', 2)
解决方法:
用户Home目录下 .jupyter/jupyter_notebook_config.json文件添加:
"disable_check_xsrf": true
然后重启刷新 jupyter
如果没有报错的话,就可以在jupyter中新建python环境了,需要注意的是新建的环境需要安装ipykernel包,才会显示在新建note菜单中。
致此万字配置文结束!!!