2017-10-04 4 views
0

私は、Keras + TensorFlowバックエンドを使用してニューラルネットワークで実験を行っています。 Windows 7を実行している私のPCでGPUを使用してこれを行います。ニューラルネットワークトレーニングの実験のためのキューマネージャ

私のワークフローは次のようになります。

モデルを定義する小さなpythonスクリプトを作成してから、有効性の精度が10-15エポック後に改善されない場合は、~50エポックで早期停止してmodel.fit_generatorを実行します。その後、私はpython model_v3_4_5.pyのようなコマンドで端末を実行します。

通常、1エポックには約1.5時間かかります。この間、いくつかの新しいアイデア(トレーニングパラメータや新しいアーキテクチャ)が私の頭に浮かび上がってきます。

その後、私は、私は並行していくつかのモデルを訓練しない方がよいことがわかってきた実験中

...新しいPythonスクリプトを作成します。エポックタイムの倍増と検証精度の奇妙な低下を経験しました。

したがって、最初のトレーニングが終了してから2番目のトレーニングが完了するまでお待ちしています。同時に、私は自分のPCのアイドリングを避け、最初のトレーニングが終わった直後に新しいトレーニングをしたいと思っています。

しかし、最初のトレーニングが終了した時点を正確にはわからないので、timeout <50 hours> && python model_v3_4_6.pyのようなコマンドを実行するのはダム解決策になります。

次に、何らかの種類のキューマネージャが必要です。

私の頭に浮かんだ解決策は、Jenkinsが自分のPCにスレーブをインストールし、Jenkinsが提供するキューを使用することです。私が知る限り、JenkinsはGPUアクセスに関する問題を抱えています。

Jupiterノートブックの別のモデルでは、もう1つの変形トレーニングモデルがあります。しかし、私はここでセル実行のキューを見ることができません。これはtopic, being discussedです。

更新。次の亜種。モデルのスクリプトにいくつかのコードを追加し、現在のGPUの状態を取得します(現在NNを実行していますか?)。これは、GPUがアイドル状態になるのを待っているいくつかのスクリプト(複数の明るい新しいアイデア:)の場合に問題を発生させます。

他にも変種はありますか?

+0

を呼び出します。https:?//github.com/fchollet/keras/tree/master/docker https://hub.docker.com/r/tensorflow/tensorflow/ –

+0

@ RobertD.Mogos:申し訳ありませんが、分かりません。ドッカーは任意の種類のキューを有効にしますか? – wl2776

+0

私の悪い、私はもっと説明している必要があります。いいえ、そうではありませんが、基本的にモデルごとにドッカーを立ち上げることができます。この方法で、トレーニングを隔離してドッキングすることで、検証精度が低下することはありません –

答えて

0

最後に、私はシンプルなCMDスクリプトに作ってみた

set PYTHONPATH=%CD% 
:start 

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

timeout 5 
goto start 

一つは、サブディレクトリtrain_queueを作成し、その中でモデルとスクリプトを置きます。すべてのスクリプトは、ファイル名にタイムスタンプを含むファイルに出力を記録します。

このスクリプトはまた、あなたがドッキングウィンドウを使用したい場合はどうtimeout program

関連する問題