Motivation: jupyter notebook 可以存中间变量,方便我调整代码,但是怎么用服务器的GPU并在网页上查看编辑呢?
参考 https://zhuanlan.zhihu.com/p/440080687
服务端(Ubuntu):
- 激活环境
source activate my_env
- 安装notebook
pip install jupyter notebook
- 配置
jupyter notebook --generate-config
- 接下来键盘输入ipython 进入notebook
ipython
- 一行一行输入,会返回一串hash密码,记得复制保存一下,然后按
ctrl+z
退出In [1]: from jupyter_server.auth import passwd In [2]: passwd() # 设置一个jupyter notebook的密码 >>> argon2:$argon2id$v=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- 修改相应配置文件
vim ~/.jupyter/jupyter_notebook_config.py
,在文件末尾添加以下代码# 一些 Vim 命令帮助 # 跳转到文件末尾的方法:按esc键,然后输入:$ 即可跳转到文件末尾 # SHIFT + i 进行插入 # ESC 退出,然后输入 wq! 进行保存 c.NotebookApp.ip = '*' # 允许访问此服务器的 IP,星号表示任意 IP c.NotebookApp.password = 'argon2:$argon2id$v=xxxxxxxxxxxxxx' # 之前生成的密码 hash 字串, 粘贴进去 c.NotebookApp.open_browser = False # 运行时不打开本机浏览器 c.NotebookApp.port = 8890 # 使用的端口,随意设置,但是要记得你设定的这个端口 c.NotebookApp.enable_mathjax = True # 启用 MathJax c.NotebookApp.allow_remote_access = True #允许远程访问 c.NotebookApp.allow_root = True
配置好后就可以直接在本地端用网页访问服务器的 jupyter notebook 了,每次从本地端连接服务器时设置好端口对应即可,如下
本地端(Windows)
- 进入Windows cmd
- 连接远程服务器,对应好端口,只要是空闲的端口即可
# ssh -L [本地端口]:localhost:[远程端口] [远程用户名]@[远程IP] -p [ssh连接端口,默认22] ssh -L 8890:localhost:8890 xx@xx.xx.xx.xx -p 22
- 打开虚拟环境
source activate my_env
- 启动 jupyter notebook
jupyter notebook
- 在浏览器中输入localhost:[本地端口],输入设定的 jupyter 密码,即可进入!
将虚拟环境配置到 jupyter notebook 中
由于 notebook用到的 ipykernel 和 python 的不一样,所以还需要将响应的虚拟环境的依赖配置到 jupyter notebook 中的 kernel 中
参考 https://blog.csdn.net/zhaoqian19921029/article/details/91382150
- 下载 ipykernel,通常下载 jupyter notebook 后自动下载了,用
conda list
看一下有没有 ipykernel 和 ipython包,没有的话conda install ipykernel
- 将自己的环境
my_env
配置到 ipykernel 中ipython kernel install --user --name=my_env
(my_env)xx@xxxx:xxxx$ ipython kernel install --user --name=my_env >>> Installed kernelspec safemllm in /home/jd/.local/share/jupyter/kernels/safemllm
- 再打开 jupyter notebook 的 web 页面就可以在 Select Kernel 里看见和选择自己的环境了