docker用gpu的参数_Docker化部署(GPU)

636c551581511b4ba300c32b9cb0208f.png

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。

832719f7e517dfdc245640afc3289c87.png

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

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

93a4b3a7f3902b3dc91924f2d7ef13c4.png

智能算法Docker化部署实践

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

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

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

44ca1b07c70aedbbf86b81a4fd412a87.png

第二步:制作镜像 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镜像容器流程

572bb04eb9aaa929c7f0e4cb7d1ee749.png

第三步:执行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容器可以读取宿主机上显卡资源

a6e10f131920f6348899f3db18d796f0.png

第四步:端口映射与挂载

##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

部署整体流程

85c1325485116c92ece2a807be5aec73.png

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 机制注意事项

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值