docker-机器学习深度学习模型部署的容器化方案_第1页
docker-机器学习深度学习模型部署的容器化方案_第2页
docker-机器学习深度学习模型部署的容器化方案_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

docker-机器学习深度学习模型部署的容器化⽅案

⽬前,使⽤docker部署机器学习或深度学习模型正在成为企业⼤规模部署的⼀种常规操作。基于⽬前⼯作的情况,刚好可以使⽤现成的模

型尝试使⽤docker进⾏部署。主要有以下

1.什么是docker

2.个性化环境的定制开发-Dockerfile的制作

3.docker常⽤命令

4.模型部署

什么是docker

Docker是⼀个开源的应⽤容器引擎,基于Go语⾔并遵从Apache2.0协议开源。

Docker可以让开发者打包他们的应⽤以及依赖包到⼀个轻量级、可移植的容器中,然后发布到任何流⾏的Linux机器上,也可以实现虚拟

化。

容器是完全使⽤沙箱机制,相互之间不会有任何接⼝(类似iPhone的app),更重要的是容器性能开销极低。

它有以下⼏点优势:

1.更快速的交付和部署;Docker在整个开发周期都可以完美的辅助你实现快速交付。Docker允许开发者在装有应⽤和服务本地容器做

开发。可以直接集成到可持续开发流程中。例如:开发者可以使⽤⼀个标准的镜像来构建⼀套开发容器,开发完成之后,运维⼈员可

以直接使⽤这个容器来部署代码。Docker可以快速创建容器,快速迭代应⽤程序,并让整个过程全程可见,使团队中的其他成员更

容易理解应⽤程序是如何创建和⼯作的。Docker容器很轻很快!容器的启动时间是秒级的,⼤量地节约开发、测试、部署的时间。

2.⾼效的部署和扩容;Docker容器⼏乎可以在任意的平台上运⾏,包括物理机、虚拟机、公有云、私有云、个⼈电脑、服务器等。这

种兼容性可以让⽤户把⼀个应⽤程序从⼀个平台直接迁移到另外⼀个。Docker的兼容性和轻量特性可以很轻松的实现负载的动态管

理。你可以快速扩容或⽅便的下线的你的应⽤和服务,这种速度趋近实时。

3.更⾼的资源利⽤率;Docker对系统资源的利⽤率很⾼,⼀台主机上可以同时运⾏数千个Docker容器。容器除了运⾏其中应⽤外,

基本不消耗额外的系统资源,使得应⽤的性能很⾼,同时系统的开销尽量⼩。传统虚拟机⽅式运⾏10个不同的应⽤就要起10个虚

拟机,⽽Docker只需要启动10个隔离的应⽤即可。

4.更简单的管理;使⽤Docker,只需要⼩⼩的修改,就可以替代以往⼤量的更新⼯作。所有的修改都以增量的⽅式被分发和更新,从

⽽实现⾃动化并且⾼效的管理。

个性化环境的定制开发-Dockerfile的制作

针对常见业务场景,每个⼈电脑开发的开发环境都不⼀样,要不就是python版本不⼀样,要不就是TensorFlow版本不⼀样,避免出现我的

代码只能在⾃⼰机器上跑的尴尬局⾯出现,因此建⽴⼀个统⼀的开发部署环境就成为必然。Dockerfile正是为此⽽诞⽣。Dockerfile的常⽤

命令有以下⼏种

1.FROM,获取基础镜像

2.COPY,复制本机⽂件到docker容器的指定⽬录中

3.ADD,复制(并解压)⽂件到docker容器的指定⽬录中

4.RUN,运⾏linux命令,⽤于创建必要的开发环境

5.WORKDIR,设置⼯作⽬录

6.ENV,

7.USER

其他的⼀些如EXPOSE,LABEL,STOPSIGNAL,VOLUME等命令在现阶段还没⽤上。

⽬前⾃⼰的定制化Dockerfile如下

#baseimage

FROMubuntu:18.04

#MAINTAINER

#安装相应依赖

RUNapt-getupdate\

&&apt-getinstallwgetcurlvimgcczlib1g-devbzip2-y\

&&apt-getinstallzlib1g.dev\

#安装libssl1.0-dev解决pip安装时md5模块⽆法导⼊问题

&&apt-getinstallopenssllibssl1.0-dev-y\

&&apt-getinstallg++build-essential-y\

#&&apt-getinstallpython-tk-y\

#&&apt-getinstalltk-dev-y\

&&mkdir/usr/local/source\

#设置⼯作⽬录

WORKDIR/usr/local/source

RUNwget/ftp/python/2.7.12/Python-2.7.12.tgz\

&&tarxvfPython-2.7.12.tgz&&cdPython-2.7.12\

&&./configure--prefix=/usr/local/python27&&make&&makealtinstall\

#备份旧版本

&&mv/usr/bin/python/usr/bin/python27_old\

#配置默认python

&&ln-s/usr/local/python27/bin/python/usr/bin/python\

&&ln-s/usr/local/python27/bin/python-config/usr/bin/python-config\

#下载安装pip

&&curlhttps://bootstrap.pypa.io/get-pip.py-oget-pip.py\

&&pythonget-pip.py\

#备份旧pip

#&&mv/usr/bin/pip/usr/bin/pip_old

#建⽴连接

&&ln-s/usr/local/python27/bin/pip/usr/bin/pip\

#安装包

&&cd/usr/local/source\

&&pipinstallCython==0.29.7\

&&pipinstallpyyaml==5.1\

&&pipinstallnumpy==1.16.3\

&&pipinstallpandas==0.23.2\

&&pipinstallscipy==1.2.1\

&&pipinstallscikit-learn==0.20.3\

&&pipinstallmatplotlib==2.1.0\

&&pipinstalllightgbm==2.2.2\

&&pipinstallcatboost==0.13.1\

&&pipinstallgrpcio==1.20.1\

&&pipinstallgrpcio-tools==1.20.1\

docker常⽤命令

Dockerfile制作完成后,就可以使⽤以下命令创建⼀个docker镜像

sudodockerbuild-itmydocker:v1./bin/bash

请记住末尾有个.(空格+.),后⾯/bin/bash的⽬的是镜像创建后直接开启⼀个并进⼊容器,进⼊命令⾏模式。

我们可以从主机复制东西到容器中,或者从容器复制东西到主机中,使⽤下列命令

sudodockercp主机⽂件路径容器ID:容器路径

##从主机复制⽂件到容器

dockercp容器ID:要拷贝的⽂件在容器⾥⾯的路径

要拷贝到宿主机的相应路径

其他常⽤命令

dockerimages

dockerps-a

##查看本机镜像

##查看本机创建的所有容器

dockerimagels##查看本机镜像

dockerrmi镜像ID(或镜像名称标签)##删除镜像

dockerrm容器ID##删除容器

先这些,想到再加,不懂的google或看官⽹⽂档

模型部署

既然容器环境已经创建好了,那就需要把模型⽂件拷贝进容器,为了部署⽅便,创建Dockerfile的时候也可以直接把模型复制进去(导致的

后果就是镜像过⼤,占⽤过多的空间)。为了调⽤模型,除了基本的调⽤API接⼝外,还需要额外包装⼀层通信⽹络层,基本过程就是外部

或其他容器发送请求数据给模型容器,模型容器接受到数据后,进⾏基本的特征⼯程和预测服务后,返回给发送端预测结果。本⼈在项⽬

中,先后调研并测试过现成的rpc框架,分别是以下三种

1.zerorpc,Python第三⽅开源库,安装简单,使⽤⽅便,缺点是速度慢,对于性能要求不⾼的可以尝试

2.Thrift,Facebook开源RPC框架,使⽤稍微复杂,⽀持跨语⾔传输,速度快,在测试过程中发现数据的传输不是随着数据量的递增呈

线性增长,⽽是指数增长,适⽤于单次数据量较少的情况

3.grpc,Google开源RPC框架,使⽤⽅法和难度和Thrift⼀样,速度⽐Thri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论