TensorBoard回调导致TensorFlow训练出现Segmentation Fault如何解决?
TensorBoard回调触发Segmentation fault的修复方案
- 禁用TensorBoard回调的Profiler功能
问题根因为Profiler采样GPU数据时触发段错误,初始化TensorBoard回调时新增profile_batch=0参数即可关闭Profiler,代码示例:
该方案不会影响loss、准确率等常规指标的记录,可正常使用TensorBoard查看训练曲线。tensorboard = tf.keras.callbacks.TensorBoard(log_dir='./logs', profile_batch=0) model.fit(X, y, batch_size=32, epochs=10, validation_split=0.3, callbacks=[tensorboard]) - 调整Profiler采样批次
如需保留Profiler功能,可将采样批次避开训练初始阶段,例如设置为仅采样第10个批次:tensorboard = tf.keras.callbacks.TensorBoard(log_dir='./logs', profile_batch=10) - 确保TensorFlow与TensorBoard版本完全匹配
两者大版本号不一致会出现兼容问题,例如TensorFlow 2.5必须搭配TensorBoard 2.5.x版本,可通过以下命令核对版本:
版本不匹配时卸载现有版本后重新安装对应版本即可。pip list | findstr tensorflow - 全局禁用GPU Profiler
在Python代码最开头加入环境变量配置,完全关闭GPU性能监控功能:import os os.environ['TF_DISABLE_GPU_PROFILER'] = '1' - 手动记录训练指标
若以上方案均无效,可自定义keras回调,每个epoch结束后手动将loss、准确率等指标写入日志文件,训练完成后再启动TensorBoard查看,避开训练过程中回调的实时采样冲突。
内容的提问来源于stack exchange,提问作者RichWCP
相关产品推荐
相关产品推荐

