我开始学习如何使用TensorFlow进行机器学习。并且发现docker非常方便将TensorFlow部署到我的机器上。但是,我找到的示例不适用于我的目标设置。这是
在ubuntu16.04操作系统下,使用nvidia-docker一起托管jupyter和tensorboard服务(可以是两个容器或一个容器有两个服务)。从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
Tensorboard容器
nvidia-docker run \
--name tensorboard \
-d \
-v $(pwd)/logs:/root/logs \
-p 6006:6006 \
tensorflow/tensorflow:latest-gpu \
tensorboard --logdir /root/logs
我尝试将logs文件夹挂载到两个容器,让Tensorboard访问jupyter的结果。但是山似乎确实有效。当我在带有notebooks文件夹的jupyter容器中创建新文件时,主机文件夹$(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端口到达。
答案 0 :(得分:6)
今天我遇到了同样的问题。
简短回答:我将假设您正在为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可以创建独立的卷,取消链接到特定容器。这可能是一个解决方案。
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
答案 1 :(得分:0)
或者,您也可以使用ML Workspace Docker映像。 ML Workspace是一个Web IDE,它将Jupyter,TensorBoard,VS Code和许多其他工具和库组合到一个方便的Docker映像中。部署单个工作区实例非常简单:
docker run -p 8080:8080 mltooling/ml-workspace:latest
可以从同一端口访问所有工具。您可以找到有关如何访问TensorBoard here的信息。