DocKer环境是Linux上启用TensorFlow GPU支持最简单的方法。Docker使用容器创建虚拟环境,将TensorFlow的安装与系统的其余部分隔离开来。TensorFlow程序在虚拟环境中运行,但与主机共享资源(访问目录、使用 GPU、连接到互联网等)。
TensorFlow可用于训练大规模深度神经网络所需的计算,使用该工具涉及的计算往往复杂而深奥。为了更方便 TensorFlow 程序的理解、调试与优化,我们发布了一套名为 TensorBoard 的可视化工具。您可以用 TensorBoard 来展现 TensorFlow 图,绘制图像生成的定量指标图以及显示附加数据等。
配置TensorBoard环境
配置好TensorFlow环境之后,费劲写了一个模型,训练了几次,Loss一直不降,准备用TensorBoard调试一下,整个配置过程颇费周折。
细节内容参考官方的TensorBoard Tutorial。
通常使用Docker Run命令的 -p 参数将Docker容器内的端口号映射到本地主机。缺省情况下,TensorBoard使用6006端口,所以我们将容器的6006端口映射到主机的6006端口。
docker run --runtime=nvidia -it -p 6006:6006 --rm -v $PWD:/tmp -w /tmp tensorflow/tensorflow:latest-gpu bash
查看Docker的容器的名称和端口映射
docker container ls
得到以下信息:
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8917893898ae tensorflow/tensorflow:latest-gpu "bash" 4 hours ago Up 4 hours 0.0.0.0:6006->6006/tcp, 8888/tcp naughty_wilson
另启一个Terminal,启动TensorBoard
docker exec -it 05ee0d5a5a0e tensorboard --logdir info/
启动成功后得到如下信息:
TensorBoard 1.8.0 at http://05ee0d5a5a0e:6006 (Press CTRL+C to quit)
在浏览器中输入:http://127.0.0.1:6006 或者 localhost:6006, 却得到如下页面:
断断续续在网上找了不少方法,最后找到解决方案,将宿主机网络断开后才可以正常访问TensorBoard页面: