Paddle技术开源介绍
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Sequence序列模型 (实现)
• 将含有序列(RNN)的神经网络的其他层和普通神 经网络一样对待。直到遇见 RNN • 打散聚合
– 将序列输入打散成单个时间步的输入。输入给RNN – 执行RNN内部的所有层 – 再将RNN的输出聚合成Sequence输出
• 使用Memory共享状态
• 支持任意复杂的RNN结构PaddlePaddle在PaddlePaddle是啥?
• 什么是深度学习
– 什么是机器学习? – 什么是浅层学习? – 深度学习的优势是?
• PaddlePaddle整体架构 • PaddlePaddle是实现时的一些思考
什么是深度学习?
• 深度学习是机器学习的一个分支 人工智能
– 多层复杂计算结构
• 参数分块 • 点对点通信 • 数据分布
机器1 PServe r 机器2 PServe r 机器3 PServe r 机器4 PServe r
Trainer
Trainer
Traine r
Traine r
Data
多机并行架构(网络均衡)
机器1 PServe r 机器2 PServe r
Trainer
PaddlePaddle Team
• 小而美的团队
– 10人左右 – 系统工程师为主 – 全部使用Github办公
PaddlePaddle是啥ePaddle是一个性能优先、灵活 易用的平台,是一个务实的平台,是 一个已经解系统PaddlePaddle。
Trainer
每一个机器的网络通信是均衡的
多机并行架构 (功能)
ParameterServer(参数服务器) 优化参数: 参数 <- 参数 – 学习率 * 梯度 下 载 参 数 上 传 梯 度 Trainer(训练器) (GradientMachine)
多机并行架构 (PServer 划分)
左侧表示神经网络的两层的连接。两层中间的连接(边)上, 为Parameter。每一个Parameter均切分到不同的PServer上 假设有四个Pserver,那么参数的划分为 • • 红色一组、蓝色一组、黄色一组、绿色一组 如果划分成三个Pserver的话,则是红色一组、蓝 色一组,黄色绿色一组(简单的除法)
• Sequence序列模型是指训练数据是一 个序列(Sequence)数据,具有顺序 (order)的概念。也就是序列中样本的 位置是有作用的。
– A vector of features 而不是 A set of features
• 自然语言处理 • 音频处理,视频处理
Sequence序列模型 (实现)
训练
• 数据读取
•
网络配置
预测(实际操作)
• 简单的预测程序
Want more?
情感分类
• 该Demo在 https:////Paddle/tree/ master/demo/quick_start • 数据集 /data/amazon / 亚马逊商品评论
什么是浅层学习?
If y > thresh; then positive Else; negative
典型算法:支持向量机(SVM), 逻辑回归(logistic regression)
什么是浅层学习(二维)?
y>0
y <= 0
线性可分 (一刀切)
浅层学习的局限性
• 或依赖于特征选择(LR, perceptron)
环形网络通信
Node A Node C Node B
环形网络通信
• 优势
– 只实现SGD的情况下非常简单 – 和Pserver模式比,少了一次通信。 – 同步粒度变得更大
• 只需要最终参数全部分发完即可。中间多个参 数块之间不需要同步
• 劣势
– 无异步SGD实现 – 实现Sparse会导致网络开销随节点数递增
这样做可以实现稀疏训练的效果
forword
什么是稀疏模型训练
稀疏模型训练是说输入数据是稀疏的 由于稀疏输入,那么灰色的神经元和连接在训练中都没有作 用 • 灰色神经元的输出是0 • 灰色连接的梯度是0 • 梯度是0的话,简单的SGD不更新权重 所以只有蓝色的连接有价值 • 需要从PServer服务器获得最新参数 • 需要计算梯度,并将梯度传送回参数服务器
• 从矩阵乘法配起,一步一步对应一个一个数学运算 • 直接写一个全连接层,LSTM层
• 基于OP的优势 tensorflow • 基于Layer的优势 Caffe
– 更灵活,更可以让研究人员构造新的东西 – 更易用,让细节暴露的更少。 – 更容易优化
PaddlePaddle实现时的一些 思考
• 基于Op还是基于Layer?
– 这个显示器很棒! (好评) – 用了两个月之后这个显示器屏幕碎了。 (差评)
• 英文
训练
• 数据读取
• 网络配置
Brain Strom
客服问题 指派 文本分类 情感分类 广义的序 列分类 垃圾短信 识别
安装问题
使用问题
咨询问题
恶意程序 识别 超长的文 本分类 文章板块 识别
Even more?
每一个parameter均切分到不同的pserver上假设有四个pserver那么参数的划分为如果划分成三个pserver的话则是红色一组蓝色一组黄色绿色一组简单的除法这样做可以实现稀疏训练的效果forword什么是稀疏模型训练forword稀疏模型训练是说输入数据是稀疏的输入输出由于稀疏输入那么灰色的神经元和连接在训练中都没有作梯度是0的话简单的sgd不更新权重所以只有蓝色的连接有价值需要计算梯度并将梯度传送回参数服务器稀疏模型训练标记好哪些神经元是真正有用的哪些是稀疏的
环形通信 In GPU
• Paddle的单机多GPU通信是环形通信
– GPU一般训练时,都是Dense数据 – 单机多GPU一般也不做异步SGD
• 多GPU通信不需要再将参数聚合到 CPU,而是是用一个 逻辑 上的对外参 数即可。
多GPU架构
对外参数 GPU 0 GPU 1 GPU 2
神经网络由多个参数块构成,每一个参数块的参数都有一个主设备。 • 如果paddle配置使用多GPU,那么参数会分在不同的设备上
数据样 本 模型 输入 预测 体重 = a * 年龄 + b
体重 3 40 15 20 15 35
调参
预测体重
真实结果 学习:最小化 (真实体重-预测体重)2
机器学习要素
• 数据 • 模型结构
– 训练数据和使用场景一致 – 体现对问题的理解 – 衡量预测和真实的差异 – 连续平滑
• 优化目标函数 • 优化算法
PaddlePaddle深度学习平台介 绍
于洋 <yuyang18@>
人工智能的新动力:大数据+深 度学习
人脸识别
内容
• • • • 我们是谁? PaddlePaddle是啥? 用PaddlePaddle做个有趣的事! 联系我们
我们是谁?
• PaddlePaddle来自于深度学习研 究院(IDL)输入
forword
输出
稀疏模型训练
• Prefetch (预取)
– 预先过一遍训练数据 – 标记好哪些神经元是真正有用的,哪些 是稀疏的。 – 从服务器查询最新的参数
• Forward/Backward
– 计算梯度,逐层返回梯度给服务器
大规模稀疏模型(多机器)
• 每个Trainer Prefetch出自身需要的参 数和服务器通信
– RNN中使用Memory在时间步中共享状态。 – 上一个时间步的神经网络,可以将需要记住的东西放 到Memory中,下一个时间步可以引用这个Memory
Sequence序列模型(Batch)
• 为什么batch计算是RNN的一个比较麻烦 的问题
• • 矩阵维度要够大,才能发挥GPU的能力,才 能加速运算 (SPMD) Seqneuce的输入是参差不齐的。
机器学习
• 机器学习是人工智能的一个分支 深度学习 • 不需要显示的通过编程告诉机器怎样 做 • 让机器的能力随着经验的增加而提高
机器学习图解
评价指标 数据1 越 来 越 好
数据2
机器学习程序
数据3
机器学习ABC:监督学习
模型 输入
数据样本
调参
预测结果
真实结果 学习
机器学习ABC:监督学习
年龄 0 10 1 4 3 7
记录下来次数
多机并行架构(Cont.)
• 有很多语音或者图像任务不需要 PServer结构,而是用环形网络通信 • 环形网络通信的算法描述为:
环形网络通信
Node A
Node C
Node B
Hale Waihona Puke 环形网络通信Node A
Node C
Node B
环形网络通信
Node A
Node C 优 化
Node B
多GPU架构 参数分发
对外参数 GPU 0 GPU 1 GPU 2
环形分发,将参数从主设备分发给下一个设备,再由下一个设备分发给下下个设备。
多GPU架构 梯度聚合
对外参数 GPU 0 GPU 1 GPU 2
环形聚合,沿着分发的反方向,将梯度聚合到每个Parameter的主卡上
Sequence序列模型
– 不争论 – 支持大部分Layer,但是也支持从Op开始配 网络 (矩阵乘发,加法,激活等等) – 对于成型的Layer(LSTM)使用C++重新优化。 – PaddlePaddle是企业解决现有问题的框架, 不是纯粹的科研框架。 – 企业需要性能,也需要灵活性
• 原因:
PaddlePaddle实现时的一些 思考
Sequence序列模型(Batch)
0 Padding 0 0 0 0
0 0
Tensorflow、MXNet的实现
Sequence序列模型(Batch)
排序
PaddlePaddle的实现
PaddlePaddle实现时的一些 思考
• 基于OP(操作)还是基于Layer(层)?
– 基于OP – 基于层
• 转移学习
什么样的任务适合深度学 习?
1.明确的目标 2.大量的数据
特定领域下的AI
一个能学习的智能体?
• 目前我们还没有完全了解。 • 目前我们正在尝试了解。
PaddlePaddle整体架构
• • • • 多机并行架构 多GPU并行架构 Sequence序列模型 大规模稀疏训练
多机并行架构
– 中国第一家以深度学习为核心的大数据 人工智能S(系统部)开发的深度学习平台。
• 开发始于2013年
PaddlePaddle习平台的开发以 及算法的研究。徐伟于1998年获得清华大学计算机专业学士学位,20 负责大规模推荐平台,并广泛应用于多个产品中为上十亿的用户提供个性化 服务。在Facebook之前,徐伟曾服务于NEC lab高级研究员,期间将深度学习 技术应用于图像识别产品。
– 同理,Paddle底层不依赖任何GPU通信 框架
– 从头手写网络库更方便性能调优 – RDMA可以更好的支持
用PaddlePaddle做一些有意 思的事
• 手写识别 • 情感分类
手写识别
• 数据集—MNIST
• 示例代码均可在 https:///reyoung/paddle_mnist_ demo下载
• 多机通信基于MPI 还是 Spark 还是 k8s + Docker?
– PaddlePaddle底层通信不依赖于任何网 络框架
• PaddlePaddle的网络任务需求相对简单 • PaddlePaddle的网络需要高性能
– 任务周期短 (连续运行几周) – 任务可以失败 (多存checkpoint)
PaddlePaddle 文档中的demo
• 图像分类
– 手写识别 – 彩色图像分类 – 情感分类 – 机器翻译 – 序列标注
• 自然语言处理
– 比如判断人的性别
• 头发长度?颜色?身高?体重? • DNA!
• 或依赖于设计使用核函数(SVM)
两层模型
输出 隐含层
输入
深度学习模型(多层神经网 络)
• 灵活
– 不同的结构、训练目标、激活函数、正则化等
• 可以学习高层次的抽象、分解变化因素 • 多任务学习
– – 多个不同任务可以使用一个模型学习 从一个任务学到的模型可以应用到相关的不同任务
大规模稀疏模型(正则化)
• 简单的SGD确实在梯度为0的时候,不 去更新参数,但是加上正则化就不一 定了。 • 比如L2正则化,就要求参数的2范数 持续减小。
大规模稀疏模型(正则化)
查询最新参数 正则 化
Trainer
PServer
优化参数
发送梯度
大规模稀疏模型(正则化)
正则化在查询最新参数的时候做 • 记录下来上次查询距离这次查询经过了多少轮 • 将所有正则化一次补齐 • 返回最新参数