查看显卡信息
nvidia-smi
右上角为cuda可安装的最大版本信息。
版本推荐
CUDA:11.2
CUDNN:8.2
tensorflow-gpu:2.9.0
Python:3.10
知道要安装的CUDA版本后,就很简单了,去NVIDIA官网直接下载对应版本就好了。
CUDA Toolkit Archive | NVIDIA Developer
wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run
sudo sh cuda_11.1.1_455.32.00_linux.run
(对应自己版本信息)
然后选择安装项,一般情况我们都安装了显卡驱动,所以这里第一项驱动最后一个最好不勾选,其他默认安装。
sudo vim ~/.bashrc
$ export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
特别注意文件夹路径,有时候文件夹直接是/usr/local/cuda,有时候是别的版本号,要确保文件夹存在。
source ~/.bashrc
最后更新环境变量。
检查一下CUDA是否安装正确:(注意文件夹路径一定要存在,需要跟上面设置环境变量的路径保持一致)
cat /usr/local/cuda/version.txt
安装cuDNN
官网下载地址:(需要注册)
CUDA Deep Neural Network (cuDNN) | NVIDIA Developer
特别注意拷贝的路径一定是上面指定的环境变量路径!
sudo cp cuda/include/cudnn.h /usr/local/cuda-10.1/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64
sudo chmod a+r /usr/local/cuda-10.1/include/cudnn.h
sudo chmod a+r /usr/local/cuda-10.1/lib64/libcudnn*
查看cuDNN版本方法:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
注意,这句话可能执行了没效果,那是因为新版本换位置了,需要用:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
这里再次注意路径问题。
至此CUDN + cuDNN安装完成
conda安装(略)
tensorflow-gpu 安装。
补充 环境操作:
创建自己的新conda环境:
$ conda create -n [环境名称] python=[需要的版本 X.X]
想使用环境时激活一下:
$ conda activate [环境名称]
想退出环境时:
$ conda deactivate
查看当前存在的环境:
$ conda env list
删除环境:
$ conda remove -n [环境名称] --all
1. conda创建虚拟环境
conda create --name tf1.15 python=3.6
conda activate tf1.15
2. 安装tensorflow wheel的索引
pip install nvidia-pyindex
3. 安装tensorflow-GPU
pip install nvidia-tensorflow==2.9.0
4. 测试tensorflow-GPU是否安装成功
依次输入python
,import tensorflow as tf
, tf.__version__
, tf.test.is_gpu_available()
,查看tensorflow版本并测试GPU能否正常运行。
使用本地浏览器连接远程服务器上Jupyter Notebook的配置方法
在服务器上。自己创建的环境中 安装Jupyter Notebook
pip install jupyter notebook
生成配置文件
jupyter notebook --generate-config
- 设置自己的密码
输入ipython
启动后,输入以下内容:
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'argon2:XXX'
In [3]: exit
保存下argon2:XXX
,这是后面会用到的密钥。
打开文件
vim ~/.jupyter/jupyter_notebook_config.py
按下 esc
,输入 :$
,跳到文件最后一行,按下 i
键,进入 INSERT
状态 ,然后将以下内容复制粘贴到文件末尾:
c.NotebookApp.ip = '*' # 允许访问此服务器的 IP,星号表示任意 IP
c.NotebookApp.password = u'argon2:XXX' # 之前生成的密码 hash 字串, 粘贴进去
c.NotebookApp.open_browser = False # 运行时不打开本机浏览器
c.NotebookApp.port = 8889 # 使用的端口,随意设置,不建议使用默认的8888,感觉经常会被占用
c.NotebookApp.enable_mathjax = True # 启用 MathJax
c.NotebookApp.allow_remote_access = True # 允许远程访问
按下esc
,输入:wq
,退出并保存
查看结果&本地与远程的对齐
输入jupyter notebook
,显示类似以下信息则启动成功:
[W 18:13:22.817 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[I 18:13:22.819 NotebookApp] Serving notebooks from local directory: /XXX/XXX
[I 18:13:22.819 NotebookApp] Jupyter Notebook 6.1.5 is running at:
[I 18:13:22.819 NotebookApp] http://node1:8890/
[I 18:13:22.819 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
按照 “running at” 提示的地址,打开本地浏览器,输入ip:port
如果能显示输入密码的界面,那么就成功了!如果显示“无法访问此网页”,那么还得往下走:
此时需要再打开一个本地终端,在本地终端输入:
ssh -N -f -L localhost:8889:localhost:8889 [用户名]@[服务器地址]
前一个8889是本地端口号,可随意设置。后一个8889就是刚才在配置文件里设置的端口号。这样做是为了将本地端口与服务器端口相映射,据说是因为防火墙,这样可以建立一个安全通道。
最后,在本地浏览器输入localhost:8889
,输入之前设置的密码,大功告成!
Jupyter Notebook 其他一些要注意的问题
打开.ipynb错误代码500的问题
解决!
-
- 修改配置文件
- 要先在服务器端启动 jupyter notebook,再另外开个本地终端,在本地终端输入建立端口映射的代码,顺序不能错。
- 要退出jupyter notebook,按两次control+C就可以。
- 要断开与服务器的连接,输入logout 就可以。