未加星标

基于Docker的机器学习--Tensorflow-GPU环境机器学习

字体大小 | |
[商业智能 所属分类 商业智能 | 发布者 店小二04 | 时间 | 作者 红领巾 ] 0人收藏点击收藏

基于Docker的机器学习--Tensorflow-GPU环境机器学习
tm
基于Docker的机器学习--Tensorflow-GPU环境机器学习
工具
基于Docker的机器学习--Tensorflow-GPU环境机器学习
python
基于Docker的机器学习--Tensorflow-GPU环境机器学习
GPU
基于Docker的机器学习--Tensorflow-GPU环境机器学习
Docker
基于Docker的机器学习--Tensorflow-GPU环境机器学习
NVIDIA

基于 NVIDIA-Docker 的 Tensorflow 环境搭建

nvidia-docker 需要docker-ce版本支持,docker-ce的安装过程在前面文章中有过介绍,具体链接:Docker基础-安装 docker-ce


nvidia-docker 的安装过程在上一篇文章中有过介绍,具体链接:基于Docker的机器学习--NVIDIA-Docker


环境部署完成后,主要的工作是镜像的制作,镜像的环境为:

ubuntu16.04,cuda8,cudnn5,python3.5,tensorflow-gpu1.1,notebook,ssh

Dockerfile 具体内容如下:

FROM nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04

MAINTAINER xsjop-py3.5-tf1.1-gpu <zhxsjop@163.com>


# Pick up some TF dependencies

RUN apt-get update && apt-get install -y --no-install-recommends \

build-essential \

curl \

libfreetype6-dev \

libpng12-dev \

libzmq3-dev \

pkg-config \

python \

python-dev \

python3.5-dev \

rsync \

software-properties-common \

unzip \

golang \

git \

libjpeg-turbo8-dev \

openssh-server \

&& \

apt-get clean \

&& \

rm -rf /var/lib/apt/lists/*


RUN curl -O https://bootstrap.pypa.io/get-pip.py && \

python3.5 get-pip.py && \

rm get-pip.py


RUN pip3.5 --no-cache-dir install \

ipykernel \

jupyter \

matplotlib \

numpy \

scipy \

sklearn \

pandas \

Pillow \

&& \

pip3.5 --no-cache-dir install \

scikit-learn \

theano \

keras \

bokeh \

pyglet \

universe \

gym \

&& \

python3.5 -m ipykernel.kernelspec


# Install TensorFlow GPU version.

RUN pip3.5 --no-cache-dir install tensorflow-gpu


# Python 3.5

RUN rm -rf /usr/bin/python && ln -s /usr/bin/python3.5 /usr/bin/python


# SSH Server

RUN sed -i 's/^\(PermitRootLogin\).*/\1 yes/g' /etc/ssh/sshd_config && \

sed -i 's/^PermitEmptyPasswords .*/PermitEmptyPasswords yes/g' /etc/ssh/sshd_config && \

echo 'root:xxxxxxxx' > /tmp/passwd && \

chpasswd < /tmp/passwd && \

rm -rf /tmp/passwd


# Set up our notebook config.

COPY jupyter_notebook_config.py /root/.jupyter/


# Copy sample notebooks.

COPY notebooks /notebooks


# Jupyter has issues with being run directly:

# We just add a little wrapper script.

COPY run_jupyter.sh /


# For CUDA profiling, TensorFlow requires CUPTI.

ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH


# TensorBoard

EXPOSE 6006

# IPython

EXPOSE 8888

# SSH

EXPORT 22


WORKDIR "/notebooks"


CMD ["/run_jupyter.sh", "--allow-root"]

Dockerfile中用到的文件如下:

jupyter_notebook_config.py

import os

from IPython.lib import passwd


c.NotebookApp.ip = '*'

c.NotebookApp.port = int(os.getenv('PORT', 8888))

c.NotebookApp.open_browser = False

c.MultiKernelManager.default_kernel_name = 'python3'


# sets a password if PASSWORD is set in the environment

if 'PASSWORD' in os.environ:

c.NotebookApp.password = passwd(os.environ['PASSWORD']) del os.environ['PASSWORD']

notebooks 空目录或编写一个 botebook 文件

run_jupyter.sh

#!/usr/bin/env bash


service ssh start

jupyter notebook "$@"


根据Dockerfile生成docker镜像

# docker build -t tf1.1-gpu .


生成镜像后启动镜像,并挂载GPU到容器

# 可以用个 nvidia-docer 命令启动

nvidia-docker run -i -t -d -p 22:22 -p 8888:8888 -p 6006:6006 --name tf01 tf1.1-gpu

# 启动后会将服务器上所有GPU挂载到容器中

# 可以通过ssh登陆到容器,或通过 notebook 登陆。如果没有设置 notebook 的密码,可以通过 dockr logs tf01 命令查看到 notebook 的登陆key

# 如果想指定容器挂载几个 GPU 的话需要如下操作:

# 查看 GPU 信息

curl -s http://localhost:3476/docker/cli

#获取到相关参数:--volume-driver=nvidia-docker --volume=nvidia_driver_375.26:/usr/local/nvidia:ro --device=/dev/nvidiactl --device=/dev/nvidia-uvm --device=/dev/nvidia-uvm-tools --device=/dev/nvidia0

# 红色字体部分作为 docker run 的参数,蓝色字体部分为具体的 GPU ,需要挂在几个就写几个

# 如:

docker run -i -t -d -p 22:22 -p 8888:8888 -p 6006:6006 --name tf02 --volume-driver=nvidia-docker --volume=nvidia_driver_375.26:/usr/local/nvidia:ro --device=/dev/nvidiactl --device=/dev/nvidia-uvm --device=/dev/nvidia-uvm-tools --device=/dev/nvidia0 --device=/dev/nvidia2

# 表示在该容器中挂载2个GPU


注:

基于 NVIDIA-Docker 的 CPU 环境中,GPU是可以复用的,可以将1个GPU挂载到多个 docker 容器中使用提高了GPU的使用效率,这是 KVM 虚拟机通过硬件透传无法实现的。由于多个容器共享一个GPU,不能做到对 GPU 资源进行隔离,很容易出现一个容器将一个GPU资源耗尽,另外一个容器无法获取GPU资源,所以分配GPU时可以通过命令查看当前GPU的负载,相对平衡的分配GPU到容器


欢迎加入本站公开兴趣群

商业智能与数据分析群

兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识

QQ群:418451831

tags: #160,amp,GPU,dev,nvidia,docker,device,notebook,run,usr,Docker,jupyter,容器,get,python3
分页:12
转载请注明
本文标题:基于Docker的机器学习--Tensorflow-GPU环境机器学习
本站链接:https://www.codesec.net/view/568822.html


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 商业智能 | 评论(0) | 阅读(428)