【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

百度开源其人工智能系统: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

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2016-01-19 22:2910828

评论

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

基于微信小程序的CMS内容管理系统开发笔记

CC同学

阿里云 EMR Serverless Spark 版免费邀测中

阿里云大数据AI技术

大数据 spark 数据开发

《2023 IT行业项目管理调查报告》新鲜出炉!助力IT行业持续稳步发展

禅道项目管理

项目管理 IT 调查报告 行业趋势

企业如何通过数据资产化,激活“数据要素x”,乘出新质生产力

袋鼠云数栈

大数据 数据资产 数据要素 数据资产管理 数据资产化

以科技助力非遗文化传承,华为音乐空间音频让传统民乐重焕“新声”

最新动态

掌静脉识别技术助力城轨交通:英特尔携手生态伙伴引领行业转型升级

E科讯

银行业降本增效,数字人的应用是关键!

青否数字人

更智能的广告素材生成!看A/B测试如何驱动AIGC素材调优

字节跳动数据平台

A/B 测试 对比试验

新手程序员怎么在复杂的代码中寻找bug ?

小魏写代码

【稳定性】稳定性建设之依赖设计

京东科技开发者

百度智能云加速「低代码+大模型」融合,爱速搭位居 2023 年 IDC 低代码/无代码领导者象限

百度Geek说

AI 百度智能云

元宇宙离不开数字人,数字人离不开全链条服务!

青否数字人

SecureCRT for mac如何进行远程连接?含SecureCRT mac永久激活秘钥

Rose

SecureCRT激活 SecureCRT Mac破解版 SecureCRT 安装教程 SecureCRT怎么用 远程管理

一文让你简单了解跨境电商需要购买堡垒机的几大原因

行云管家

网络安全 电商 数据安全 堡垒机 跨境电商

IPQ9554 vs IPQ8074: Which Chipset Reigns Supreme in the World of Networking and Connectivity?

wifi6-yiyi

5G WiFi7 6G

如何借助API提升产品设计的用户体验

伤感汤姆布利柏

【永久可用】IntelliJ IDEA 2023全版本激活码 适用于macOS/Windows

Rose

intellij idea 2023激活码 intellij idea 2023中文版

Java 8 内存管理原理解析及内存故障排查实践

vivo互联网技术

实现原理 回收算法 性能诊断及优化技巧

虚拟主播+电商直播将重塑众多行业格局!

青否数字人

数字人

两场CVPR 2024 研讨会,一探大模型闭环真身

飞桨PaddlePaddle

百度 BAIDU 百度飞桨 文心一言 文心大模型

【亲测有效】axureRP9授权密钥 Mac/Windows

Rose

Beyond Compare 4 for Mac永久激活秘钥 Beyond compare 4中文汉化安装包

Rose

软件测试学习笔记丨Allure2报告中添加测试用例步骤

测试人

软件测试

作为程序员需要配蓝光眼镜吗?

小齐写代码

亮数据代理IP轻松解决爬虫数据采集痛点

袁袁袁袁满

autocad2022序列号和密钥 autocad2022中文版详细图文安装教程

Rose

AutoCAD2022序列号 autocad2022秘钥 autocad2022破解版 cad2022Mac版

定时任务优化总结(从半个小时优化到秒级)

京东科技开发者

React memo的原理、实践与思考

京东科技开发者

日本股票盘搭建

GangguHK

官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会

Apache Flink

大数据 flink 实时计算

全面测试服务:从人员外包到工具和平台的综合解决方案

霍格沃兹测试开发学社

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