我正在按照说明从Cloud Shell启动深度学习映像:
export IMAGE_FAMILY="tf-latest-cu92"
export ZONE="us-central1-f"
export INSTANCE_NAME="myvm"
gcloud compute instances create $INSTANCE_NAME \
--zone=$ZONE \
--image-family=$IMAGE_FAMILY \
--image-project=deeplearning-platform-release \
--maintenance-policy=TERMINATE \
--accelerator='type=nvidia-tesla-v100,count=1' \
--metadata='install-nvidia-driver=True'
虚拟机启动,我可以对其进行SSH验证,看看Jupyter Lab是否正在运行。
但是,我无法通过Cloud Shell进行WebPreview连接。我究竟做错了什么?
答案 0 :(得分:3)
不幸的是,深度学习图像上从CloudShell到JupyterLab的WebPreview目前不起作用。团队正在为此工作。
在此之前,请从笔记本电脑安装并使用gcloud ssh(注意实例名称和-L之间的-):
export INSTANCE_NAME="myvm"
gcloud compute ssh $INSTANCE_NAME -- -L 8080:localhost:8080
答案 1 :(得分:2)
无法使用Cloud Shell Web预览连接到JupyterLab的原因是,当JupyterLab在使用gcloud compute instances create
创建的myvm(单独的实例)上运行时,Web预览连接到了Cloud Shell VM实例>
但是,您可以在Cloud Shell中使用ssh隧道 ,就像您在自己的答案中建议的那样,然后然后使用Cloud Shell Web预览。
例如,如果在设置环境变量并创建实例之后在Cloud Shell中执行以下操作,则可以使用Web预览成功连接到JupyterLab:
export IMAGE_FAMILY="tf-latest-cu92"
export ZONE="us-central1-f"
export INSTANCE_NAME="myvm"
gcloud compute instances create ...
gcloud compute ssh $INSTANCE_NAME --zone=$ZONE -- -L 8080:localhost:8080
更新:正如评论中指出的那样,以上内容不足以使JupyterLab(在“深度学习映像”中配置)可以与Cloud Shell一起使用;我们还需要配置JupyterLab以允许跨域请求。由于我们通过ssh进行隧道传输,因此,出于安全原因,限制JupyterLab与本地主机的连接也是一种好习惯。为此,请在myvm上运行以下命令(例如,在设置了上面的隧道之后):
myvm$ sudo sed -i \
-e "s/\(c.NotebookApp.ip\).*/\1 = 'localhost'/g; \
s/\(c.NotebookApp.allow_origin\).*/\1 = '*'/g" \
/root/.jupyter/jupyter_notebook_config.py
myvm$ sudo pkill jupyter-lab # restart to pick up config