我一直在尝试在CPU群集上运行keras,为此,我需要限制使用的内核数量(这是一个共享系统)。因此,为了限制内核数量,我着眼于这个答案。但是,这根本行不通。我尝试使用以下基本代码运行:
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)
Run Code Online (Sandbox Code Playgroud)
当我运行它并检查时htop,它将使用所有(128)逻辑核心。这是喀拉拉邦的错误吗?还是我做错了什么?
Keras说我的CPU支持SSE4.1和SSE4.2,因为我不是从二进制编译的,所以未使用它们。从二进制进行编译还会解决原始问题吗?
编辑:从UNIX计算机启动keras脚本时,我找到了一种解决方法:
taskset -c 0-23 python keras_script.py
Run Code Online (Sandbox Code Playgroud)
这将在计算机的前24个内核上运行脚本。它可以工作,但是如果可以从keras / tensorflow中获得它仍然会很好。
我发现这段代码对我有用,希望它有帮助:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1247 次 |
| 最近记录: |