您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
如何用Docker成为更高效的数据科学家?
你的,镜像,容器如何用Docker成为更高效的数据科学家?
发布时间:2016-12-08加入收藏来源:互联网点击:
如何用Docker成为更高效的数据科学家?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
使用 Docker 容器来开发机器学习模型的好处有很多。近日,GitHub 的资深机器学习科学家 Hamel Husain 在 Towards Data Science 上发表了一篇入门级的 Docker 容器教程,文章从基本的概念谈起,清楚明白地介绍了 Docker 容器的一些基本的操作方式和注意事项。机器之心对本文进行了编译介绍。本文所涉及的所有相关代码请访问:https://github.com/hamelsmu/Docker_Tutorial
过去五年来,Docker 容器已然成了一个热门词汇,似乎我的所有软件工程师朋友都在使用它们来开发应用。我想搞清楚这种技术可以如何让我更有效率,但我发现我在网上找到的教程要么过于注重细节(解释了一些我作为数据科学家绝不会使用的功能),要么就过于浅显(没有足够的信息帮助我理解如何快速有效地使用 Docker)。
所以我写了这篇快速入门,这样你不必自己去网上筛选信息就能学习到快速上手 Docker 所需要的一切。
Docker 是什么?
你可以把 Docker 看作是轻量级的虚拟机——包含你运行应用所需要的一切。Docker 容器可以获取你的系统的状态的快照,这样其他人就可以使用这个快照快速重建你的计算环境。对于本教程而言,这就是你需要了解的一切。更多详细介绍可参阅:https://goo.gl/YzUwbc
为什么要使用 Docker?
1.重现性:作为专业的数据科学家,让你的结果能够重现是非常重要的。重现性不仅有助于同行评议,而且可以确保你创建的模型、应用或分析可以无障碍地运行,这能让你交付的成果更稳健,更能经受时间的考验。举个例子,假如你用 Python 创建了一个模型,只是运行 pip freeze 并将结果得到的 requirements.txt 文件发送给你的同事是不够的,因为其中只包含特定于 Python 的依赖条件——而实际上的依赖条件不只有 Python,还有操作系统、编译器、驱动程序、配置文件以及你的代码成功运行所需的其它数据。就算你只分享 Python 依赖条件也能成功,将所有东西都封装到一个 Docker 容器中还是能减轻其他人重建你的环境的负担,并让他们能更轻松地访问你的成果。
2.计算环境的可移植性:作为一位数据科学家,尤其是机器学习领域内的数据科学家,快速改变你的计算环境的能力能够极大地影响你的生产力。数据科学的开始工作常常是原型设计、探索和研究——这些工作并不一定立即就需要特定的计算资源。这个工作往往是在笔记本电脑或个人计算机上完成的。但是在后面某个时候,你往往会需要不同的计算资源来显著加速你的工作流程——比如使用更多 CPU 或强大的 GPU 来执行深度学习等任务。我看到很多数据科学家由于感受到了在远程机器上重建他们的本地环境的困难,就将自己局限在了本地计算环境内。而 Docker 能让你的环境(你的所有库和文件等等)的移植非常简单。在 Kaggle 竞赛中,快速移植计算环境也是一个巨大的竞争优势,因为你可以成本高效地利用 AWS 的宝贵计算资源。最后,创建 Docker 文件让你能移植很多你喜欢的本地环境配置——比如 bash 别名或 vim 插件。
3.强化你的工程能力:熟练使用 Docker 让你能将模型或分析部署成应用(比如用作提供预测的 REST API),从而让其他人也能使用你的成果。此外,你在数据科学工作流程中可能需要与存在于 Docker 容器中的其它应用进行交互,比如数据库。
Docker 术语
在我们继续深入之前,熟悉一下 Docker 的术语会很有帮助:
·镜像(image):是你想要创建的东西的蓝图。比如:Ubuntu+TensorFlow,带有英伟达驱动程序和一个运行的 Jupyter 服务器。
·容器(container):是你实现的运行的镜像的实例化。你可以运行同一个镜像的多个副本。分清镜像和容器之间的差异非常重要,因为这是新入门者常常混淆的两个概念。如果你不清楚镜像和容器的差别,停下来再读一次。
·Dockerfile:用于创建镜像的配方。Dockerfile 包含特殊的 Docker 语法。官方文档说:Dockerfile 是一个文本文档,其中包含了用户可以在命令行调用的用来组装成镜像的所有命令。
·commit:和 git 类似,Docker 容器提供了版本控制。通过 commit 发生的改变,你在任何时间都可以将你的 Docker 容器的状态保存为一个新镜像。
·DockerHub/Image Registry:人们可以发布公开(或私人)Docker 镜像的地方,用于促进合作与共享。
·层(layer):对已有镜像的修改,由 Dockerfile 中的一个指令表示。层按次序应用到基础镜像上,以创建出最终的镜像。
本文将使用这些术语,如果你在阅读时忘记了,一定要回来查看!这些术语很容易混淆,尤其是在镜像和容器之间——所以你在阅读时要保持警惕!
安装 Docker
你可以免费下载安装 Docker 社区版(Docker Community Edition),地址:https://www.docker.com/community-edition
创建你的第一个 Docker 镜像
在创建 Docker 容器之前,创建一个将用于定义镜像的 Dockerfile 会很有用。我们先慢慢解读一下下面的 Dockerfile。你也可以在与本教程关联的 GitHub 库中找到这个文件:https://goo.gl/iE4Bdr
# reference: https://hub.docker.com/_/ubuntu/
FROM ubuntu:16.04
# Adds metadata to the image as a key value pair example LABEL version="1.0"
LABEL maintainer="Hamel Husain <www.github.com/hamelsmu>"
##Set environment variables
ENV.UTF-8 LC_ALL=C.UTF-8
RUN apt-get update --fix-missing && apt-get install -y wget bzip2 ca-certificates \
build-essential \
byobu \
curl \
git-core \
htop \
pkg-config \
python3-dev \
python-pip \
python-setuptools \
python-virtualenv \
unzip \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN echo 'export PATH=/opt/conda/bin:$PATH' > /etc/profile.d/conda.sh && \
wget --quiet https://repo.continuum.io/archive/Anaconda3-5.0.0.1-Linux-x86_64.sh -O ~/anaconda.sh && \
/bin/bash ~/anaconda.sh -b -p /opt/conda && \
rm ~/anaconda.sh
ENV PATH /opt/conda/bin:$PATH
RUN pip --no-cache-dir install --upgrade \
multiprocessing \
sklearn-pandas
# Open Ports for Jupyter
EXPOSE 7745
#Setup File System
RUN mkdir ds
ENV HOME=/ds
ENV SHELL=/bin/bash
VOLUME /ds
WORKDIR /ds
ADD run_jupyter.sh /ds/run_jupyter.sh
RUN chmod +x /ds/run_jupyter.sh
# Run the shell
CMD ["./run_jupyter.sh"]
FROM 语句
FROM ubuntu:16.04
FROM 语句包含了 Docker 最神奇的部分。这个语句指定了你想在上面进行创建的基础镜像。通过使用 FROM 指定一个基础镜像,Docker 将会在你的本地环境中寻找名为 ubuntu:16.04 的镜像——如果它没有找到,它就会搜索你指定的 Docker Registry,默认是 DockerHub:https://hub.docker.com/explore/。如果你需要经常在你的 Ubuntu 等操作系统上安装程序,那么这种分层机制就非常方便。你不必费心从头开始安装 Ubuntu,而是可以直接在官方的 Ubuntu 镜像上开发!DockerHub 上托管着种类繁多的镜像,包括那些不只是提供了一个操作系统的镜像,比如如果你想要一个已经安装了 Anaconda 的容器,你可以选择在官方的 Anaconda Docker 镜像上开发,地址:https://hub.docker.com/r/continuumio/anaconda3/。最重要的是,你也可以随时发布你构建的镜像,即使该镜像是通过在其它镜像上加层得到的!这有无尽的可能性。
上一篇:骑自行车的时候运动摄像机如何安装能够拍出更酷的画面?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |