引言
在深度学习研究过程中,我们经常需要与团队共享训练过程中的可视化数据。TensorBoard是一款强大的可视化工具,用于展示模型训练过程中各种指标的变化情况,如损失函数曲线、权重分布图等。然而,在没有公网IP的情况下,本地搭建的TensorBoard服务往往只能在服务器本地访问。为了解决这一问题,我们可以借助内网穿透工具ngrok来实现在任意网络环境下远程访问服务器上运行的TensorBoard服务。以下是如何通过ngrok实现这一目标的详细步骤。
步骤一:安装与启动TensorBoard
首先,确保你已经在Linux服务器上成功安装了TensorFlow,并且有一个训练日志目录。假设你的日志位于 /path/to/tensorflow/logs
下,你可以启动TensorBoard服务:
tensorboard --logdir=/path/to/tensorflow/logs --port=6006
上述命令会在服务器上监听6006端口,并显示一个本地URL(通常是 http://localhost:6006
),但在外部网络环境下无法直接访问。
步骤二:安装ngrok
如果没有安装ngrok,可以通过curl命令在服务器上快速安装:
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
unzip ngrok-stable-linux-amd64.zip
sudo mv ngrok /usr/local/bin/
步骤三:注册并获取ngrok Authtoken
为了获得更稳定的隧道服务,你需要在ngrok官方网站注册并获取Authtoken。将Authtoken添加到ngrok配置中(如果尚未配置):
ngrok config add-authtoken your_auth_token_here
或者
echo "authtoken: your_auth_token_here" > ~/.ngrok2/ngrok.yml
步骤四:使用ngrok进行内网穿透
接下来,通过ngrok启动一个隧道,将其指向TensorBoard正在监听的本地端口:
ngrok http 6006
运行上述命令后,ngrok会输出类似如下信息:
Session Status online
Account YourUsername (Plan: Free)
Version 2.3.40
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://abcdefg.ngrok.io -> http://localhost:6006
Forwarding https://abcdefg.ngrok.io -> http://localhost:6006
步骤五:远程访问TensorBoard
复制ngrok提供的HTTPS链接(例如上述例子中的 https://abcdefg.ngrok.io
),并在任意设备的浏览器中打开这个链接,你就能看到远程服务器上运行的TensorBoard界面了。