企业防火墙下TensorBoard Profiler标签显示空白问题咨询
TensorBoard Profiler页面全空白问题排查与解决
环境版本
- Python 3.7
- TensorFlow 2.9.1
- TensorBoard 2.9.1
- tensorboard-plugin-profile==2.11.2
操作配置
- 训练时的TensorBoard回调配置:
tb_callback = tf.keras.callbacks.TensorBoard(logdir=path_tologdir, histogram_freq=1, profile_batch=(1,5)) model.fit(train_ds, validation_data=valid_ds, callbacks=[tb_callback], epochs=10, verbose=2, use_multiprocessing=True, workers=2)
- 训练完成后,
path_to_logdir/plugins/profile/datetime/路径下已生成完整的.pb性能文件,打开overview_page.pb能看到有效分析数据 - TensorBoard启动命令:
tensorboard --logdir path_to_logdir/ --bind_all
问题现象
- 从其他服务器访问时,右上角Profiler下拉选项能看到,但点击后页面全空白
- 服务器日志抛出CSP相关错误:
Illegal Content-Security-Policy for script-src: 'unsafe-inline' Illegal Content-Security-Policy for script-src-elem: 'unsafe-inline'
- 换用
tf.profiler.experimental.start/stop()方法生成数据,问题依旧 - 按官方文档说明,离线/防火墙环境下仅会部分图表缺失,实际全空白不符合预期
原因与解决方法
核心原因
- CSP规则冲突:Profiler前端依赖
unsafe-inline脚本执行,但当前环境(服务器/反向代理)的CSP配置禁止了该选项,导致页面逻辑完全无法加载,直接空白。 - 版本不兼容:tensorboard-plugin-profile(2.11.2)和TensorBoard(2.9.1)版本差两个大版本,插件与核心TensorBoard的CSP规则不匹配,放大了冲突。
具体解决步骤
- 对齐插件与TensorBoard版本
把tensorboard-plugin-profile降级到和TensorBoard 2.9.x兼容的版本,执行:
pip install tensorboard-plugin-profile==2.9.1
- 调整CSP配置
- 如果是服务器或反向代理(如Nginx)有自定义CSP规则,需在配置中添加允许
unsafe-inline:
以Nginx为例,在站点配置里加:
- 如果是服务器或反向代理(如Nginx)有自定义CSP规则,需在配置中添加允许
add_header Content-Security-Policy "script-src 'self' 'unsafe-inline'; script-src-elem 'self' 'unsafe-inline';";
- 如果是TensorBoard自身的CSP限制,尝试启动时加
--unsafe-inline参数:
tensorboard --logdir path_to_logdir/ --bind_all --unsafe-inline
- 离线环境补充适配
如果是完全离线环境,除了上述步骤,还要手动处理Google Chart资源:- 下载
loader.js及相关图表静态资源 - 修改TensorBoard Profiler前端代码,将资源引用替换为本地路径(对应TensorBoard静态文件目录)
- 重启TensorBoard服务
- 下载
验证
重新生成或使用原有日志目录,按调整后的配置启动TensorBoard,访问Profiler页面检查是否正常加载图表。
内容的提问来源于stack exchange,提问作者haneulkim
相关产品推荐
相关产品推荐

