科研第二步:远程在服务器上跑程序&jupyter使用
前言
本篇文章主要介绍如何使用jupyter这个功能十分强大,并且可以写code和markdown的编辑利器,并且实现在服务器上运行jupyter可以使用服务器上的gpu速度以及图形化方便的IDE。
一、jupyter是什么?
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。
Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等
二、配置步骤
1.服务器上安装jupyter
在anaconda已经配置好的情况下,只需要使用:
conda install ipykernel
如果没有弄好anaconda的参考我的上篇博客:实现服务器上配置虚拟环境
此时jupyter已经可以使用了,直接输入jupyter notebook或者jupyter lab是可以用的,但是这样是不会跳出网页的,因为我们是远程连接服务器使用的jupyter,所以我们需要配置jupyter实现远程连接。
2.服务器远程使用jupyter
生成jupyter配置文件
使用这个指令
jupyter notebook --generate-config
生成jupyter配置文件之后我们可以给jupyter设置一个密码
设置密码
使用如下指令之后
jupyter notebook password
输入的密码会保存到 .jupyter/jupyter_notebook_config.json文件中
注意:本操作为自动设置密码,即后面不用在配置文件中单独配置密码
设置远程ip可访问
打开jupyter_notebook_config.py文件,在文件中加入如下几行
jupyter_notebook_config.py应该在.jupyter路径下
找到配置文件打开并设置
c.NotebookApp.ip = '*' #允许所有ip访问,很重要
c.NotebookApp.open_browser = False #不打开浏览器
c.NotebookApp.port = 8888 #端口为8888,可以自己设置
至此就可以使用刚才设置的密码和端口在自己电脑上的浏览器上连接jupyter了,首先在服务器上运行jupyter notebook
或者jupyter lab
这里推荐jupyter lab,可以实现代码不增加网页
如我的服务器地址为10.24.82.184那么我只需要在浏览器中输入10.24.82.184:8888
,8888正式刚才在配置文件中设置的端口号。
jupyter lab界面如下
3.jupyter添加kernel
jupyter
因为已经可以使用jupyter了,但是我们发现,在jupyter上运行ipynb的时候,内核只有一个默认的python3。
这是我的jupyter kernel图,我已将自己配置的三个虚拟环境添加入jupyter的kernel,因此有三个,可以方便在不同的编译环境下跑程序,如何实现请看下文
添加kernel
首先使用conda进入想要添加的环境的虚拟环境
conda activate name
然后使用which python
查看当前虚拟环境python所在的路径,然后cd进入该文件夹
示例,进入虚拟环境tf27的python所在的路径,我们只需要进入到虚拟环境名称这个文件夹就好了,不用进入到bin/python
然后在该目录下使用
python -m ipykernel install --user --name [虚拟环境名] --display-name [想要在jupyter上显示的环境名]
以tf27这个虚拟环境为例,我想让它在jupyter上显示TF27
python -m ipykernel install --user --name tf27 --display-name TF27
运行发现当前虚拟环境下没有ipykernel这个包
因此需要用conda下载,conda install ipykernel
下载完后重试即可,完成后在服务器上跑jupyter lab然后浏览器中输入[服务器ip]:[端口号]
即可访问jupyter lab
本地转发
在服务器上直接启动
jupyter notebook --no-browser --port=9997 --ip=127.0.0.1
在本机上转发端口
ssh -N -f -L localhost:9996:localhost:9997 -p 8001 fanshuai@10.24.82.151
然后本机上
http://127.0.0.1:9996/lab
总结
本文主要介绍了jupyter lab这一十分好用的notebook,不仅可以实现在服务器上用不同的kernel跑程序,还可以实现markdown和code的双重编写,只要按照教程一步一步完成即可。