使用docker将深度学习模型容器化

2023-10-31

一、使用Docker制作深度学习模型镜像(了解)

:首先,一开始shell中命令行所在位置在root文件下,即root@4210node:~。其次,整个文件夹目录如下:

root
|—model
  |—result         # 存放推理后的图片
  |—val            # 存在数据集
  |—deeplabv3plus  # 存放模型代码
    |—deeplabv3plus.pth
    |—deeplabV3plus.py
    |—deploy.py
    |—joint_transforms.py
    |—requirements.txt
    |—transforms.py
  1. 拉取pytorch镜像,本实例使用pytorch镜像版本为1.9.1-cuda11.1-cudnn8-devel
docker run -it -v /root/model/result:/media/result --name="pytorch" \
--gpus=all pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel /bin/bash
  1. 将数据集和模型代码文件从宿主机复制到镜像中
# 退出镜像
exit
# 启动容器
docker start pytorch
# 将文件复制到镜像中
docker cp model/val/ pytorch:/media/
docker cp model/deeplabv3plus/ pytorch:/workspace/
# 进入镜像中去
docker exec -it pytorch /bin/bash
  1. 安装相关依赖
pip install -r deeplabv3plus/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
  1. 运行py文件,启动模型
cd deeplabv3plus
python deploy.py

二、使用Dockerfile制作镜像

项目目录树如下:

root
|—container
  |—result             # 存放推理后的图片
  |—deeplabv3plus      # 存放deeplabv3plus的Dockerfile文件
  |—deeplabv3plus.tar  # 存放deeplabv3plus模型代码的压缩包
    |—deeplabv3plus.pth
    |—deeplabV3plus.py
    |—deploy.py
    |—joint_transforms.py
    |—requirements.txt
    |—transforms.py
  |—pspnet             # 存放pspnet的Dockerfile文件
  |—pspnet.tar         # 存放pspnet模型代码的压缩包
    |—pspnet.pth
    |—pspnet.py
    |—deploy.py
    |—joint_transforms.py
    |—requirements.txt
    |—transforms.py
  |—segnet             # 存放segnet的Dockerfile文件
  |—segnet.tar         # 存放segnet模型代码的压缩包
    |—segnet.pth
    |—segnet.py
    |—deploy.py
    |—joint_transforms.py
    |—requirements.txt
    |—transforms.py
  |—val.tar            # 数据集压缩包

以deeplabv3plus深度学习模型为例,使用Dockerfile制作镜像,并运行深度学习容器。

步骤如下:

  1. 制作深度学习模型镜像
# 拉取基础镜像
FROM  pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel

# 维护者信息
MAINTAINER shiftyCat 211307050008@hhu.edu.cn

# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

# 设置数据集路径和工作路径
ENV DATASET /media
ENV WORKSPACE /workspace

# 将宿主机上的数据集和模型代码压缩包复制到镜像中,并解压
ADD val.tar $DATASET
ADD deeplabv3plus.tar $WORKSPACE

# 容器启动后执行的命令
# 配置工作目录
WORKDIR $WORKSPACE
# 安装第三方依赖库
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
  1. 使用docker命令(build)执行Dockerfile文件制作镜像
docker build -f container/deeplabv3plus -t deeplabv3plus:1.0.0 .
  1. 使用docker命令(run)运行容器
docker run -it -v /root/container/result:/media/result --name="deeplabv3plus" --gpus=0 deeplabv3plus:1.0.0 /bin/bash
  1. 进入容器内部运行python文件
python deploy.py

三、Docker及Dockerfile相关命令总结

  1. Docker

  2. pull:拉取远程仓库中的镜像。

```shell
 docker pull pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel
```
  1. run:运行镜像。其中,存在一些短选项,如-i,-t,-v。
- -i:以交互模式运行容器;
  
- -t:为容器重新分配一个伪输入终端;
  
- -v:将容器中的某个文件或文件夹挂载到宿主机上;
  
- --name:给运行的容器命名;
  
- --gpus:为容器分配GPU资源。
  

```shell
docker run -it -v /root/model/result:/media/result --name="pytorch" \
--gpus=all pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel /bin/bash
```
  1. cp:将宿主机上的文件(或文件夹)复制到容器中
```shell
docker cp model/val/ pytorch:/media/
```
  1. 关于容器的其他命令
```shell
# 容器名为deeplabv3plus
# 查看运行中的容器
docker ps
# 查看所有容器,可查看停止运行的镜像及其中断原因
docker ps -a
# 关闭容器
docker stop deeplabv3plus
# 删除容器
docker rm deeplabv3plus
# 重启容器
docker restart deeplabv3plus
# 开启容器
docker start deeplabv3plus
# 以伪终端的方式进入容器内部
docker exec -it deeplabv3plus /bin/bash
```
  1. 关于镜像的一些命令
1. build:制作镜像,存在一些短选项
  
  - -f:定位在container目录下名为deeplabv3plus的Dockerfile文件;
    
  - -t:镜像命名,`:`后为镜像标签,若不表明默认为latest。
    
  
  ```shell
  # 镜像名为deeplabv3plus
  # 制作镜像(build)
  docker build -f container/deeplabv3plus -t deeplabv3plus:1.0.0 .
  ```
  
2. images:查看所有镜像信息
  
  ```shell
  docker images
  ```
  
3. save:保存镜像
  
  ```shell
  docker save -o deeplabv3plus.tar deeplabv3plus
  ```
  
4. load:载入镜像
  
  ```shell
  docker load --input deeplabv3plus.tar
  docker load < deeplabv3plus.tar
  ```
  
5. rmi:删除镜像
  
  ```shell
  docker rmi deeplabv3plus:1.0.0
  ```
  1. Dockerfile

  2. FROM :基础镜像,当前镜像是基于哪个镜像的

```dockerfile
# 拉取基础镜像
FROM  pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel
```
  1. MAINTAINER:镜像维护者的姓名和邮箱地址
```dockerfile
# 维护者信息
MAINTAINER shiftyCat 211307050008@hhu.edu.cn
```
  1. RUN:容器构建时需要运行的命令
```dockerfile
# 安装第三方依赖库
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
```
  1. EXPOSE:当前容器对外暴露的端口号

  2. ENV:用来在构建镜像过程中设置环境变量

```dockerfile
# 设置数据集路径和工作路径
ENV DATASET /media
ENV WORKSPACE /workspace
```
  1. WORKDIR:指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
```dockerfile
# 配置工作目录
WORKDIR /workspace
# 或者如下
WORKDIR $WORKSPACE
```
  1. ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
```dockerfile
ADD val.tar /media
ADD deeplabv3plus.tar $WORKSPACE
```
  1. COPY:类似于ADD,拷贝文件和目录到镜像中。

  2. VOLUME:容器数据卷,用于数据保存和持久化工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用docker将深度学习模型容器化 的相关文章

随机推荐

  • 参考

    讲道理 就很离谱 一开始我升级了 Win11 后 突然发现 移动热点 开不了了 就是那种 开了之后 手机 ipad 能检测到电脑移动热点的信号 但是会出现这两种情况 死活连不上 连上了 在移动端显示 无互联网连接 解决办法 打开 移动热点
  • C++基础入门(一)

    C 基础入门 一 0 写在前面 如果你是期末时间紧张冲刺型选手 请移步 C 期末复习超详细总结知识点 期末冲刺 如果你是时间充足型选手 请按顺序依次学习 本篇笔记视频讲解地址 https www bilibili com video BV1
  • c++桶排序(刚学也能看懂)

    目录 哈喽 穿梭门 效果 桶排序是什么 再简单点说 再再简单点说 思路 确定 分桶 个数 复杂度分析 c 代码实现 python版代码 嘿嘿 没想到吧 最后 哈喽 这次来发一下桶排序 它的时间复杂度低 代码也不难 穿梭门 二分算法 堆排序
  • 对于日访问量达到1W IP的处理方法

    转自 http www java123 net 56026 2 html 对于日访问量达到1W IP的处理方法 一 1万ip真是不高 1 常用数据用缓存 减轻数据库压力 2 详细页数据生成静态页面 二 10000算是相当小的了 不需要什么特
  • 同一台服务器上部署多个Tomcat

    同一台服务器上部署多个Tomcat 一 下载Tomcat安装包 进入Tomcat的官网 http tomcat apache org 选择要下载的Tomcat的版本 点击进入 特别说明一下要安装Tomcat9的话 JDK需要在1 8版本以上
  • 饥荒专用服务器全图显示代码,饥荒开全图代码

    用记事本打开游戏目录 data DLC0001 scripts prefabs player common lua文件 在inst AddComponent resurrectable 下一行插inst AddComponent resur
  • 一名计算机专业渣渣的2019春招求职经历—(成功收割华为、浦发、新华三、宝信软件offer)

    写在前面 不经一番彻骨寒 哪得梅花扑鼻香 不管你是谁 不管你是已经20届即将求职的雄鹰 还是19届未能成功入职的弃婴 也或是你是经历了考研失败后才意犹未尽地开始参加春招 都OK 一切都是从零开始 什么时候都不算晚 从刚开始得知自己考研失败
  • DOM 2 级事件的认识

    DOM中的事件是一个很中要的东西 它可以让用户和浏览器之间进行交互 以此来实现人机交互效果 DOM事件 DOM事件分为DOM0级事件和DOM2级事件 DOM0级其实不存在 我们把DOM最初的版本叫0级 在DOM2级的时候更新了一种新的事件绑
  • 亿级Web系统搭建——单机到分布式集群

    徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作 负责过日请求量过亿的Web系统升级与重构 目前在小满科技创业 从事SaaS服务技术建设 大规模流量的网站架构 从来都是慢慢 成长 而来 而这个过程中 会遇到很多问题 在不断解决问题的过程中
  • 外企程序员常用英语单词

    1 cognitive k n t v adj 认知的 认识的 2 risk r sk n 风险 危险 冒险 vt 冒 的危险 n Risk 人名 英 阿拉伯 里斯克 3 berries beriz 浆果类 4 vegetables ved
  • Mac使用经验分享 - 总览

    Mac本身支持的效率操作 各种快捷键的使用 Mac系统本身支持很多的快捷键 这些快捷键能够很大程度的提升使用效率 在此处简单列出一些我经常使用的快捷键 权作参考 W 关闭当前窗口 M 最小化当前窗口 W 关闭所有finder窗口 有一个fi
  • LLVM介绍

    文章目录 LLVM介绍 一 LLVM三段式架构 1 传统编译器的三段式 2 LLVM的三段式 二 Clang与LLVM的关系 三 LLVM 编译流程 LLVM介绍 在理解LLVM时 我们可以认为它包括了一个狭义的LLVM和一个广义的LLVM
  • mysql实现读写分离自带java驱动

    MySQL 数据库的读写分离和负载均衡一般是通过第三方软件来实现的 也可以通过mysql驱动程序来实现 如com mysql jdbc ReplicationDriver 官网网址 多主机连接配置 1 主备配置 2 负载连接配置 3 主从复
  • arcgis根据矢量范围统计栅格数据众数、最大值、均值、中位数、最小值、少数等

    arcgis根据矢量范围统计栅格数据 数据 表格显示分区统计 分区统计 前面介绍过如何根据面状的矢量数据对 栅格数据进行统计 其主要是统计 每个面内像元值的数量为多少 参考 arcgis统计矢量面内栅格数据像元值个数 注 那么如果我需要统计
  • 惠普笔记本电脑驱动BIOS下载中心,战66驱动下载

    最近发现我战66 g3 2020 fn f3 f4屏幕亮度无法调节 已确定不是键盘的问题 搜索发现可能是驱动问题 惠普产品 https support hp com cn zh drivers laptops 战66驱动程序下载 https
  • Docker 之管理应用数据—数据卷 (二)

    卷是存储Docker容器生成和使用的数据的首选机制 绑定挂载依赖于主机的目录结构 而卷则完全由Docker管理 卷比绑定装载有几个优势 卷比绑定挂载更容易备份或迁移 您可以使用Docker CLI命令或Docker API来管理卷 卷可以在
  • 问题解决:jxls多sheet导出,多余一个空白sheet页

    一 项目需求 1 需求 用户勾选多个业务单 导出Excel 一个业务单占据一个sheet页 2 预期效果 3 实际效果 采用 jxls 2 3 0 jar的导出方法 JxlsHelper getInstance processTemplat
  • Linux设备文件(Device file)

    Linux设备文件 Device file 设备文件概述 在类Unix操作系统中 设备文件或特殊文件是设备驱动程序的接口 出现在文件系统中就好像它是普通文件一样 在MS DOS OS 2和Microsoft Windows中也有特殊文件 这
  • Spark-SQL之DataFrame操作大全

    Spark SQL中的DataFrame类似于一张关系型数据表 在关系型数据库中对单表或进行的查询操作 在DataFrame中都可以通过调用其API接口来实现 可以参考 Scala提供的DataFrame API 本文中的代码基于Spark
  • 使用docker将深度学习模型容器化

    一 使用Docker制作深度学习模型镜像 了解 注 首先 一开始shell中命令行所在位置在root文件下 即root 4210node 其次 整个文件夹目录如下 root model result 存放推理后的图片 val 存在数据集 d