我一直试图在CPU集群上运行keras,为此,我需要限制使用的内核数量(这是一个共享系统)。因此,为了限制内核的数量,我登陆了this answer。然而,这根本行不通。我尝试使用以下基本代码运行:
from keras.applications.vgg16 import VGG16
from keras import backend as K
import numpy as np
conf = K.tf.ConfigProto(device_count={'CPU': 1},
intra_op_parallelism_threads=2,
inter_op_parallelism_threads=2)
K.set_session(K.tf.Session(config=conf))
model = VGG16(weights='imagenet', include_top=False)
x = np.random.randn(1000, 224, 224, 3)
features = model.predict(x)当我运行这个并检查htop时,它使用了所有(128个)逻辑核。这是角星里的虫子吗?还是我做错什么了?
Keras说,我的CPU支持SSE4.1和SSE4.2,它们不被使用,因为我没有从二进制编译。二进制编译也会修正原来的问题吗?
编辑:在从unix计算机启动keras脚本时,我找到了一个解决办法:
taskset -c 0-23 python keras_script.py这将在机器的前24个核心上运行脚本。它可以工作,但是如果它可以从keras/tensorflow中获得,那还是不错的。
发布于 2019-07-25 15:09:19
我找到了这段对我有用的代码片段,希望它能帮上忙:
from keras import backend as K
import tensorflow as tf
jobs = 2 # it means number of cores
config = tf.ConfigProto(intra_op_parallelism_threads=jobs,
inter_op_parallelism_threads=jobs,
allow_soft_placement=True,
device_count={'CPU': jobs})
session = tf.Session(config=config)
K.set_session(session)https://stackoverflow.com/questions/49677913
复制相似问题