QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

百度开源其人工智能系统:Warp-CTC

  • 2016-01-19
  • 本文字数:2134 字

    阅读完需:约 7 分钟

近日,百度位于硅谷的人工智能实验室(SVAIL)开源了其核心的人工智能系统:Warp-CTC,该系统是一种在 CPU 和 GPU 上快速的 CTC 的并行实现。这项举动举动对于促进机器学习、人工智能领域的技术研究与发展与有重要意义。Warp-CTC 可用于解决比如语音识别这样的,将输入序列映射到输出序列的监督问题。基于 Apache 协议,WARP-CTC 的 C 语言库和可选 Torch 绑定都已托管到 GitHub:

https://github.com/baidu-research/warp-ctc

简介

许多现实世界的序列学习任务都要求从嘈杂的、不分段的输入数据中进行标签序列的预测。例如语音识别中,声音信号就被转化成语句或单词。递归神经网络(RNN)对于这样的任务来说是有力的序列训练方法,然而由于 RNN 需要预分段的训练数据,以及需要后处理才能将输出数据转化成标签序列,因此 RNN 的性能受到了限制。Warp-CTC 使用了 Connectionist Temporal Classification 的方法,该方法可以直接训练 RNN 来标记未分段序列,从而规避上述问题。Connectionist Temporal Classification 是一种损失函数,用于执行针对序列数据的监督学习,不需要输入数据和标签之间进行对应。举例来说,CTC 可以用于训练语音识别中端对端系统,而这项技术在百度硅谷人工智能实验室中早已开始使用了。

上图显示了 CTC 计算出输出序列“THE CAT”的可能性概率,考虑到由于标签可能延伸若干个输入数据的时间步长而导致标签被复制(用图像底部的光谱来表示),上图结果是所有输入序列可能映射到“THE CAT”上的比对总和。计算这些概率的总和由于涉及到组合学,显然是十分耗费时间和运算成本的,但是 CTC 利用动态编程极大地降低了运算成本。因为 CTC 是可微分的方程,它可用于深度神经网络的标准 SGD 训练。

百度实验室聚焦于扩展递归神经网络,CTC 损失就是一个十分重要的组成部分。为了使整个系统有效运行,百度将整个 CTC 算法并行化处理。该项目包含了百度的高性能 CPU 以及 CTC 损失的 CUDA 版本,并绑定了 Torch。代码库中提供了简单了 C 语言界面,以便于更好地融合深度学习框架。

这一实例通过执行更快地并行调度,极大地改进了性能,改善了训练的可扩展性。对于聚焦于 GPU 的训练管道来说,将数据本地化放置于 GPU 内存中可以用互联带宽增加数据的并行性。

性能

相对于其它公共开放的实例来说,Warp-CTC 要高效得多。该项目在编写时也是尽可能做到数值稳定。该算法对于数值十分敏感,甚至在内存消耗的多得多的单精度浮点运算当中,对于 Log 运算,其数值也是相当稳定。除了机器指令,此外还需要对于多重超越函数的评价。正因为如此,这些 CTC 实例的仅当使用相同方式计算时才能相互比较。

百度将 Warp-CTC 与运行在 Theano 上的 CTC 实例:Eesen,以及仅适用于 Cython CPU 的实例 Stanford-CTC 进行过比较。百度参照了 Theano 在 32 位浮点数字环境下进行 Log 运算,目的是与其它百度相比较的实例进行匹配。他们还将 Stanford-CTC 进行了改良,以便于在 Log 空间下进行运算,但是 Stanford-CTC 也不支持大于 1 的 minibatch。所以百度需要一个训练管道中更加庞大的内存布局,他们假设随着 minibatch 尺寸的增加,内存消耗是线性递增的。

百度将与英文和中文端对端模型(end-to-end model)相关的两个问题尺寸的结果分别展示了出来,在这里 T 代表了输入 CTC 的时间步长的数目,L 代表了每个 example 的长度,A 代表了字母的大小。

在 GPU 上,每 64 个 example 的 minibatch 的表现都在比 Eesen 快 7 倍和快 155 倍、比 Theano 实例快 46 倍和快 68 倍的范围之间波动。

GPU 表现

基于单 NVIDIA Titan X GPU

CPU 表现

基于两个 Intel E5-2660 v3 处理器的双卡插槽机器,Warp-CTC 用了 40 个线程去充分利用 CPU 资源,Eesen 没有提供 CPU 实例,Theano 实例没有进行跨多线程并行计算,Stanford-CTC 并未提供跨线程并行计算的机制。

接口

接口在 _include/ctc.h_ 里面,它支持 CPU 或 GPU 执行。如果运行在 CPU 上,你可以指定 OpenMP 并行;或者如果运行在 GPU 上,你可以指定 CUDA 流。百度针对该项目进行了设置,确保代码库不会在内部进行内存分配,目的在于避免由内存分配导致的同步和开销(synchronizations and overheads)。

编译

目前,Warp-CTC 已在 Ubuntu 14.04 和 OSX 10.10 上进行过测试,Windows 目前暂不支持。

首先获取以下代码:

复制代码
git clone https://github.com/baidu-research/warp-ctc.git
cd warp-ctc

创建一个目录

复制代码
mkdir build
cd build

如果你安装了非标准的 CUDA,则

export CUDA_BIN_PATH=/path_to_cuda以便于 CMake 可以检测到 CUDA,并且确保 Torch 也被检测到,确保 _th_ 在 _$PATH_ 里面。

运行 cmake 并创建

复制代码
cmake ../
make

C 代码库和 Torch 共享库会随着测试的可执行文件一同被创建。如果 CUDA 被检测到,那么 _test_gpu_ 就会被创建;_test_cpu_ 无论何种情况都会被创建。

测试

为了运行该项测试,对于 OSX 系统来说,百度确保了 CUDA 库在 _LD_LIBRARY_PATH (DYLD_LIBRARY_PATH_。Torch 测试必须从 _torch_binding/tests/_ 库中运行。

Torch 安装

luarocks make torch_binding/rocks/warp-ctc-scm-1.rockspec我们也可以不克隆存储库来进行安装。

luarocks install http://raw.githubusercontent.com/baidu-research/warp-ctc/master/torch_binding/rocks/warp-ctc-scm-1.rockspec

2016-01-19 22:2911126

评论

发布
暂无评论
发现更多内容

SaaS,PaaS和IaaS:有什么区别,应该使用哪个?

2D3D前端可视化开发

云计算 可视化 IaaS PaaS SaaS

流计算 Oceanus 操作效率提升指南(一)

腾讯云大数据

流计算 Oceanus

网络加速与文件传输软件:如何通过优化网络提升文件传输速度

镭速

文件传输 文件传输软件

精准测试探索 | 京东云技术团队

京东科技开发者

测试 精准测试 代码覆盖率 企业号 8 月 PK 榜 静态链路

岳阳等保测评机构有几家?在哪里?电话是多少?

行云管家

等级保护 等保测评 岳阳

小灯塔系列-中小企业数字化转型系列研究——费控测评报告

向量智库

小灯塔系列-中小企业数字化转型系列研究-BPM测评报告

向量智库

基于SDK方式的小程序监控

郑州埃文科技

网络性能

明道云联合EMQ基于IIoT场景技术白皮书

明道云

软件测试 | 查看网页的HTML源代码

测吧(北京)科技有限公司

测试

对线面试官 - TCP_IP四层网络模型经典连环问

派大星

TCP/IP Java 面试题

从生成式AI到合成式AI ,MarTech下一步如何进化

ToB行业头条

腾讯用数字孪生技术,帮这群中学生打造了第一款应用

科技热闻

Supersonic 发行平台独家上线“知识中心”,为出海开发者打造游戏智库

科技热闻

第五期(2022-2023)传统行业云原生技术落地调研报告——央国企篇

York

容器 云原生 IT 平台工程 央国企数字化转型

《操作系统实战 45 讲》笔记1——引导部分

袁世超

操作系统 Cosmos LMOS

打造自己的站长在线工具箱

echeverra

站长工具

软件测试 |Object类 - 匿名内部类

测吧(北京)科技有限公司

测试

所谓的职场抗压,到底咋回事

老张

职场经验

数据库运维是什么意思?主要工作包含哪些?

行云管家

数据库 数据库运维 IT运维

那些把爱好当事业的人,最后怎么样了?

最新动态

直播弹幕源码开发很难?一招教你解决

山东布谷网络科技

直播源码

软件测试 | 什么是安全测试

测吧(北京)科技有限公司

测试

软件测试 | Object类-接收任意引用类型的对象

测吧(北京)科技有限公司

测试

大数据传输的定义与大数据传输解决方案的选择

镭速

大数据传输 大数据传输技术

大环境下,企业如何找到大数据传输解决方案

镭速

大数据传输

网易云信回声消除量化评估方法

网易云信

回声消除 音视频技术

网易云信回声消除量化评估方法

网易智企

回声消除 音视频通话

TypeChat入门指南:从安装到对话流程设计

星辰编程理财

typescript typechat

BeanDefinition解密:构建和管理Spring Beans的基石

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

软件测试 | 什么是Web应用

测吧(北京)科技有限公司

测试

百度开源其人工智能系统:Warp-CTC_百度_董志南_InfoQ精选文章