Skip to content
This repository has been archived by the owner on Jan 20, 2018. It is now read-only.

Latest commit

 

History

History
231 lines (143 loc) · 9.64 KB

README.md

File metadata and controls

231 lines (143 loc) · 9.64 KB

Deep Learning on QingCloud AppCenter 用户指南

深度学习简介

2016 年 AlphaGo 战胜李世石,预示我们进入了 AI 时代。深度学习是 AI 的核心技术,在图像分类,自然语言处理,无人驾驶等众多领域显示出了强大的能力,各大巨头纷纷投入巨资研发。语音助手,人脸识别,外文翻译等等,AI 已融入到了我们生活的方方面面,极大了促进了社会的发展。其中 Caffe,TensorFlow,Keras,PyTorch 是主流的深度学习框架,拥有强大的社区支持,是实践深度学习不可或缺的工具。  

Caffe

Caffe 是一个被广泛使用的深度学习框架,由 BVLC 开发。Caffe 容易上手,训练速度快,组件模块化,并拥有大量训练好的经典模型。Caffe 在 GPU 上训练的性能很好,但只能支持单机多 GPU 的训练,不支持分布式多机训练。

TensorFlow

TensorFlow 由 Google 大脑主导开发,是一个分布式系统上的大规模深度学习框架。移植性好,可以运行在移动设备上,并支持分布式多机多卡训练,支持多种深度学习模型。TensorFlow 还有功能强大的可视化组件 TensorBoard,能可视化网络结构和训练过程,对于观察复杂的网络结构和监控长时间、大规模的训练很有帮助。

PyTorch

PyTorch 从 Torch 发展而来,并经过了大量改进,由 FaceBook AI 团队主导开发。不同于 TensorFlow,PyTorch 采用动态计算图的方式,并提供良好的 Python 接口,代码简单灵活,使用起来非常方便。内存分配也经过了优化,能支持分布式多机训练。

Keras

Keras 是一个高层神经网络 API,由 Python 编写,通过调用其他深度学习框架来进行计算,如 TensorFlow、Theano 以及 CNTK。Keras 高度模块化,能快速搭建神经网络,并且非常容易上手。

青云深度学习平台

基于青云提供的 NVIDIA Tesla P100 GPU,青云深度学习平台配置了 CUDA8.0 和 cuDNN5,并安装了流行的深度学习框架,如 Caffe(BVLC),TensorFlow(1.2.1),Keras(2.0.9),PyTorch(0.2.0_4),省去了用户搭建环境的麻烦,提高开发效率。用户无需修改代码,即可把本地的代码运行在云上,还能动态扩展所需资源。

目前仅 pek3a , sh1a 支持 GPU,如需在其他区创建可以将 GPU 数量设置为 0。TensorFlow,PyTorch 和 Keras 支持用 CPU 进行深度学习应用的训练和测试,Caffe 需要重新编译才可以。

部署 Deep Learning 服务

第1步:基本设置

第1步:基本设置

  • 填写服务名称和描述,选择版本。

第2步:计算节点设置

第2步:节点设置

  • 填写节点 CPU、GPU、内存、节点类型、节点个数、数据盘大小等配置信息。

第3步:网络设置

第3步:网络设置

  • 出于安全考虑,所有的集群都需要部署在私有网络中,选择自己创建的已连接路由器的私有网络中。

第4步:环境设置

第4步:环境设置

  • Deep Learning app 与 QingStor 命令行工具集成,配置 QingStor 相关参数,可以方便的从 QingStor 拉取数据。如果 QingStor 选用 false,access_key 和 secret_key 则无需填写。

Deep Learning 测试

测试环境

深度学习平台使用 miniconda2 来管理 Python 环境,Python 的版本为2.7,并装有 numpy,scipy,pandas,matplotlib,nltk,scikit-learn,jupyter notebook 等常用工具包。下面将以 MNIST 数据集为例,分别测试 Caffe,TensorFlow,PyTorch 和 Keras。

MNIST 是著名的手写数字数据集,包含 0~9 十个各种风格的手写数字,经常用于深度学习入门及测试。其内容分为训练集和测试集,训练数据集包含 60,000 个样本,测试数据集包含 10,000 样本,数据集中的每张图片由 28x28 个像素点构成。

Deep Learning 训练往往需要大量的数据,数据存储经常占用很大的空间。青云 QingStor 可以存储海量数据,用户可以方便的把数据放在 QingStor,再使用 QingStor 命令行工具快速的下载到本地。如果在环境设置中配置好了 QingStor (如果没有也可在本地配置),从 QingStor 获取数据:

cd /home/ubuntu/tensorflow  
mkdir data   
qsctl cp -r qs://mydata/ data/

节点登录信息:ubuntu/p12cHANgepwD

Caffe 测试示例

Caffe 支持 Python 接口,用户也可以根据需要重新配置编译,目前不支持多机分布式训练,详情请见 Caffe 文档。(Caffe 预先用 GPU 版本进行编译,如果选择的 GPU 的个数为 0,需修改配置文件,重新编译。)

单机

单机示例:

cd /home/ubuntu/caffe  
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt

Caffe 训练过程
Caffe 训练过程

Caffe 训练结果
Caffe 训练结果

查看 GPU 使用情况,可以使用如下命令:

nvidia-smi  

GPU 使用情况
GPU 使用情况

TensorFlow 测试示例

完整信息请见 TensorFlow 文档

单机:

cd /home/ubuntu/tensorflow  
python mnist.py

TensorFlow 训练结果
TensorFlow 训练结果

分布式:

增加节点,在线扩容:在详情页点击 新增节点 按钮,可以对每个新增节点指定 IP 或选择自动分配。
TensorFlow 增加节点
TensorFlow 增加节点

TensorFlow 分布式训练需要指定 parameter server 和 worker 的 IP 地址和端口号(根据自己的 IP 进行修改)
下面是一个 parameter server 和两个 worker 进行分布式训练的示例:  

节点 1:

  • 启动 parameter server
cd /home/ubuntu/tensorflow  
python mnist_dist.py --ps_hosts=192.168.1.6:2221 --worker_hosts=192.168.1.6:2223,192.168.1.7:2223 --job_name=ps --task_index=0  
  • 启动第一个 worker
python mnist_dist.py --ps_hosts=192.168.1.6:2221 --worker_hosts=192.168.1.6:2223,192.168.1.7:2223 --job_name=worker --task_index=0  

节点 2:

  • 启动第二个 worker (注意:是在第二个节点即新增节点上启动
cd /home/ubuntu/tensorflow  
python mnist_dist.py --ps_hosts=192.168.1.6:2221 --worker_hosts=192.168.1.6:2223,192.168.1.7:2223 --job_name=worker --task_index=1

TensorFlow 分布式训练结果
TensorFlow 分布式训练结果

开启 TensorBoard 服务

TensorFlow 中的 TensorBoard 提供了训练过程中丰富的信息,默认端口号为 6006。在某一节点上启动一下命令:

tensorboard --logdir=./tflog/

TensorBoard 展示结果
TensorBoard 展示结果

您可以通过如下方式之一查看 TensorBoard UI:

  1. 如需在TensorBoard中显示相关信息,需要编写相关代码。TensorBoard详细用法请参考 Github TensorBoard 页面。
  2. 通过公网访问,您需要先申请一个公网 IP 绑定在路由器上,在路由器上设置端口转发,同时打开防火墙相应的下行端口。
  3. 或参考VPN 隧道指南 配置 VPN,通过私网 IP 地址访问。  

PyTorch 测试示例

完整信息请见 PyTorch文档  

单机

cd /home/ubuntu/pytorch  
python mnist.py

PyTorch 训练结果
PyTorch 训练结果

分布式

PyTorch 分布式训练时,由于现在版本的 PyTorch 自身的一些缺陷,每个节点的 GPU 个数应该大于 1 个,否则容易出现错误。

节点 1:

cd /home/ubuntu/pytorch   
python mnist_dist.py  

节点 2:

cd /home/ubuntu/pytorch   
python mnist_dist.py

PyTorch 分布式训练结果
PyTorch 分布式训练结果

Keras 测试示例

Keras 默认使用 TensorFlow 来计算,目前青云平台上也只支持 TensorFlow 作为其计算框架。详情请见 Keras 文档

单机

cd /home/ubuntu/keras  
python mnist.py

Keras 训练结果
Keras 训练结果

为了方便开发,环境中配有 jupyter notebook,用户可以交互式编程,并能直观展现实时计算结果。
jupyter notebook 启动命令

cd /home/ubuntu/keras
jupyter notebook

jupyter noetbook 默认端口号为 8888,启动上述命令后会输出 token 信息,这个信息在下面访问 notebook 时候需要。

如果需要通过公网访问这些信息您需要先申请一个公网 IP 绑定在路由器上,在路由器上设置端口转发,同时打开防火墙相应的下行端口。为了方便使用 jupyter notebook,也可参考VPN 隧道指南 配置 VPN。

jupyter notebook 开发环境
jupyter notebook 开发环境