0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用docker和python工具包datmo为数据科学和AI框架快速配置环境

新机器视觉 来源:新机器视觉 作者:新机器视觉 2021-03-20 08:57 次阅读

无论是第一次设置TensorFlow的新手数据科学爱好者,还是使用TB级数据的经验丰富的AI工程师,安装库、软件包或者框架总是一个困难又繁琐的过程。但是像Docker这样的集装箱化工具正在彻底改变着软件的可重复性,只不过它们还没有在数据科学和人工智能社区中流行起来。但随着机器学习框架和算法的不断发展,我们将很难花时间专注于学习所有相关的开发人员工具,尤其是那些与模型构建过程没有直接关联的工具。

在这篇文章中,我将展示如何使用docker和python工具包datmo为任何流行的数据科学和AI框架快速配置环境。

一.Docker

1.docker是什么

该软件于2013年由dotCloud 公司推出,发布以来一直备受关注和讨论,被认为可能会改变软件行业。

2.为什么使用docker

如果让你说出软件开发最烦人的事情,那么环境配置必然是其中之一。例如开始编写Python应用程序,那么你的第一个步骤就是在您的计算机上安装Python。软件运行时,你不仅需要让自己计算机上的环境需适合你的应用程序按预期运行,并且还需要与生产环境相匹配。这就是所谓的环境一致性问题。这里面大量的重复劳动不说,还经常出现系统不兼容等莫名其妙的问题,非常令人崩溃。很可能再自己机器上跑通了,但放到用户的环境里,或者服务器上就出问题了。

那么可不可以在软件安装的时候把软件需要的环境一并复制过去呢?虚拟机(virtual machine)就是带环境安装的一种解决方案。它可以在一种操作系统里面运行另一种操作系统,但它的缺点很多:资源占用多、冗余步骤多、启动慢等等。

Docker是一种全新的虚拟化方式。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。在这样的前提下,它跟传统的虚拟化方式相比具有众多优势:

高效的利用系统资源。

启动速度快。容器里面的应用,直接就是底层系统的一个进程,而不是虚拟机内部的进程。由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。

确保了应用运行环境一致性。

可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。

容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包,所以容器文件比拟机文件要小很多。

3.如何使用docker

首先要理解Docker的三个概念:镜像、容器、仓库。

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。镜像是只读的,可以用来创建Docker容器,容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

Docker Registry是集中存放镜像文件的场所,提供集中的存储、分发镜像的服务。一个 Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

最常使用的 Registry 公开服务是官方的 Docker Hub,这也是默认的 Registry,并拥有大量的高质量的官方镜像。

这里以TensorFlow机器学习框架搭建为例讲解如何利用docker快速搭建环境。

首先你需要安装并启动Docker。如果要使用GPU则安装nvidia-docker。

1)直接使用别人做好的镜像

在命令行输入以下两条命令:

docker image pull tensorflow/tensorflow docker run -it -p8888:8888-v /$(pwd)/notebooks:/notebooks tensorflow/tensorflow

第一行命令在Docker Hub上拉取tensorflow官方镜像的cpu版本。

第二行则由此镜像创建一个容器,并在容器里运行jupyter服务。在你的浏览器上打开http://localhost:8888/,就可以在jupyter里导入TensorFlow包了。

-v 参数的作用是将宿主机当前目录下的notebook目录挂载到容器内的/notebooks目录,不添加这个参数的话,当结束 container 的时候,jupyter notebook 里的内容也会随之消失。

我们还可以进入到容器里查看容器的环境配置信息

docker run -it -p 8888:8888 tensorflow/tensorflow bash

解释一下参数含义:

-i:以交互模式运行容器,通常与 -t 同时使用

-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用

bash:在容器内执行bash命令

root@21cebb7bd6b4:/notebooks# python Python2.7.12(default, Dec 42017,14:50:18) [GCC5.4.020160609] on linux2 Type"help","copyright","credits"or"license"formore information. >>> import tensorflow >>> root@21cebb7bd6b4:/notebooks# python3 Python3.5.2(default, Nov232017,16:37:01) [GCC5.4.020160609] on linux Type"help","copyright","credits"or"license"formore information. >>> import tensorflow Traceback (most recent call last): File"", line1,in ImportError:Nomodulenamed'tensorflow'

2)保存修改后的容器为新的镜像

通过在容器里执行bash命令后我们可以看到,TensorFlow官方提供的这个容器的环境已经安装了Python2和Python3,不过只有在python2上安装了TensorFlow的环境,如果你想在python3运行TensorFlow的话,可以自己手动在容器里进行你喜欢的环境配置。

有没有办法把修改好的容器作为基础镜像,以后需要创建容器的时候都使用这个新的镜像呢?通过命令docker commit [CONTAINER]可以提交容器副本,制作属于你自己的镜像。命令格式如下:

dockercommit-m="description"-a="ahthorName"97744639b45d ahthorName/tensorflow-python3:latest

参数说明:

-m:提交的描述信息

-a:声明镜像作者

97744639b45d:容器ID

ahthorName/tensorflow-python3指定要创建的目标镜像名

docker ps -a这条命令可以列出所有已经创建的未删除的容器。

这里分享一个docker hub 上的镜像docker pull dash00/tensorflow-python3-jupyter,里面已经配置好了python3下TensorFlow的环境,大家可以直接拉取使用。

3)dockerfile定义全新镜像

上面的方法是在基础镜像的容器上做修改创建我们自己的镜像,我们也可以编写一个Dockerfile来构建全新的镜像。我们已经知道Docker镜像是制作Docker容器的模版,而Dockerfile则是一个定义Docker镜像的文件。下面我们尝试编写一个Dockerfile。

Dockerfile定义了容器内的环境配置。在此环境中,对网络接口和磁盘驱动器等资源的访问都是虚拟化的,该环境与系统的其他部分隔离。因此您需要将端口映射到外部的宿主机环境,并具体指定哪些文件是跟外部环境保持一致的。只要在定义好此操作之后,你就可以预期,无论什么时候你运行这个文件,由Dockerfile中定义的应用程序环境的构建都会执行完全相同的操作。

如何创建

这里是一个示例:创建一个空目录,创建一个名为的文件dockerfile,再创建两个文件requirements.txt和app.py和dockerfile放在一起。

以下是dockerfile文件内容,注释里有条语句的解释:

#使用python:2.7-slim作为基础镜像 FROM python:2.7-slim #指定工作目录(或者称为当前目录) WORKDIR /app #将当前文件夹下的内容(requirements.txt和app.py)复制到容器里的/app目录下 ADD . /app #安装在requirements.txt文件里指定的python包 RUN pip install --trusted-host pypi.python.org -r requirements.txt #向外部环境暴露80端口 EXPOSE 80 #设置环境变量 ENV NAME World #一旦容器开始运行,则运行app.py作为容器的主进程 CMD ["python", "app.py"]

FROM指定基础镜像,是必备的指令,并且必须是第一条指令。在 Docker Store 上有非常多的高质量的官方镜像提供给我们使用。

RUN 指令是用来执行命令行命令的。

CMD 指令用于指定默认的容器主进程的启动命令。有别于传统虚拟机概念,对于容器而言,其启动程序就是容器的主要进程,容器就是为了主进程而存在的。

有了Dockerfile 文件,我们就可以使用docker image build命令创建 image 文件了。运行:

#-t参数用来指定 image 文件的名字 Docker build -t friendlyhello

如果运行成功,使用docker image ls命令就可以看到新生成的 image 文件friendlyhello了,它位于你机器的本地Docker镜像注册表中。

docker imagels REPOSITORY TAG IMAGE ID friendlyhello latest 326387cea398

二.Datmo

如果你觉得上面描述的关于docker的操作依然十分麻烦的话,我还有一个工具推荐给你,那就是datmo。Datmo充分利用了Docker,简化了流程,帮助您快速轻松地运行AI框架。下面是使用流程:

1.前提条件

安装并启动Docker(https://docs.docker.com/install/#supported-platforms)

(如果使用GPU)安装CUDA 9.0(https://developer.nvidia.com/cuda-90-download-archive)

(如果使用GPU)安装nvidia-docker(https://github.com/datmo/datmo/wiki/Datmo-GPU-support-and-setup)

2.安装datmo

就像任何python包一样,使用以下命令从终端安装datmo:

$ pip install datmo

3.初始化datmo项目

在终端中,打开项目文件夹。然后,输入以下命令:

$ datmo init

然后,你将被要求提供项目的名称和描述。

4.启动环境设置

在输入名称和描述后,datmo将询问是否要设置环境 - 输入y并按enter。

5.选择系统驱动程序(CPU或GPU)

然后,CLI将询问希望为您的环境选择哪些系统驱动程序。如果不打算使用GPU,请选择cpu。

6.选择一个环境

接下来,你将从众多预打包环境中选择一种。只需在提示中回复您要使用的环境的编号或ID。

7.选择编程语言版本

上述许多环境都有不同的版本,具体取决于你计划使用的语言和版本。

例如,在选择keras-tensorflow环境后,我将面临以下提示,询问我是否要使用Python 2.7或Python 3.5。

8.启动工作区

现在是时候启动你的工作区了。选择你要使用的工作区,然后在终端中输入相应的命令。

Jupyter Notebook - $ datmo notebook JupyterLab - $ datmo jupyterlab RStudio -  $ datmo rstudio(在R-base环境中可用) 终端模式 - $ datmo terminal

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 容器
    +关注

    关注

    0

    文章

    481

    浏览量

    21876
  • 应用程序
    +关注

    关注

    37

    文章

    3136

    浏览量

    56378
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83466

原文标题:5分钟配置好你的AI开发环境

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AD7147使用,input pin与conversion stage是怎么连接的?控制寄存器要如何快速配置数据是怎么输入输出?

    AD7147使用,input pin与conversion stage是怎么连接的?控制寄存器要如何快速配置数据是怎么输入输出的? 我需要用AD7147做几个简单的触控屏的驱动(仅仅是触控部分
    发表于 12-18 06:53

    python运行环境的安装和配置

    Python是一种非常流行的编程语言,广泛应用于科学计算、Web开发、人工智能等领域。为了能够正常运行Python程序,我们需要先安装和配置Pyth
    的头像 发表于 11-29 16:17 540次阅读

    pycharm怎么配置python环境变量

    PyCharm 是一种以 Python 为主的集成开发环境 (IDE),它提供了一系列的功能用于开发、调试、测试和部署 Python 程序。在使用 PyCharm 开发 Python
    的头像 发表于 11-29 14:56 916次阅读

    行车记录仪专用的配置工具:termconfigv1.52快速配置工具

    一款行车记录仪专用的配置工具,可以快速产生指令termconfigv1.52快速配置工具
    发表于 11-15 09:30 0次下载

    【LuckFox Pico Plus开发板免费试用】+ADB工具包的使用

    ,为了使用的方便,应进行系统环境变量的配置。 在进入系统属性界面后,选取“环境变量”选项,见图2所示。 图2 系统属性界面 再选取Path变量加以编辑,并添加ADB工具包的路径,见图
    发表于 10-20 15:23

    【KV260视觉入门套件试用体验】Vitis AI 构建开发环境,并使用inspector检查模型

    AI环境配置完毕。 使用inspector检查模型 运行jupyterlab,新建Notebook: 导入相关python和要分析的深
    发表于 10-14 15:34

    OpenHarmony AI框架开发指导

    一、概述 1、功能简介 AI业务子系统是OpenHarmony提供原生的分布式AI能力的子系统。AI业务子系统提供了统一的AI引擎框架,实
    发表于 09-19 18:54

    不可错过!人工神经网络算法、PID算法、Python人工智能学习等资料分享(附源代码)

    3.Python人工智能学习工具包+入门与实践资料集锦 本资料的主要内容详细介绍的是Python工具包合集包括了:网页爬虫工具集,文本处理
    发表于 09-13 16:41

    【Milk-V Duo 开发板免费体验】2、SDK编译环境Docker镜像制作教程

    在/mnt目录,所以工作区也设置该路径)。COPY命令将主机目录的内容复制到镜像内。RUN命令会在构建镜像时进入镜像环境中执行相关的Linux指令(比方说给镜像安装指定的软件,文件的处理等
    发表于 08-24 20:23

    Docker映像Raspbian OpenVINO工具套件的安装过程

    * 安装此工具包的唯一方法。查找 更多信息。神经电脑棒或英特尔® Movidius™构建 Docker* 英特尔® Neural Compute Stick 2 构建映像 要构建 Dock
    发表于 08-15 06:59

    c++对于ARM软件开发工具包用户及参考指引

    这本书描述了armc++ 1.0版本的ARM软件开发工具包,以下简称为armc++。ARM c++是一套工具,当与ARM软件开发工具包2.11或更高版本一起使用时,允许您ARM家族的
    发表于 08-08 06:29

    利用OpenVINO工具包检测汽车品牌

    地检测品牌、车标和形状。 OpenVINO TM的Intel&Distribution工具包是一个全面的工具包,用于快速开发模拟人类视觉的应用程序和解决方案。该工具包以细胞神经
    发表于 08-04 07:36

    OpenVINOTM实现零售场所的社会平衡检测

    可用软件 :OpenVINOTM 工具包2021发布 推荐硬件 建议使用以下硬件来实施这一参考性实施。推荐硬件其他建议页面。 IEI* TANK AI/IoT Developer
    发表于 08-03 07:12

    如何访问已与eIQ工具包一起安装的python版本?

    1.7.3 Ubuntu 安装程序并将该工具包安装在远程板上。 但是,我想知道如何访问该工具包的命令行工具,以及如何访问已与eIQ 工具包一起安装的
    发表于 06-07 06:46

    如何把Python脚本集成到GUI工具包-Tkinter

    Tkinter(即 tk interface,简称“Tk”)本质上是对 Tcl/Tk 软件包的 Python 接口封装,它是 Python 官方推荐的 GUI 工具包,属于 Python
    的头像 发表于 05-05 15:02 391次阅读
    如何把<b class='flag-5'>Python</b>脚本集成到GUI<b class='flag-5'>工具包</b>-Tkinter