Docker化部署(GPU版本)

一般DL/ML模型需要使用到GPU资源,如何采用一般docker化部署无法部署深度学习模型和机器学习模型,如何使Docker能够使用到宿主机上GPU资源了,Nvidia 提供Nvidia-docker 如何使容器可以访问到宿主机上GPU资源

Nvidia-docker

docker原生并不支持在他生成的容7器中使用Nvidia GP资源。nvidia-docker是对docker的封装,提供一些必要的组件可以很方便的在容器中用GPU资源执行代码。从下面的图中可以很容器看到nvidia-docker共享了宿主机的CUDA Driver。

Cuda版本可以不随着宿主机cuda版本而改变

这样有一个好处,不同cuda版本与tf版本匹配就不会受到宿主cuda版本影响了

智能算法Docker化部署实践

智能算法是使用BERT优化的文本匹配算法,在API server集成时候做加速,但是如果不适用GPU资源,直接docker化 预测速度较慢,现在采用nvida-docker可以读取GPU资源 方式来

第一步:Dockerhub拉nvidia-cuda基础镜像

选择相应nvidia-cuda版本作为基础镜像

第二步:制作镜像 Dockerfile文件

文本匹配算法Dockerfile文件(这个非常重要)

FROM  nvidia/cuda:10.0-cudnn7-runtime-ubuntu18.04
MAINTAINER gaojing
RUN apt update
RUN apt install -y python3-pip
RUN pip3 install --upgrade pip
ADD textmatch /root/textmatch
RUN pip install -r /root/textmatch/requirements.txt
ARG workdir=/root/textmatch
WORKDIR ${workdir}
#CMD ["python","/root/textmatch/text_macth_algor_service.py"]
ENTRYPOINT ["python3", "text_macth_algor_service.py"]## shell脚本
##执行docker镜像生成命令
docker build -t 名字 dockerfile路径
docker build -t name .

如下所示,docker镜像容器流程

第三步:执行nvida-docker 命令或者docker run —runtime=nvidia 命令

测试是否读取到宿主机上GPU

docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
或者
sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

出现下面显卡信息表上docker容器可以读取宿主机上显卡资源

第四步:端口映射与挂载

##docker端口映射与挂载
docker run -d -p 0.0.0.0:9890:9890 -v /home/gaojing/Chatbot_data_models_path/models:/root/textmatch/models chatbot:test02 /bin/bash##docker gpu端口映射与挂载
nvida-docker run -d -p 0.0.0.0:9890:9890 -v /home/gaojing/Chatbot_data_models_path/models:/root/textmatch/models chatbot:test02 /bin/bash

部署整体流程

Docker cache 机制注意事项

采用用户可以使用参数 --no-cache 确保获取最新的外部依赖获取最新的更新特别是在 apt-get update 时候需要重新获取新信息,所以不需要采用cache机制

docker build --no-cache -t registry.uih/library/docker-nvidia-gpu-ubuntu18.04-base:v1.1 .
unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives are specified both as a flag and in the configuration file: insecure-registries: (from flag: [http://registry.uih], from file: [registry.kubeops.io:8096 registry.apps.feature.mydomain.com registry.uih])##为什么在daemon.json里面配置这些就有问题了 网上说主要是文本格式问题“”
"insecure-registries":["registry.kubeops.io:8096","registry.apps.feature.mydomain.com"]
##最好执行两行代码
sudo systemctl daemon-reload
sudo systemctl restart docker

Nvidia-docker 报错

docker: Error response from daemon: Unknown runtime specified nvidia. See 'docker run --help'.

这是daemon.json文件中是否配置了

{"runtimes": {"nvidia": {"path": "nvidia-container-runtime","runtimeArgs": []}}
}

一般更改daemon.json文件会docker启动失败

参考文献

nvidia-docker

Ubuntu18.04安装nvidia-docker(亲测有效,步骤详尽)

Nvidia-Docker安装使用 -- 可使用GPU的Docker容器

Docker容器和镜像的导入、导出

一文快速入门docker和nvidia-docker

cache 机制注意事项

docker用gpu的参数_Docker化部署(GPU)相关推荐

  1. docker启动nginx后挂了_Docker容器部署 Nginx服务

    1.查找 Docker Hub 上的 nginx 镜像 [root@localhost ~]# docker search nginx 2.拉取官方的Nginx镜像 [root@localhost ~ ...

  2. docker web程序本地化_Docker 容器化部署 Python 应用

    点击上方"Python数据科学",星标公众号 重磅干货,第一时间送达☞满600减350,当当这波羊毛我撸定了!♚作者:jerry,爬虫/数据分析/Web.Blog: http:// ...

  3. docker用gpu的参数_从零开始入门 K8s | GPU 管理和 Device Plugin 工作机制

    导读:2016 年,随着 AlphaGo 的走红和 TensorFlow 项目的异军突起,一场名为 AI 的技术革命迅速从学术圈蔓延到了工业界,所谓 AI 革命从此拉开了帷幕.该热潮的背后推手正是云计 ...

  4. Docker容器化部署config-server无法直接访问

    Docker容器化部署config-server无法直接访问 1. 本机ip启动方式: 2. Docker容器启动 1)问题 2)解决办法 - 本机启动 - 服务器启动俩种方式 3. dockerfi ...

  5. Docker容器化部署python

    1. 简介 Docker是目前主流IT公司广泛接受和使用的,用于构建.管理和保护它们应用程序的工具. 容器,例如Docker允许开发人员在单个操作系统上隔离和运行多个应用程序,而不是为服务器上的每个应 ...

  6. acme.sh申请Let‘s encrypt泛域名证书Docker化部署

    acme.sh申请Let's encrypt泛域名证书Docker化部署 一:手动安装acme.sh 二:申请证书 2.1 DNSAPI申请方式 2.2 DNS手动校验方式 2.3 HTTP校验方式申 ...

  7. win10 docker部署gpu项目

    win10 docker部署gpu项目 nvidia-docker win10安装docker 制作镜像 ubuntu18.04部署docker gpu项目 安装docker 配置docker使用gp ...

  8. Java开源开发平台O2OA V7.0发布,支持Docker容器化部署和三员管理模式

    O2OA开发平台开源至今,已经有很多开发者参与我们每个版本的迭代和更新,有的开发者已经利用O2OA在公司内部搭建公司的开发平台,有的开发者在商业项目中使用O2OA平台作为信息化系统建设的基础能力平台. ...

  9. 安装 esl php 模块,ESL系统的Docker化部署

    ESL需要四台服务器:分别是数据库Mysql服务器,Redis服务器,EMQ服务器,以及Spring Boot所在web服务器.Docker化部署就是将这四台服务器全部放在container中运行,通 ...

  10. Asp.net Core Jenkins Docker 实现一键化部署

    写在前面 在前段时间尝试过用Jenkins来进行asp.net core 程序在IIS上面的自动部署.大概的流程是Jenkins从git上获取代码 最开始Jenkins是放在Ubuntu的Docker ...

最新文章

  1. 【car】为什么后轮驱动的电动小摩托后轮打滑时制动前轮能起到较好的防打滑效果(ESC、ESP、VSA车身稳定系统)
  2. matlab出现无限循环警告,[求助] 关于matlab无限循环的问题
  3. SAP Server Side JavaScript解决方案
  4. Python3爬虫入门之beautifulsoup库的使用
  5. 利用cli.go来写命令行应用
  6. Android闹钟设置的解决方案
  7. java listener 原理_Java三大器之监听器(Listener)的工作原理和代码演示
  8. JS简单获取猫眼电影所有城市完整的json数据(包括城市id和城市拼音)
  9. 使用EasyExcel读取excel文件案例
  10. c语言常见输入输出格式简单介绍
  11. Android 点击按钮,文本文字改变
  12. 七个习惯之一:积极主动
  13. 计算机网络期中考试题周静,zj474~093期中考试反思
  14. c语言提取质心坐标,求图像质心的C语言实现
  15. ie8打不开mysql登录_Win7下IE8无法打开https类型的网站解决方法笔记
  16. 狂送京东购物卡(无门槛¥1200)
  17. 滤波器原理及其作用计算机网络,什么是滤波器?滤波器原理及其作用是什么?...
  18. 利用CUDA流重叠计算和数据传输
  19. 【问题解决】Because witness class org.springframework.cache.interceptor.DefaultKeyGenerator is not existed
  20. PyQt5_pyqtgraph股票RSI指标

热门文章

  1. EDI Party Resolution in Biztalk R2
  2. Python Flask高级编程
  3. java基础 第四章 下(数组)
  4. Spring Cloud Zuul 1(API 网关服务)
  5. android studio 上手使用 大水逼问题
  6. 五个Metro UI 风格的网页设计
  7. A*算法收敛最优点的简单证明
  8. 子模的性质(submodular)
  9. python代码阅读_莫烦Python RL 代码阅读一
  10. 拓端tecdat|R语言贝叶斯非参数模型:密度估计、非参数化随机效应meta分析心肌梗死数据