文档章节

Ubuntu快速玩转机器学习

openthings
 openthings
发布于 2018/05/06 06:00
字数 1534
阅读 607
收藏 0

Ubuntu快速玩转机器学习

最近入手了一块Titan V,自然是要玩一玩机器学习的。这块卡不仅CUDA核达到了5120个,还有了640个Tensor计算核,安装TesnsorFlow是首选了。如果在集群中运行,可以使用TensorFlow自带的集群服务,或者通过Kubernetes进行集群的管理,或者通过Spark实现基于分布式内存的深度学习集群。

适用于公益的 AI

我的硬件环境是:CPU-7980XE,内存-海盗船16G*8,显卡-Titan V。

安装的软件栈包括:

  1. Ubuntu16.04 LTS
  2. Nvidia Driver 396.42
  3. Nvidia CUDA 9.1
  4. Nvidia cuDNN 7.1.3
  5. Nvidia cuTensor 4.0
  6. Docker CE 18.03
  7. Docker-Nvidia 2.0.3
  8. Tensorflow for Docker 1.8
  9. Kubernets 1.10.2
  10. Spark 2.3

硬件、驱动和软件都是最新的版本,中间踩了不少坑。记录下来,供参考。

1、安装 Ubuntu16.04 LTS

准备一个8G以上的U盘,制作一个启动U盘。

然后就可以插入计算机,修改BIOS为U盘启动,然后安装系统。

2、安装Nvidia图形驱动396

安装最新的图形卡驱动,步骤如下:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-396

#开发使用
sudo apt install nvidia-396-dev

如果遇到问题,参考:

3、安装CUDA 9.1

安装最新的CUDA Toolkit 9.1,如下:

#获取Cuda9.1安装文件文件和2018.5.5的补丁包:
wget -c https://developer.nvidia.com/compute/cuda/9.1/Prod/local_installers/cuda_9.1.85_387.26_linux
wget -c https://developer.nvidia.com/compute/cuda/9.1/Prod/patches/3/cuda_9.1.85.3_linux
#然后运行 sudo chmod +x ...,再执行就可以了。

然后,进行CUDA的执行文件和库文件路径设置(必需的,安装程序没有自动设置。修改此设置可以使用不同的CUDA版本)。输入 gedit .profile,将下面内容加入到最后:

CUDAPATH="/usr/local/cuda-9.1/bin"
PATH="$CUDAPATH:$PATH"

CUDALIB="/usr/local/cuda-9.1/lib64"
LD_LIBRARY_PATH="$CUDALIB:$LD_LIBRARY_PATH"

保存后,退出。

然后,立即进行启用(下次登录后会自动启用):

source .profile

也可以放到其它启动时运行文件或者脚本文件中每次运行。

4、安装cuDNN 7.1.3

这个需要一个Nvidia的开发者帐号,到Nvidia官网(https://www.nvidia.com/zh-cn/deep-learning-ai)注册,然后就可以下载了。下载deb版本的安装程序,然后运行:

sudo dpkg -i libcudnn7_7.1.3.16-1+cuda9.1_amd64.deb
sudo dpkg -i libcudnn7-dev_7.1.3.16-1+cuda9.1_amd64.deb
  • 注意,需要同时下载运行时和开发文件包。开发文件包里面没有包含运行时库,需要先下载、安装运行时库,否则安装开发库时会报错。

5、安装cuTensor 4.0

到Nvidia官网(https://www.nvidia.com/zh-cn/deep-learning-ai),使用Nvidia的开发者帐号登录,然后就可以下载了。下载deb版本的安装程序,然后运行:

sudo dpkg -i nv-tensorrt-repo-ubuntu1604-cuda9.0-rc-trt4.0.0.3-20180329_1-1_amd64.deb

6、安装Docker CE 18.03

需要安装Docker CE的18.03版本(为了支持Nvidia的GPU),其他版本不行。

wget get.docker.com -O docker.sh
sudo chmod +x docker.sh
./docker.sh

sudo apt install docker-ce=18.03.1~ce-0~ubuntu

7、安装Docker-Nvidia

安装NVidia支持的Docker引擎(https://github.com/NVIDIA/nvidia-docker),就可以在容器中使用GPU了。具体步骤如下:

# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker

# Add the package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

# Install nvidia-docker2 and reload the Docker daemon configuration
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd

# Test nvidia-smi with the latest official CUDA image
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

注意,现在像上面运行 Docker 可以直接支持GPU了,不用再单独运行Docker-Nvidia命令了,大大增强了与各种容器编排系统的兼容性,Kubernetes目前也已经可以支持Docker容器运行GPU了。

8、安装Tensorflow for Docker

Tensorflow已经官方支持Docker的部署了,一行代码就可以搞定:

nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu

9、运行Jupyter with Tensorflow

上面安装结束后,会出现关于tensorflow的访问提示,拷贝,输入浏览器即可以访问Jupyter Notebook for Tensorflow了,可以试着运行一下,检查Tensorflow运行是否正常。

通过Kubeflow可以将深度学习引擎与Kubernetes结合起来,方便进行大规模集群节点的管理。

10、部署Kubernetes 1.9.3

参考下面的教程:

安装Kubernetes上的GPU支持软件:

11、使用Spark 2.3

通过Spark使用Kubernetes的集群管理和容器编排能力,进一步调用GPU进行深度学习,已经开发了多种多种技术路线和方案,目前还在发展之中。

可以参考:

目前,开源社区和软件公司正在解决Kubernetes支持GPU的Docker、Spark支持GPU的Docker以及原生的Spark DL深度学习支持(参考: Spark的GPU支持方法研究),估计2018年底就会有完整的生产级平台出现。

 

© 著作权归作者所有

openthings
粉丝 325
博文 1140
码字总数 689435
作品 1
东城
架构师
私信 提问
Kubernetes集群升级NVidia GPU驱动版本

最近Kubernetes、Docker和NVidia GPU驱动都进行了较大的升级,因此考虑对Kubernetes集群升级NVidia GPU驱动版本。我这里使用Ubuntu 18.04LTS + NVidia GPU Driver 410.78 + Kubernetes 1.13....

openthings
01/04
439
0
Kubernetes中调度GPU资源

Kubernetes中调度GPU资源 Kubernetes 包含一个体验性的功能,支持 AMD和NVIDIA GPUs 跨节点调度。对 NVIDIA GPUs 支持从 v1.6开始,然后经过几次不兼容的叠代修改,对AMD GPUs 的支持从 v1.9...

openthings
01/04
874
0
交互式 shell 玩转 Python

Python 编程语言已经成为 IT 中使用的最流行的语言之一。成功的一个原因是它可以用来解决各种问题。从网站开发到数据科学、机器学习到任务自动化,Python 生态系统有丰富的框架和库。本文将介...

不正经程序员
2018/08/02
0
0
OpenWrt开发(一)序

  最近接触了一个Linux嵌入式设备开发的项目——MESH网络设备开发。它是基于“OpenWrt”这个Linux发行版本进行开发,为此,我将在项目的开发过程,撰写一系列博客,记录学习的知识和开发要...

sagittarius_warrior
2017/12/18
0
0
pcDuino 书籍_第一章:pcDuino的硬件和软件

上篇:pcDuino 书籍_入门指南_引子 pcDuino是一款高性能高效益的运行类PC操作系统,比如UbuntU Linux操作系统,的迷你PC平台。它可以通过内置的HDMI接口输出视频到HDMI的高清电视机或者显示器...

pc朵拉
2013/08/05
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
31分钟前
4
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
33分钟前
5
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部