我對Docker完全陌生。我正在使用它來訓練神經網絡。保存已運行的碼頭集裝箱中的工件
我有一個正在運行的容器,執行用於訓練NN的腳本,並將其權重保存在容器的可寫層中。最近我意識到這個設置是不正確的(我沒有正確的RTFM),並且在訓練結束後NN權重將會丟失。
我已閱讀有關卷和持久性數據存儲的答案和配方。他們都表達了一個想法:您必須提前準備好數據存儲。
我的貨櫃是已在運行。我明白不正確的設置是我的錯。無論如何,我不想失去在執行過程中獲得的結果(目前正在進行中)。可能嗎?已經來到我的腦海
一種解決辦法是打開一個更終端,運行watch -n 1000 docker commit <image id> tag:label
也就是說,提交快照每1000秒。然而,由於曆元持續時間不同,並且不是1000的倍數,所以在最後一個時期獲得的權重仍然處於危險中。
是否還有更優雅的解決方案?
附加信息
圖片此容器用下列Dockerfile創建的:
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
我已經手動從最新tensorflow圖像創建的圖像tensorflow-py3-gpu-keras
,從DockerHub被拉:
docker run tensorflow
集裝箱內:
pip3 install keras
而在另一個終端docker commit
。
您需要將文件保存在根目錄嗎? @ wl2776 – Sergiu
是的,腳本在/ root下運行,它在當前目錄 – wl2776
中創建文件,您可以嘗試在該位置使用-v來掛載一個目錄,這將使該目錄和永久 – Sergiu