3

我正在使用说明从 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 以连接到它。我究竟做错了什么?

4

2 回答 2

3

不幸的是,深度学习图像上从 CloudShell 到 JupyterLab 的 WebPreview 目前不起作用。该团队正在为此努力。

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

export INSTANCE_NAME="myvm"
gcloud compute ssh $INSTANCE_NAME -- -L 8080:localhost:8080
于 2018-07-03T20:57:59.973 回答
2

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

但是,您可以在Cloud Shell中使用 ssh 隧道,就像您在自己的答案中提出的那样,然后使用 Cloud Shell 网络预览。

例如,如果我在设置环境变量并创建实例后在 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
于 2018-07-04T00:35:23.770 回答