我正在对大约8000个句子的句子分类数据集训练一个简单的Bi-LSTM模型。我提取了有关模型的代码片段,如下所示。在不同的时期,我随机且不一致地经历了训练的减慢和加速。这很奇怪,就像在我的本地计算机或公司服务器上一样,没有发生,但是在我的AWS服务器上。我想知道是什么原因会导致在不同时期随机降低训练速度?我可以确认没有其他CPU或内存密集型进程同时运行。我的程序是唯一的。
代码:
input_shapes=Input(shape=(100, 300))
embedding = Embedding(...)(input_shapes)
lstm = Bidirectional(LSTM(units=100, return_sequences=False))(embedding)
dense = Dense(600)(lstm)
final = Dense(num_of_classes, activation="softmax")(dense)
model = Model(inputs=input_shapes, outputs=final)
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
training_generator = data_generator(...) #my own method to generate batch on the fly
training_steps_per_epoch = round(len(X_train) / 100
model.fit_generator(training_generator, steps_per_epoch=training_steps_per_epoch, epochs=20)
...
配置:
OS: Ubuntu 18.04.2 LTS
CPU: 8 Cores, Mem: 32G
conda 4.4.10
tensorflow 1.10.0
theano 0.9.0
scikit learn 0.19.0
keras 2.0.9
fasttext 0.9.1
nltk 3.2.5 (stopwords, wordnet)
pydot 1.2.3
观察/问题:在不同时期内训练速度变慢并随机加速,在此期间观察到不同的CPU使用率。例如,在花费60秒钟的时代,我注意到CPU使用率约为300%。但是,当花费少于10秒时,CPU使用率为600%。但是,如上所述,在这段时间内,AWS服务器上根本没有其他用户流程。我的AWS服务器是专门为此实验创建的。而且这仅发生在我的AWS服务器上,而不发生在我的本地计算机或公司服务器上。查看在不同时期观察到的时间的屏幕截图
屏幕截图