在本教程结束,你将能够在(内网)的任意设备打开指定ip和端口,通过jupyter-notebook在服务器远程运行您的机器学习(python)代码,保存您的数据。
需要的设备:一台linux服务器,一台能远程连接服务器的windows10电脑,用来操作服务器。如果您是在学校,或者公司,则需要这两台设备在同一个内网下。
在win10电脑下打开远程桌面连接,通过ip地址连接ubuntu服务器,在服务器安装Anaconda。网址:https://www.anaconda.com/products/individual点击download,找到individual版本,选择linux-64bit的进行下载。下载完了进入到下载目录下,使用linux命令sudo sh Anaconda3-2020.11-Linux-x86_64.sh
安装,一路连按enter,最后需要输入yes。
你也可以在win10电脑上下载好安装包,使用ssh上传到服务器。
安装完成后,在linux命令行输入anaconda -h
,如果返回usage:anaconda [-h]巴拉巴拉一大堆,就是成功安装了。
同时测试python ,在命令行输入python,将会返回python版本,我这里安装的是3.8.5版本的python:
1.安装jupyter notebook
linux终端中输入:
conda install jupyter
一般来说,anaconda3是默认安装jupyter的,这里是再确认一下
2.配置jupyter notebook
1.生成jupyter config文件,使用如下代码生成配置文件:
jupyter notebook -generate-config
执行以后会生成
./jupyter/jupyter_notebook_config.py文件,使用vim编辑器打开该文件,在文件末尾加入下面四行
c.NotebookApp.ip = '*' # 指定哪些ip可以访问该笔记本,由于我们需要任意设备可以访问,在这里设置成*就可以了
c.NotebookApp.open_browser = False # 默认不自动打开浏览器
c.NotebookApp.password = '' # 输入刚刚生成的密钥,先别急着做,下一步会讲密钥如何生成
c.NotebookApp.port = 8888 # 设置端口, 建议使用默认的端口,就是8888,当然,使用任何其他端口应该都是可以的
c.NotebookApp.notebook_dir = '' # 设置Jupyternotebook 打开的根目录,这是linux服务器上的一个目录,可以不设置,那么会在你的根目录下运行
2.生成密钥
在linux命令行窗口依次执行:
python
from notebook.auth import passwd
passwd()
这里你可以输入任意密码,它会返回一个如下图所示的密钥
(在enter password和verify password后面我们需要输入相同的密码)
将密钥保存下来,这里我的是argon2:$argon2id$v=19$m=10240,t=10,p=8$fiZzKOmVtA+H4LzwCaCA
。。。。,我没截完整。
将该密钥记下来,放在上文的c.NotebookApp.password = ''
右边的引号中间。
3.测试是否配置完成
运行
jupyter notebook
结果如图
看图片中的最后一行,http://ubuntu-PowerEdge-T640:8888/
这里我的服务器是用了它自己的名字,你需要在命令行中输入ifconfig
得到服务器的实际ip地址,像这样:
记下inet中的ip地址,这就是你的ip地址。
最后在任意设备的浏览器上输入ip:端口,并且输入你刚刚两次输入的密码,在enter password
那一步。就可以连接上服务器了。
比如这样 192.168.107.101:8888
jupyter界面如下
你需要一直保证你的linux服务器终端没有关闭。否则会无法连接。
这里需要提醒一下,环境environment和kernel并不是完全相同的概念,只有我们把对应的环境和kernel链接上,才能在jupyter-notebook中切换kernel以切换我们需要的环境
1.创建一个虚拟环境,使用:
conda create -n xxx python=3.8
xxx为你为虚拟环境命的名
创建环境时,会配置一些基础的包,这时一路yes就完事了,安装完成后,使用:
conda env list
查看是否创建成功。
这里我创建了一个名为GNN的虚拟环境,而base环境是自带的。后面是它们的路径
2.用conda 安装 nb_conda以及ipykernel
conda install ipykernel
conda install nb_conda
进入GNN环境,并为其安装ipykernel:
conda activate GNN
conda install ipykernel
同样在GNN的环境下,创建名为csGNN的kernel。这里就可以看出我们的kernel和环境不是一一对应的。顺便提一下,一般把kernel和环境命名为相同的名字。
python -m ipykernel install --name csGNN --user
做完这一步就能用:
jupyter kernelspec list
查看你现在拥有的kernel了,我这里有三个。
由于我们的操作顺序,我们的kernel和环境env是一一对应的。(请忽略nlpgnn那个kernel)
试试再次输入jupyter notebook,这时点击右侧的新建就会出现我们的kernel。
当我们需要为CS-GNN kernel添加常用机器学习包时,我们该怎么做呢?
假设我们需要给GNN环境也就是cs-GNN kernel安装pytorch,这里的问题在于conda安装pytorch很慢,而且目前(2020.12.8)清华源的conda已经下架了,如果使用conda安装,并且配置镜像源为清华时,会提示404,大概意思是找不到pytorch这个包之类的。这里我推荐大家进入GNN环境使用pip安装pytorch:
conda activate GNN
pip install torch torchvision -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
之后在jupyter notebook中打开cs-GNN kernel,就可以使用如下代码可以查看是不是安装好了。
import torch
cuda = torch.cuda.is_available()
print(cuda)