我正在使用说明从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连接。我究竟做错了什么?
不幸的是,从CloudShell到JupyterLab的WebPreview深度学习图像目前无法正常工作。该团队正在研究这个问题。
在此之前,请从您的笔记本电脑安装并使用gcloud ssh(注意 - 实例名称和-L之间):
export INSTANCE_NAME="myvm"
gcloud compute ssh $INSTANCE_NAME -- -L 8080:localhost:8080
您无法使用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