You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么TensorFlow会占用所有CPU核心100%资源,如何解决?

TensorFlow 2.4.1 CPU使用率饱和问题排查与解决

问题背景

我全新安装了Jupyter Notebook内核及Python相关包,其中包括miniconda环境下的TensorFlow 2.4.1版本,运行过程中出现了异常的CPU占用问题:

  • 训练和测试模型时CPU使用率达到饱和,但此前的旧安装环境下CPU使用率很低,且两类环境完成任务的耗时基本一致
  • 分别在Jupyter Notebook和VSCode中测试,均出现相同问题

设备配置:Ubuntu 20.04系统、16GB内存、Intel® Core™ i5-8300H CPU @ 2.30GHz × 8
训练简单网络模型时的CPU使用率htop视图

问题解决

更新:问题已解决
排查过程如下:

  1. 首先参考英特尔官方关于TensorFlow和OpenMP线程配置的技术文档,调整TensorFlow 2.x原生线程配置参数测试,未获得优化效果,测试代码如下:
import tensorflow as tf
tf.config.threading.set_inter_op_parallelism_threads() 
tf.config.threading.set_intra_op_parallelism_threads()
tf.config.set_soft_device_placement(enabled)
  1. 之后转向OpenMP线程配置测试,将OMP_NUM_THREADS参数从0调整到8进行多组对比,测试结果如下:
    训练时长与OMP_NUM_THREADS的对应关系
  2. 最终确定OMP_NUM_THREADS=16的配置效果最优,配置代码如下:
import os
os.environ["OMP_NUM_THREADS"] = "16"

调整后CPU使用率有所下降,同时训练耗时也更短。
OMP_NUM_THREADS设为0时的CPU使用率

备注

我并非机器学习基准测试领域的专家,仅固定了keras.Sequential()模型的网络训练参数和拓扑结构,暂不清楚为什么我的设备默认会将OMP_NUM_THREADS=16设为最大线程数。

内容的提问来源于stack exchange,提问作者Mateus Hufnagel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:45:03