2017-10-18 4 views
1

私はDockerを完全に新しくしました。私はニューラルネットワークを訓練するためにそれを使用しています。既に実行中のドッカーコンテナからの成果物を保存する

実行中のコンテナがあり、NNをトレーニングするためのスクリプトを実行し、コンテナの書き込み可能なレイヤーにその重みを保存しています。最近、私はこの設定が間違っていることを認識しました(私は適切なRTFMを持っていません)、NNの重みはトレーニングの終了後に失われます。

ボリュームと永続的なデータストレージに関する回答とレシピを読んだことがあります。それらのすべてが一つのアイデアを表しています。データストレージを事前に準備する必要があります。

私のコンテナはで、すでに実行中ですです。間違った設定は私のせいだと私は理解しています。とにかく、私はこの実行中に取得される結果を失うことは望ましくありません(現在進行中です)。出来ますか?私の心に来た

一つの解決策は、1台の以上の端末を開いているwatch -n 1000 docker commit <image id> tag:label

実行し、スナップショットごとに1000秒をコミットすることです。ただし、最後のエポックで得られたウェイトは、エポック期間が異なり、1000の倍数ではないため、依然として危険です。

さらに洗練されたソリューションはありますか?このコンテナの

追加情報

画像は、次のDockerfileを使用して作成されました:

私は手動で最新のtensorflowの画像から画像 tensorflow-py3-gpu-kerasを作成した

は、DockerHubから引き出さ

FROM tensorflow-py3-gpu-keras 

WORKDIR /root 

COPY model4.py /root 
COPY data_generator.py /root 
COPY hyper_parameters.py /root 

CMD python model4.py 

docker run tensorflow

容器内:

別の端末で

pip3 install keras

docker commit

+0

ファイルをルートディレクトリに保存する必要はありますか? @ wl2776 – Sergiu

+0

はい、スクリプトは/ rootで実行され、現在のディレクトリ – wl2776

+0

にファイルを作成します。そのディレクトリに-vを使用してディレクトリをマウントしようとすると、そのディレクトリとすべてのファイルがパーマネント – Sergiu

答えて

4

docker cpを試しましたか?これにより、コンテナが停止していても(削除されていない限り)、Dockerファイルシステムからホストにファイルを移動することができます。構文は次のようになります。

docker cp <container id>:/path/to/file/in/container /path/to/file/in/host 
+0

私は 'docker commit'で私の問題を解決しました。しかし、 'docker cp'はもっと良い解決策です。私はそれを覚えていますが、そのようなハッキングはもう必要ないと思っています。 – wl2776

関連する問題