如何用pytorch中的tensorboardx来远程查看docker中的日志

注:远程指的是训练在docker容器中进行训练并产生日志文件,但是docker容器中并不能可视化日志文件,那么就需要在windows上可视化日志文件或者在宿主上进行可视化日志文件。

有两种思路:

  1. 生成docker容器的时候,就建立好docker容器和宿主机间的映射关系
  2. 为宿主机建一个虚拟环境,在这个虚拟环境中安装tensoboardx和tensorboard等工具,在这个环境中运行docker容器训练产生的日志文件。

1 .docker容器中用 tensorboard 运行日志文件

  1. 搭建docker 容器

      nvidia-docker run -it 
      -p 10022:22 
      -p 5009:80 
      -p 9006:6006 
      -p 9007:6007 
      -p 9008:6008 
      -v ~/wm_workspace:/root/workspace 
      --name "cu9.2pytorch1.3.1" 
      --shm-size 15710886400  py1.3_and1.7_latest:latest
    

    参数说明

     --name:创建的容器名,即 cu9.2pytorch1.3.1
      -p10022:22:端口映射,前者是宿主机的端口,后者是docker中的端口
      -p 9006:6006: tensorboard 端口映射
      -p 9007:6007: 预留端口
      -p 9008:6008: 预留端口
       -v ~/wm_workspace:/root/workspace 将宿主机的 ~/wm_workspace 挂载到容器内的 /root/workspace下
      tpy1.3_and1.7_latest:latest:是镜像
    

    docker内的6006端口映射到docker外的宿主机的端口是9006,所以在宿主机的 浏览器中打开tensorbroad时,端口应该是9006 。

  2. 启动tensorboard服务

    1.进入docker容器内
    2.cd到与日志目录在同一级下
    3.执行指令:
    tensorbroad --logdir ‘logs_path’ --port 6006
    
    注:其中logs_path为模型log的保存路径,--port指定用容器的哪个端口,默认是6006
    
  3. 用宿主机的浏览器查看可视化过程

    127.0.0.1:9006
    

    docker内的6006端口映射到docker外的宿主机的端口是9006,所以在宿主机的 浏览器中打开tensorbroad时,端口应该是9006 。

2.在宿主机中用tensorboard运行日志文件

在宿主机上安装Anaconda,然后建一个虚拟环境。用这个环境中的tensorboard运行docke容器训练产生的日志文件

启动tensorboard服务

1.在宿主机上找到日志文件的位置
2.cd到与日志目录在同一级下
3.执行指令:
tensorbroad --logdir ‘logs_path’ --port 6006

注:其中logs_path为模型log的保存路径,--port指定用容器的哪个端口,默认是6006

3.为远程服务器和本地机器建立隧道(端口转发响应)

​ 前面的一些设置只能在宿主机的浏览器中可视化tensorboardx训练产生的日志文件

但是通常宿主机,即远程服务器不易于本地操作,那么就需要将服务器的tensorboard运行的端口,转发到本地的机器上,一般本地的机器为windows、Mac、或者Linux

那么就需要给远程服务器和本地的机器建立端口的隧道映射:

  1. 本地机器为windows

    方法1:
    在Windows系统装一个Xshell,在文件->属性->ssh->隧道->添加,类型local,源主机填127.0.0.1(意思是本机),端口设置一个,比如16006,目标主机为服务器ip,目标端口一般是6006,如果6006被占了可以改为其他端口。
    
    方法2:
    打开cmd命令窗口:
    ssh -L 16006:127.0.0.1:6006 image2@10.132.213.10 #该命令同时会登录到远程服务器上
    注:方法2的缺点是不可关闭这个cmd命令程序窗口,关闭了,则这种隧道端口建立就会消失
    

    在本机打开网页127.0.0.1:16006
    即可查看远程的 tensorboard。

  2. 本地机器为Mac或 linux

    ssh -L 16006:127.0.0.1:6006 image2@10.132.213.10
    

4. tensorboardx的安装

先激活已有的pytorch虚拟环境

1.先安装对对应的GPU或CPU版本的tensorflow   #pip install tensorflow==2.0.0
2.然后安装tensorboardx   #pip install tensorboard

注:如果直接安装tensorboardx会报如下的错误

TensorFlow installation not found - running with reduced feature set.

NOTE: Using experimental fast data loading logic. To disable, pass
    "--load_fast=false" and report issues on GitHub. More details:
    https://github.com/tensorflow/tensorboard/issues/4784

Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.6.0a20210509 at http://localhost:6006/ (Press CTRL+C to quit)
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐