我对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
我从DockerHub中提取的最新张量流图像中手动创建了图像tensorflow-py3-gpu-keras
:
docker run tensorflow
在容器内:
pip3 install keras
另一个终端docker commit
。
答案 0 :(得分:4)
您是否尝试过使用docker cp
?这允许您将文件从Docker文件系统移动到主机,即使容器已停止(只要它没有被删除)。语法如下所示:
docker cp <container id>:/path/to/file/in/container /path/to/file/in/host