神经网络训练实验中的队列管理器

2024-09-29 01:19:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Keras+TensorFlow后端进行神经网络实验。我在电脑上使用GPU,运行Windows7。你知道吗

我的工作流程如下所示。你知道吗

我创建了一个小的python脚本,它定义了一个模型,然后运行model.fit_generator约50个周期,如果验证精度在10-15个周期后没有提高,那么就提前停止。然后用python model_v3_4_5.py这样的命令运行终端

通常一个时代需要1.5个小时。在此期间,一些新的想法(训练参数或新的架构)进入我的脑海。你知道吗

然后我创建一个新的python脚本。。。你知道吗

在实验中我发现最好不要同时训练几个模型。我经历了历元时间加倍和验证精度奇怪的下降。你知道吗

因此,我想等到第一次训练结束后再进行第二次训练。同时,我想避免我的电脑闲置,并运行一个新的培训后,第一次已经完成。你知道吗

但是我不知道第一次训练什么时候结束,因此,运行timeout <50 hours> && python model_v3_4_6.py这样的命令将是一个愚蠢的解决方案。你知道吗

然后我需要一个队列管理器。你知道吗

我想到的一个解决方案是在我的电脑上安装Jenkins slave并使用Jenkins提供的队列。据我所知,詹金斯有GPU访问问题。你知道吗

另一个变种-在Jupyter笔记本的不同单元中训练模型。但是,我在这里看不到单元格执行的队列。这是一个topic, being discussed。你知道吗

更新。下一个变体。向模型脚本中添加一些代码,检索当前GPU状态(它当前是否运行NN?)如果它在计算的话就等着吧。这将产生问题的情况下,几个脚本(不止一个光明的新想法:))等待GPU闲置。你知道吗

还有其他的变种吗?你知道吗


Tags: py模型命令脚本modelgpu队列精度
1条回答
网友
1楼 · 发布于 2024-09-29 01:19:42

最后,我想到了简单的cmd脚本

set PYTHONPATH=%CD%
:start

for %%m in (train_queue\model*.py) do (
    python %%m
    del %%m
)

timeout 5
goto start

我们创建一个子目录train_queue,并将带有模型的脚本放入其中。所有脚本都将其输出记录到文件中,这些文件的名称包含时间戳。你知道吗

此脚本还调用^{} program

相关问题 更多 >