TensorBoard
TensorBoard 是一套可视化效果工具,用于调试、优化和了解 TensorFlow、PyTorch、Hugging Face Transformers 和其他机器学习程序。
使用 TensorBoard
在 Azure Databricks 中启动 TensorBoard 与在本地计算机上的 Jupyter 笔记本中启动它没有什么不同。
加载
%tensorboard
magic 命令并定义日志目录。%load_ext tensorboard experiment_log_dir = <log-directory>
调用
%tensorboard
magic 命令。%tensorboard --logdir $experiment_log_dir
TensorBoard 服务器将启动并在笔记本中显示内联用户界面。 它还提供了用于在新标签页中打开 TensorBoard 的链接。
以下屏幕截图显示了在填充的日志目录中启动的 TensorBoard UI。
还可以直接使用 TensorBoard 的笔记本模块启动 TensorBoard。
from tensorboard import notebook
notebook.start("--logdir {}".format(experiment_log_dir))
TensorBoard 日志和目录
TensorBoard 通过读取 TensorBoard 或 PyTorch 中的 TensorBoard 回调和函数生成的日志来可视化你的机器学习程序。 若要为其他机器学习库生成日志,可以使用 TensorFlow 文件编写器直接编写日志(对于 TensorFlow 2.x,请参阅模块:tf.summary,而对于 TensorFlow 1.x 中的较旧 API,请参阅模块:tf.compat.v1.summary)。
若要确保可靠地存储试验日志,Databricks 建议将日志写入到云存储,而不是写入到临时的群集文件系统。 对于每个试验,请在唯一目录中启动 TensorBoard。 对于生成日志的试验中的机器学习代码的每次运行,请将 TensorBoard 回调或文件编写器设置为写入到试验目录的子目录。 这样,TensorBoard UI 中的数据就会被分隔到运行中。
阅读官方 TensorBoard 文档,开始使用 TensorBoard 来记录你的机器学习程序的信息。
管理 TensorBoard 进程
当 Azure Databricks 笔记本拆离或 REPL 重启时(例如,当你清除笔记本的状态时),笔记本中启动的 TensorBoard 进程不会终止。 若要手动终止 TensorBoard 进程,请使用 %sh kill -15 pid
向其发送终止信号。 不正确地终止 TensorBoard 进程可能会损坏 notebook.list()
。
若要列出群集上当前运行的 TensorBoard 服务器及其相应的日志目录和进程 ID,请从 TensorBoard 笔记本模块运行 notebook.list()
。
已知问题
- 内联 TensorBoard UI 位于一个 iframe 中。 浏览器安全功能会妨碍 UI 内的外部链接生效,除非你在新标签页中打开此类链接。
- TensorBoard 的
--window_title
选项在 Azure Databricks 上被替代。 - 默认情况下,TensorBoard 会扫描一个端口范围来选择要侦听的端口。 如果在群集上运行的 TensorBoard 进程太多,则并非端口范围内的所有端口都可用。 可以通过使用
--port
参数指定端口号来解决此限制。 指定的端口应介于 6006 到 6106 之间。 - 为了使下载链接生效,必须在标签页中打开 TensorBoard。
- 当使用 TensorBoard 1.15.0 时,“投影仪”选项卡为空。 可以将 URL 中的
#projector
替换为data/plugin/projector/projector_binary.html
,以便直接访问投影仪页,这是一种解决方法。 - TensorBoard 2.4.0 存在一个已知问题,即升级后可能会影响 TensorBoard 呈现。
- 如果要将 TensorBoard 相关数据记录到 DBFS 或 UC 卷,可能会收到类似于
No dashboards are active for the current data set
的错误。 为了避免出现此错误,建议在使用writer
记录数据后调用writer.flush()
和writer.close()
。 这可确保所有记录的数据都正确写入,并且可供 TensorBoard 呈现。