Ubuntu16.04下基于Docker的Caffe-GPU版本环境搭建总结

2023-10-27

Caffe的GPU环境搭建在docker支持下并不困难,但是过程比较杂

所需依赖如下,本文会说明安装方法,帮助大家少走弯路

  1. GNU/Linux x86_64 with kernel version > 3.10
  2. Docker >= 1.9 (official docker-enginedocker-ce or docker-ee only)
  3. NVIDIA GPU with Architecture > Fermi (2.1)
  4. NVIDIA drivers >= 340.29 with binary nvidia-modprobe

本文分成三部分总结

1.Docker安装与配置

2.Cuda安装

3.Caffe安装



一、Docker安装与配置

1.设置repository

sudo apt-get -y install \
  apt-transport-https \
  ca-certificates \
  curl

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
       "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
       $(lsb_release -cs) \
       stable"

sudo apt-get update

2.获取Docker CE

sudo apt-get -y install docker-ce

3.测试是否安装成功

docker info

4. 安装nvidia-docker

# Install nvidia-docker and nvidia-docker-plugin
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb

官方提供的测试方法需要下载一个1G左右的镜像才能测试
 
这里只需要输入sudo nvidia_docker info测试一下即可
默认情况下Docker会把镜像安装在根目录下/var/lib/docker,这样镜像会大量占用系统盘空间,最终导致磁盘资源不足
解决方案是修改默认安装目录
由于我的/home磁盘资源比较多,所以都安装到/home去
zcw@ubuntu:~# mkdir docker
zcw@ubuntu:~# vim /etc/default/docker
添加配置信息
DOCKER_OPTS="--graph=/home/docker"
保存退出
service docker restart
发现配置并没有生效
解决方案:
zcw@ubuntu:~# mkdir -p /etc/systemd/system/docker.service.d
zcw@ubuntu:~# cat /etc/systemd/system/docker.service.d/Using_Environment_File.conf
如果没有该文件则自行创建,添加以下内容
[Service]
EnvironmentFile=-/etc/default/docker
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS

载入配置重启服务
zcw@ubuntu:~# systemctl daemon-reload
zcw@ubuntu:~# service docker restart
查看配置是否生效
zcw@ubuntu:~# ps -ef|grep docker 

二、CUDA安装

本部分完成第四项环境依赖: NVIDIA drivers  >= 340.29 with binary  nvidia-modprobe
进入正题,到以下链接下载对应的CUDA,按官方教程,无脑完成

三、Caffe

Caffe安装也很简单,大约2个G,只需等待即可
nvidia-docker run -ti bvlc/caffe:gpu caffe --version

至此安装过程已经完成
默认情况下caffe以root身份运行,因此任何输出文件为root拥有,你可以通过flags来修改以及挂载目录
docker run --rm -u $(id -u):$(id -g) -v $(pwd):$(pwd) -w $(pwd) bvlc/caffe:gpu caffe train --solver=example_solver.prototxt



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

Ubuntu16.04下基于Docker的Caffe-GPU版本环境搭建总结 的相关文章

随机推荐

  • C++静态库动态库区别

    C 源代码到可执行程序经历的过程有预处理 编译 汇编 链接 静态库在链接阶段与目标程序链接在了一起 作为一个整体载入内存然后执行 库比较小一般用这种方法 而动态库是程序运行过程中才去加载到内存中的 库比较大 想共享用这种方法 多个进程用到一
  • MATLAB导入EXCEL表格数据画散点图

    在处理一些实验数据时 通常要画散点图 本来EXCEL自带的散点图功能也很好 但是为了秀一下 我们也要用到MATLAB来画图 下面来介绍一下实现方法 如果你第一次使用MATLAB 那就要从头开始介绍了 首先来新建一个脚本 然后进入编辑器页面
  • 92-TCP三次握手及TCP四次挥手

    TCP三次握手及TCP四次挥手 1 tcp三次握手 1 tcp的特点 2 tcp三次握手发生在什么阶段 3 tcp协议报头 4 tcp三次握手的流程 2 tcp四次挥手 1 tcp四次挥手发生在什么阶段 2 tcp四次挥手的流程 3 能不能
  • 深入学习java源码之Integer.parseInt()与Integer.valueOf()

    深入学习java源码之Integer parseInt 与Integer valueOf 一般我们创建一个类的时候是通过new关键字 比如 Object obj new Object 但是对于 Integer 类 我们却可以这样 Integ
  • 基于Packet Tracer的校园网络设计与规划

    本文仅仅为本人课程要求而设计的方案 本文仅仅使用RIP动态路由协议 HSRP协议 浮动路由 静态路由 等价路由 DHCP地址分配 NAT技术 VLAN划分 如有问题请大佬们在本博客下留言 课程设计报告文件 资源链接 Packet Trace
  • CSRF简介

    一 CSRF是什么 CSRF Cross site request forgery 中文名称 跨站请求伪造 也被称为 one click attack session riding 缩写为 CSRF XSRF 二 CSRF可以做什么 你这可
  • 9. STM32——HC_SR04超声波测距

    STM32 HC SR04超声波测距 HC SR04 实物图 基本参数 工作原理 时序图 超声波测距步骤 1 使能GPIO时钟 定时器时钟 2 配置GPIO引脚 3 配置TIM定时器时钟 4 配置NVIC优先级 5 开启TIM4定时器 6
  • SQL数据库案例

    数据表 Navicat SQLite Data Transfer Source Server school Source Server Version 30808 Source Host 0 Target Server Type SQLit
  • 嵌入式单片机基础篇(二十七)之Stm32F103单片机给蓝牙模块发送AT指令程序

    Stm32F103单片机给蓝牙模块发送AT指令程序 include stm32f10x h include string h include stdio h unsigned char UARTbuff 32 unsigned char A
  • 基于CT117E的按键控制流水灯

    这是在流水灯的基础上加上关于按键的程序 使前两个按键一个可以控制流水灯的移动方向 一个可以控制流水灯的移动速度 1 先在流水灯的基础上添加关于按键的头文件 2 添加关于按键的宏定义 3 在在主函数中添加检测按键程序和按键处理程序 4 在初始
  • Android平台的兼容相关概念详细整理

    设置应用的支持版本 通过我们会在文件夹下 指定下面属性 来表示我们应用所支持的Android版本
  • Summary of OpenGL ES 3.0 Programming Guide

    零 OpenGLES简介 OpenGLES 是用于嵌入式系统的一个3D图形编程接口规范 支持IOS Android Linux Windows WebGL 一 渲染管线 1 VertexBufferArrayObject 2 VertexS
  • Python 高级变量类型,函数进阶 day05

    高级变量类型 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 int 浮点型 float 布尔型 bool 真 True 非 0 数 非零即真 假 Fal
  • 命名空间system中不存在data_我理解中的Unity DOTS

    我是第一次接触到 ECS 并不是使用老手 以下仅仅是我通过浏览相关文章和实现相关 Demo 而写出的一篇分享初见文 如有错误 请您指出 谢谢 因为本身就是忠实的 Overwatch 玩家 所以天然的对其应用的 ECS 架构有所兴趣 再加上最
  • 流文件保存到本地的两种方法

    1 FileStream fs new FileStream path FileMode Create fs Write ImageBuff 0 ImageBuff Length fs Close 注释 ImageBuff 图片流 byte
  • HEX(Xilinx MCS)文件格式详解

    文章目录 自己定义个文件格式 HEX文件格式详解 HEX 文件是指以hex为后缀 采用Intel HEX编码规则的文件 可以直接使用文本编辑工具打开 通常用来对微控制器或ROM进行编程 本质上都是对存储器编程 其中包含了每个地址对应的数据
  • QT connect()连接函数的一点说明

    QObject connect中的signal和slot函数一定要有参数类型 但是 不可以有参数名 指定信号和方法时 必须使用SIGNAL 和SLOT 宏 例如 关联信号和槽函数 connect configureWindow SIGNAL
  • MySQL索引失效场景实例演示

    文章目录 一 环境信息 二 表 数据准备 三 复合索引的失效情况 最左前缀法则 or查询 四 单列索引的失效情况 like模糊查询使用前通配符 索引列上使用函数 字符串索引没加引号 使用 lt gt gt lt is null 或 is n
  • Jenkins安装与配置

    什么是CICD CI CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法 CI CD 的核心概念是持续集成 持续交付和持续部署 作为一个面向开发和运营团队的解决方案 CI CD 主要针对在集成新代码时所引发的问题 亦称 集成
  • Ubuntu16.04下基于Docker的Caffe-GPU版本环境搭建总结

    Caffe的GPU环境搭建在docker支持下并不困难 但是过程比较杂 所需依赖如下 本文会说明安装方法 帮助大家少走弯路 GNU Linux x86 64 with kernel version gt 3 10 Docker gt 1 9