如何用Docker成为更高效的数据科学家?( 五 )


docker push hamelsmu/tutorial:v2
将之前提到的 Docker 镜像推送到这个库 。其标签为 v2 。参考:https://hub.docker.com/r/hamelsmu/tutorial/tags/ 。需要指出:如果你公开了你的镜像 。那么其他人就可以直接在你的镜像上加层 。就像本教程中我们在 ubuntu 镜像上加层一样 。对于想要重现或延展你的研究的其他人来说 。这非常有用 。
你已经掌握了
现在你知道如何操作 Docker 了 。你可以执行以下任务:
·与同事和朋友共享可重现的研究 。
·通过将你的代码暂时迁移到所需的更大的计算环境中 。无中断地赢得 Kaggle 竞赛 。
·在你的笔记本电脑上的 Docker 容器内进行本地的原型开发 。然后毫不费力地将同样的计算过程无缝迁移到服务器上 。同时还能保留你喜欢的本地环境配置(你的别名、vim 插件、bash 脚本、自定义提示等) 。
·使用 Nvidia-Docker 在 GPU 计算机上快速实例化运行 TensorFlow、PyTorch 或其它深度学习库所需的所有依赖包 。(如果你从头开始做 。这个过程将非常艰辛 。)参阅后面的彩蛋 。
·将你的模型作为应用发布 。比如用作从 Docker 容器提供预测的 REST API 。当你的应用 Docker 化了以后 。就可以按照需要轻松地随意复制 。
进阶阅读
到这里我们也只学到了 Docker 的一点皮毛 。前面还有很多东西值得掌握 。我很关注 Docker 领域 。我认为数据科学家会常常遇到它 。希望这篇文章能让你有足够的信心开始使用它 。下面这些资源曾在我的 Docker 之旅中为我提供过帮助:
·有用的 Docker 命令:https://zaiste.net/posts/removing_docker_containers/
·更有用的 Docker 命令:https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes
·Dockerfile 参考:https://docs.docker.com/engine/reference/builder/
·如何创建和推送到 DockerHub 上的库:https://docs.docker.com/docker-hub/repos/
彩蛋:Nvidia-Docker
我学习 Docker 最早的原因是要在单个 GPU 上做深度学习模型的原型开发 。然后在我需要更多计算资源时再迁移到 AWS 上 。我当时也在学习 Jeremy Howard 的出色的 Fast.AI 课程(http://www.fast.ai/) 。并且希望与其他人分享我的原型设计 。
但是 。要将英伟达 GPU 的驱动程序等所有依赖包都包含以来 。你不能使用 Docker 。而是要用 Nvidia-Docker(https://github.com/NVIDIA/nvidia-docker) 。这比使用 vanilla Docker 要多花一些功夫 。但只要你理解了 Docker 。做起来就很简单 。
我将我的 Nvidia-Docker 设置放在这里:https://github.com/hamelsmu/Docker_Tutorial/tree/master/gpu_tutorial 。你可以用这个来进行练习 。

推荐阅读