我对 Docker 完全陌生。我用它来训练神经网络。
我有一个正在运行的容器,执行一个用于训练 NN 的脚本,并将其权重保存在容器的可写层中。最近我意识到这个设置是不正确的(我没有正确的 RTFM),训练结束后 NN 权重会丢失。
我已经阅读了有关卷和持久数据存储的答案和方法。所有这些都表达了一个想法:您必须提前准备好数据存储。
我的容器已经在运行。我明白不正确的设置是我的错。无论如何,我不想丢失将在此执行过程中获得的结果(现在正在进行中)。是否可以?
我想到的一种解决方案是再打开一个终端并运行 watch -n 1000 docker commit <image id> tag:label
也就是说,每 1000 秒提交一次快照。但是,在最后一个 epoch 上获得的权重仍然存在危险,因为 epoch 持续时间不同并且不是 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
Run Code Online (Sandbox Code Playgroud)
我已经tensorflow-py3-gpu-keras从 DockerHub 中提取的最新 tensorflow 图像手动创建了图像:
docker run tensorflow
容器内部:
pip3 install keras
而docker commit在另一个终端。
你试过使用docker cp吗?这允许您将文件从 Docker 文件系统移动到您的主机,即使容器已停止(只要它没有被删除)。语法如下所示:
docker cp <container id>:/path/to/file/in/container /path/to/file/in/host
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
395 次 |
| 最近记录: |