【问题标题】:How to run Tensorboard and jupyter concurrently with docker?如何与 docker 同时运行 Tensorboard 和 jupyter?
【发布时间】:2017-04-21 15:44:54
【问题描述】:

我开始学习如何使用 TensorFlow 进行机器学习。并且发现 docker 很方便将 TensorFlow 部署到我的机器上。但是,我可以找到的示例不适用于我的目标设置。这是

ubuntu16.04操作系统下,使用nvidia-docker同时托管jupyter和tensorboard服务(可以是两个容器,也可以是一个容器两个服务)。并且从 jupyter 创建的文件应该对主机操作系统可见。

  • Ubuntu 16.04
  • Dokcer
  • 英伟达码头工人
    • Jupyter
    • 张量板

Jupyter 容器

nvidia-docker run \
    --name jupyter \
    -d \
    -v $(pwd)/notebooks:/root/notebooks \
    -v $(pwd)/logs:/root/logs \
    -e "PASSWORD=*****" \
    -p 8888:8888 \
    tensorflow/tensorflow:latest-gpu 

张量板容器

nvidia-docker run \
    --name tensorboard \
    -d \
    -v $(pwd)/logs:/root/logs \
    -p 6006:6006 \
    tensorflow/tensorflow:latest-gpu \
    tensorboard --logdir /root/logs

我尝试将日志文件夹挂载到两个容器,并让 Tensorboard 访问 jupyter 的结果。但坐骑似乎确实奏效了。当我在 jupyter 容器中使用 notebooks 文件夹创建新文件时,主机文件夹 $(pwd)/notebooks 什么也没有出现。

我也按照Nvidia Docker, Jupyter Notebook and Tensorflow GPU中的说明进行操作

nvidia-docker run -d -e PASSWORD='winrar' -p 8888:8888 -p 6006:6006 gcr.io/tensorflow/tensorflow:latest-gpu-py3

只有 Jupyter 工作,张量板无法从端口 6006 访问。

【问题讨论】:

    标签: docker tensorflow jupyter tensorboard


    【解决方案1】:

    我今天也遇到了同样的问题。

    简短回答:我假设您为 Jupyter Notebook 和 tensorboard 使用 相同的容器。因此,正如您所写,您可以使用以下方式部署容器:

    nvidia-docker run -d --name tensor -e PASSWORD='winrar'\
                      -p 8888:8888 -p 6006:6006 gcr.io/tensorflow/tensorflow:latest-gpu-py3
    

    现在您可以同时访问 8888 和 6006 端口,但首先您需要初始化 tensorboard:

    docker exec -it tensor bash
    tensorboard --logdir /root/logs
    

    关于另一个选项:在不同的容器中运行 jupyter 和 tensorboard。如果您在不同容器中挂载相同目录时遇到问题(过去有一个错误),从 Docker 1.9 开始,您可以创建不链接到特定容器的独立卷。这可能是一个解决方案。

    1. 创建两个卷来存储日志和笔记本。
    2. 使用这些卷部署两个映像。

    docker volume create --name notebooks
    docker volume create --name logs 
    

    nvidia-docker run \
    --name jupyter \
    -d \
    -v notebooks:/root/notebooks \
    -v logs:/root/logs \
    -e "PASSWORD=*****" \
    -p 8888:8888 \
    tensorflow/tensorflow:latest-gpu
    

     nvidia-docker run \
     --name tensorboard \
     -d \
     -v logs:/root/logs \
     -p 6006:6006 \
     tensorflow/tensorflow:latest-gpu \
     tensorboard --logdir /root/logs
    

    【讨论】:

    • 感谢您提供解决方案。第一个解决方案对我有用!
    • 有什么办法可以避免:docker exec -it tensor bash 而是使用docker exec tensorboard --logs=... 之类的东西
    【解决方案2】:

    作为替代方案,您也可以使用ML Workspace Docker 映像。 ML Workspace 是一个 Web IDE,它将 Jupyter、TensorBoard、VS Code 和许多其他工具和库组合到一个方便的 Docker 映像中。部署单个工作区实例非常简单:

    docker run -p 8080:8080 mltooling/ml-workspace:latest
    

    所有工具都可以从同一个端口访问。您可以找到有关如何访问 TensorBoard here 的信息。

    【讨论】:

      猜你喜欢
      • 2020-04-14
      • 2021-12-26
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      • 2016-07-10
      • 1970-01-01
      相关资源
      最近更新 更多