来自Jupyter Lab的CloudShell的Web预览不起作用

问题描述 投票:3回答:2

我正在使用说明从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'

VM启动,我可以ssh到它,看到Jupyter实验室正在运行。

但是,我无法从Cloud Shell进行WebPreview连接。我究竟做错了什么?

google-dl-platform
2个回答
3
投票

不幸的是,从CloudShell到JupyterLab的WebPreview深度学习图像目前无法正常工作。该团队正在研究这个问题。

在此之前,请从您的笔记本电脑安装并使用gcloud ssh(注意 - 实例名称和-L之间):

export INSTANCE_NAME="myvm"
gcloud compute ssh $INSTANCE_NAME -- -L 8080:localhost:8080

2
投票

您无法使用Cloud Shell Web预览连接到JupyterLab的原因是Web预览连接到您的Cloud Shell VM实例,而JupyterLab运行在您使用gcloud compute instances create创建的myvm(单独的实例)上

但是,您可以在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连接限制为localhost也是一种很好的做法(出于安全原因)。要实现此目的,请在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
© www.soinside.com 2019 - 2024. All rights reserved.