文档章节

Keras+Tensorflow+Jupyter 安装在Docker容器中运行

openthings
 openthings
发布于 2016/09/17 22:21
字数 947
阅读 1753
收藏 2

Keras 安装在Docker容器中运行

将Keras放到Docker+Jupyter中运行,不仅便于安装、兼容性好、容易迁移,而且可以通过Notebook的浏览器界面远程访问。这里介绍将Keras安装在Docker容器中运行的方法和步骤,通过Jupyter Notebook进行容器服务的Python代码编写,通过web浏览器进行远程访问。

先获取一个现成的镜像:

docker pull kaixhin/keras

把这个镜像作为一个容器运行起来:

docker run -it --name keras -p 8880:8888 -v /***/OpenAI:/Users kaixhin/keras
  • -it 选项启动一个交互式的shell,注意退出时容器实例也会退出。
  • --name 容器的名称,建议取一个自己的名称,如果没有,系统将自动给一个。
  • -p 映射端口,8880为外部访问端口,8888为容器内部端口,否则外面主机访问不到服务。
  • -v 上面的/***/OpenAI为自己的本地目录,映射到容器中访问,用于与宿主机的共享数据存放。

查看容器状态:

- 查看所有的镜像:docker images
- 查看运行的容器:docker ps
- 查看所有的容器:docker ps -a

然后,就可以:

  • 退出后重新启动容器:docker start keras
  • 保存当前容器到镜像:docker commit keras openthings/keras

安装Jupyter, Web界面

sudo apt-get install vim -y
sudo apt-get update
sudo apt-get upgrade -y

sudo apt-get install python3-pip -y
sudo pip3 install jupyter
ipython3 kernel install

安装Python2内核:

python2 -m pip install ipykernel
python2 -m ipykernel install --user

安装Jupyter扩展

Jupyter已经有很多扩展,可以支持很多种开发语言,查看https://github.com/ipython/ipython/wiki

交互界面扩展组件

pip install ipywidgets
jupyter nbextension enable --py widgetsnbextension

安装Scala支持

sudo apt-get install openjdk-7-jre
sudo curl -L -o jupyter-scala https://git.io/vrHhi && chmod +x jupyter-scala && ./jupyter-scala && rm -f jupyter-scala

安装Spark的支持

Spark的Jupyter支持已经发展了多个项目,各有侧重,目前代替Spark Shell的功能已经绰绰有余。

#配置Jupyter远程访问

jupyter notebook --generate-config

将生成文件:~/.jupyter/jupyter_notebook_config.py

然后,编辑:

vim ~/.jupyter/jupyter_notebook_config.py

按“I”键,进入修改状态,修改为如下:

144: c.NotebookApp.ip = '*'
185: c.NotebookApp.open_browser = False

注意,如果不在局域网使用,需要设置密码,参考Jupyter相应的设置:

按“Esc”、“:”键,输入“wq”,保存,退出vim。

客户端在浏览器运行

** 注意,启动容器时一定要映射端口到宿主机,如前“-p 8880:8888”参数,里面的8888为缺省的Jupyter端口,8880为外面可访问的主机端口。**

GPU/CUDA支持

要在Docker中启用CUDA,建议使用NVidia-docker容器宿主程序。

##下载NVidia官方驱动

NVidia官网下载驱动。默认的Linux使用的开源驱动运行nvidia-docker会有问题。

需要的话,安装Cuda专用支持软件

##安装nvidia-docker

按照https://github.com/NVIDIA/nvidia-docker的说明安装。

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

# Test nvidia-smi
nvidia-docker run --rm nvidia/cuda nvidia-smi

##启用CUDA版的Docker容器

启动时应使用CUDA对应的Docker版本

docker pull kaixhin/cuda-keras
nvidia-docker run -it --name keras -p 8880:8888 -v /***/OpenAI:/Users kaixhin/cuda-keras
  • 注意:把上面/***/OpenAI改成自己的宿主机目录,是用来做宿主机存储的。

运行的时候如果出错,可能是显卡驱动的原因。参考https://my.oschina.net/u/2306127/blog/748110更新为NVidia的官方驱动后就可以了。

© 著作权归作者所有

共有 人打赏支持
openthings
粉丝 301
博文 1110
码字总数 636345
作品 1
东城
架构师
私信 提问
Docker在CentOS 7 环境下的安装及基本操作入门

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不...

Oo若离oO
2017/12/19
0
0
Docker 三剑客之 Docker Compose

Docker Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排,开源地址:https://github.com/docker/compose Docker Compose 中的两个重要概念: 服务 (service):...

那谁爸爸
2018/01/08
0
0
为小白准备的重要 Docker 命令说明

在早先的教程中,我们学过了在 RHEL CentOS 7 上安装 Docker 并创建 docker 容器。 在本教程中,我们会学习管理 docker 容器的其他命令。 Docker 命令语法 要列出 docker 支持的所有命令,运...

作者: Shusain
2018/01/11
0
0
还不明白 Docker 的镜像跟容器?

一、docker 是什么 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在自己机器上编译测试通过的容器可以批量地在生产环境中部署,包括VMs...

-世界那么脏
2017/11/23
0
0
Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(2)

上一篇:Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(1) 服务器版本 Ubuntu 16.04 LTS。 本篇博文目的:项目中添加文件,使用 CI 脚本构建自定义镜像,推送到 Dock...

那谁爸爸
2018/01/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

sass和less的优缺点

简述 sass和less都是css的预编译处理语言,他们引入了mixins,参数,嵌套规则,运算,颜色,名字空间,作用域,JavaScript赋值等 加快了css开发效率,当然这两者都可以配合gulp和grunt等前端构...

莫西摩西
34分钟前
0
0
信号量与PV操作

在计算机操作系统中,PV操作是进程管理中的难点。 首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下: P(S):①将信号...

shzwork
46分钟前
0
0
重新认识网络通信协议

OSI网络分层 应用层 http, smtp,pop3这些都属于应用层协议 为用户的应用程序提供服务 表示层 确保一个系统的应用层发送的信息被另一个系统的应用层接收到 会话层 通过传输层建立数据传输的通...

最胖的瘦子
今天
2
0
【转】分布式数据流的轻量级异步快照

本篇翻译自论文:Lightweight Asynchronous Snapshots for Distributed Dataflows,Flink的容错快照模型即来源于该论文。原文地址:https://arxiv.org/pdf/1506.08603.pdf 分布式数据流的轻量...

yiduwangkai
今天
1
0
java使用反射机制设置私有成员变量的值

写一个方法:public void setProperty(Objectobj, String propertyName, Object value){}, 此方法可将obj对象中名为propertyName的属性的值设置为value。(这里不知道obj对象的propertyNam...

群星纪元
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部