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

使用Keras训练Sequential模型时如何限制CPU使用率至80%

限制Keras模型训练时的CPU使用率至80%

Keras(默认以TensorFlow为后端)会默认占用全部可用CPU资源,导致使用率拉满。以下是两种可靠的解决方案:

方法1:通过TensorFlow配置限制线程数

直接在TensorFlow层面控制运算线程数,从根源上减少CPU占用:

在导入库后、模型初始化前添加以下配置(根据你的CPU核心数调整线程数,例如8核CPU设为6-7,即可将使用率控制在80%左右):

import tensorflow as tf

# 设置 intra-op 和 inter-op 线程数
tf.config.threading.set_intra_op_parallelism_threads(6)
tf.config.threading.set_inter_op_parallelism_threads(6)

如果使用TensorFlow 1.x兼容模式,可改用Session配置:

from tensorflow.compat.v1 import ConfigProto, InteractiveSession

config = ConfigProto()
config.intra_op_parallelism_threads = 6
config.inter_op_parallelism_threads = 6
session = InteractiveSession(config=config)

方法2:系统层面限制进程CPU使用率

如果框架层面的设置效果不佳,可通过系统工具或Python库直接限制进程资源:

方式A:用psutil库动态限制

安装psutil:pip install psutil,然后在代码中添加进程限制逻辑:

import psutil

# 获取当前训练进程
p = psutil.Process()
# 绑定进程到指定CPU核心(示例:8核CPU绑定前6个核心,使用率约75-80%)
p.cpu_affinity([0,1,2,3,4,5])
# 可选:降低进程优先级,减少CPU抢占
p.nice(psutil.BELOW_NORMAL_PRIORITY_CLASS)

方式B:Linux系统用taskset命令启动脚本

直接在启动Python脚本时绑定CPU核心,无需修改代码:

# 示例:绑定到0-5号CPU核心
taskset -c 0-5 python your_training_script.py

修改后的完整训练代码示例

import tensorflow as tf
import psutil
from sklearn.metrics import accuracy_score
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# 配置TensorFlow线程数
tf.config.threading.set_intra_op_parallelism_threads(6)
tf.config.threading.set_inter_op_parallelism_threads(6)

# 设置进程CPU亲和性
p = psutil.Process()
p.cpu_affinity([0,1,2,3,4,5])

def get_model(n_inputs, n_outputs):
  model = Sequential()
  model.add(Dense(2500, input_dim=n_inputs, kernel_initializer='he_uniform',activation='relu'))
  model.add(Dense(n_outputs, activation='sigmoid'))
  model.compile(loss='binary_crossentropy', optimizer='adam')
  return model

def train_model(X, y):
  results = list()
  n_inputs, n_outputs = X.shape[1], y.shape[1]
  model = get_model(n_inputs, n_outputs)
  model.fit(X, y, verbose=1, epochs=100)
  yhat = model.predict(X)
  yhat = yhat.round()
  acc = accuracy_score(y, yhat)
  print('>%.3f' % acc)
  results.append(acc)
  return model,results

model,results = train_model(X, y)

注意事项

  • 线程数/核心数需根据实际CPU配置调整:例如4核CPU设为3个核心,使用率可控制在75%左右,接近80%的目标。
  • 若使用GPU训练,TensorFlow会自动将核心运算转移到GPU,CPU使用率会自然下降,无需额外限制。
  • psutil.cpu_affinity支持Windows、Linux多平台,taskset仅适用于Linux系统。

内容的提问来源于stack exchange,提问作者Ankit Bijlwan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:45:48