停止 TensorFlow 打印警告消息

Posted

技术标签:

【中文标题】停止 TensorFlow 打印警告消息【英文标题】:Stop TensorFlow from printing warning message 【发布时间】:2022-01-11 22:42:38 【问题描述】:

我正在使用 Kaggle 笔记本,每当我运行一个完全引用 TensorFlow 模块的单元格时,它都会打印出关于某种设置的巨大警告,但仍然有效。我查找了如何抑制来自 TensorFlow 的警告,我发现的所有内容都说要执行以下操作:

import os
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2" # Or "3", either one should work and I've tried both

我在导入 TensorFlow 之前和之后都尝试过这样做,但无济于事。该消息仍然打印出来。这是我收到的信息:

User settings:

   KMP_AFFINITY=granularity=fine,verbose,compact,1,0
   KMP_BLOCKTIME=0
   KMP_SETTINGS=1
   KMP_WARNINGS=0

Effective settings:

   KMP_ABORT_DELAY=0
   KMP_ADAPTIVE_LOCK_PROPS='1,1024'
   KMP_ALIGN_ALLOC=64
   KMP_ALL_THREADPRIVATE=128
   KMP_ATOMIC_MODE=2
   KMP_BLOCKTIME=0
   KMP_CPUINFO_FILE: value is not defined
   KMP_DETERMINISTIC_REDUCTION=false
   KMP_DEVICE_THREAD_LIMIT=2147483647
   KMP_DISP_NUM_BUFFERS=7
   KMP_DUPLICATE_LIB_OK=false
   KMP_ENABLE_TASK_THROTTLING=true
   KMP_FORCE_REDUCTION: value is not defined
   KMP_FOREIGN_THREADS_THREADPRIVATE=true
   KMP_FORKJOIN_BARRIER='2,2'
   KMP_FORKJOIN_BARRIER_PATTERN='hyper,hyper'
   KMP_GTID_MODE=3
   KMP_HANDLE_SIGNALS=false
   KMP_HOT_TEAMS_MAX_LEVEL=1
   KMP_HOT_TEAMS_MODE=0
   KMP_INIT_AT_FORK=true
   KMP_LIBRARY=throughput
   KMP_LOCK_KIND=queuing
   KMP_MALLOC_POOL_INCR=1M
   KMP_NUM_LOCKS_IN_BLOCK=1
   KMP_PLAIN_BARRIER='2,2'
   KMP_PLAIN_BARRIER_PATTERN='hyper,hyper'
   KMP_REDUCTION_BARRIER='1,1'
   KMP_REDUCTION_BARRIER_PATTERN='hyper,hyper'
   KMP_SCHEDULE='static,balanced;guided,iterative'
   KMP_SETTINGS=true
   KMP_SPIN_BACKOFF_PARAMS='4096,100'
   KMP_STACKOFFSET=64
   KMP_STACKPAD=0
   KMP_STACKSIZE=8M
   KMP_STORAGE_MAP=false
   KMP_TASKING=2
   KMP_TASKLOOP_MIN_TASKS=0
   KMP_TASK_STEALING_CONSTRAINT=1
   KMP_TEAMS_THREAD_LIMIT=4
   KMP_TOPOLOGY_METHOD=all
   KMP_USE_YIELD=1
   KMP_VERSION=false
   KMP_WARNINGS=false
   OMP_AFFINITY_FORMAT='OMP: pid %P tid %i thread %n bound to OS proc set %A'
   OMP_ALLOCATOR=omp_default_mem_alloc
   OMP_CANCELLATION=false
   OMP_DEFAULT_DEVICE=0
   OMP_DISPLAY_AFFINITY=false
   OMP_DISPLAY_ENV=false
   OMP_DYNAMIC=false
   OMP_MAX_ACTIVE_LEVELS=1
   OMP_MAX_TASK_PRIORITY=0
   OMP_NESTED: deprecated; max-active-levels-var=1
   OMP_NUM_THREADS: value is not defined
   OMP_PLACES: value is not defined
   OMP_PROC_BIND='intel'
   OMP_SCHEDULE='static'
   OMP_STACKSIZE=8M
   OMP_TARGET_OFFLOAD=DEFAULT
   OMP_THREAD_LIMIT=2147483647
   OMP_WAIT_POLICY=PASSIVE
   KMP_AFFINITY='verbose,warnings,respect,granularity=fine,compact,1,0'

有什么办法可以阻止它打印吗?

编辑:重现此消息的代码:

import tensorflow as tf
tf.constant(())

编辑:env 的输出:

'SHELL': '/bin/bash',
 'KMP_WARNINGS': '0',
 'DL_ANACONDA_HOME': '/opt/conda',
 'KAGGLE_DATA_PROXY_TOKEN': '<hidden>',
 'KAGGLE_URL_BASE': 'https://www.kaggle.com',
 'KAGGLE_KERNEL_INTEGRATIONS': '',
 'CONTAINER_NAME': 'tf2-cpu/2-6',
 'PWD': '/kaggle/working',
 'TESSERACT_PATH': '/usr/bin/tesseract',
 'TENSORFLOW_VERSION': '2.6.0',
 'HOME': '/root',
 'LANG': 'C.UTF-8',
 'KMP_SETTINGS': '1',
 'JAX_VERSION': '0.2.19',
 'CONTAINER_URL': 'gcr.io/deeplearning-platform-release/tf-cpu.2-6:nightly-2021-11-17',
 'ANACONDA_PYTHON_VERSION': '3.7',
 'PYTHONPATH': '/kaggle/lib/kagglegym:/kaggle/lib:/kaggle/input/tensorflow-great-barrier-reef',
 'KMP_BLOCKTIME': '0',
 'KAGGLE_DATA_PROXY_PROJECT': 'kaggle-161607',
 'KAGGLE_USER_SECRETS_TOKEN': '<hidden>',
 'SHLVL': '1',
 'KAGGLE_KERNEL_RUN_TYPE': 'Interactive',
 'PROJ_LIB': '/opt/conda/share/proj',
 'MPLBACKEND': 'agg',
 'LD_LIBRARY_PATH': '/usr/local/cuda/lib64:/usr/local/cuda/lib:/usr/local/lib/x86_64-linux-gnu:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:',
 'KMP_AFFINITY': 'granularity=fine,verbose,compact,1,0',
 'MKL_THREADING_LAYER': 'GNU',
 'LC_ALL': 'C.UTF-8',
 'PATH': '/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
 'PYTHONUSERBASE': '/root/.local',
 'KAGGLE_DATA_PROXY_URL': 'https://dp.kaggle.net',
 '_': '/opt/conda/bin/jupyter',
 'GIT_PYTHON_REFRESH': 'quiet',
 'PYDEVD_USE_FRAME_EVAL': 'NO',
 'JPY_PARENT_PID': '9',
 'TERM': 'xterm-color',
 'CLICOLOR': '1',
 'PAGER': 'cat',
 'GIT_PAGER': 'cat',
 'TF_CPP_MIN_LOG_LEVEL': '2',
 'TF2_BEHAVIOR': '1'

【问题讨论】:

在我看来这不像是张量流日志。你能粘贴可以重现这条消息的代码吗? 感谢您更新代码。我仍然无法使用 tensorflow 2.7.0 重现此行为。您使用的是哪个版本的张量流?你是如何安装张量流的?您当前的环境变量是什么(即env 的输出)? 这似乎是英特尔 MKL,您在哪里设置 KMP_AFFINITY 以包含“详细”? 我正在使用自动具有 TF 版本 2.6.0 的 Kaggle 笔记本。我从来没有设置过kmp_anything,我什至不知道kmp是什么...... 【参考方案1】:

所以我设法通过以下行解决了这个问题:

os.environ["KMP_SETTINGS"] = "false"

【讨论】:

以上是关于停止 TensorFlow 打印警告消息的主要内容,如果未能解决你的问题,请参考以下文章

拟合模型时,内核在一段时间后停止工作

在 TensorFlow 中存储多次运行的摘要编写器的建议做法是啥?

我们如何防止警告在其消息末尾打印奇怪的文本? [复制]

如何从 ExtJS 商店打印(或警告)值?

如何停止使用 protobuf3 打印错误消息“无法解析类型的消息,因为它缺少必填字段”

Jenkins 管道脚本 - 停止先前的构建,并在构建失败时打印消息