如何让语言模型充分利用GPU:针对大规模并行设备的N-gram

这篇论文介绍了针对大规模并行设备(GPU)的N-gram语言模型,解决GPU上N-gram计算瓶颈。通过使用B-tree优化的trie数据结构,提高查询速度并减少内存占用。实验表明,该模型在GPU上实现了较好的性能,特别是在经济性和吞吐量方面。
摘要由CSDN通过智能技术生成

爱丁堡大学的论文《N-gram language models for massively parallel devices》介绍了用于大规模并行设备的 N-gram 语言模型。机器之心技术分析师对该论文进行了解读。

论文:https://aclweb.org/anthology/P/P16/P16-1183.pdf

引言

这篇论文谈的是用于大规模并行设备(GPU)的 N-gram 语言模型,这是最早为 GPU 设计的语言模型(至少在这篇论文发表时是这样)。N-gram 语言模型的查询速度存在计算瓶颈,而且尽管 GPU 擅于计算,但在 GPU 上却并不好实现,因为还不存在针对 GPU 的已有的数据结构类型。这个问题导致我们无法完全发挥 GPU 的效力。

1 背景

也许有的读者并不真正了解 N-gram 模型是什么,因此首先我会先简要介绍一些基本概念:

N-gram 语言模型

参阅:https://lagunita.stanford.edu/c4x/Engineering/CS-224N/asset/slp4.pdf

为词序列分配概率的模型被称为语言模型(LM)。N-gram 是目前最简单的语言模型。N-gram 是 N 个词构成的序列:2-gram(bi-gram)是两个词构成的词序列,比如“please turn”;3-gram(tri-gram)是三个词构成的词序列,比如“please turn your”。

我们需要关注的有两点(至少这篇论文是这么说的):

  • 给定之前的词,如何使用 N-gram 模型来估计 N-gram 中最后一个词的概率?
  • 如何将概率分配给整个序列?

(注意:我们通常会丢弃“模型”这个词,这样 N-gram 既可表示词序列本身,也可表示为其分配概率的预测模型。这或许会产生一点术语歧义。)

对数概率

为什么为语言模型使用对数概率?因为(按照定义)概率是小于或等于 1 的,所以相乘的概率越多,所得到的积就会越小。乘上足够多的 N-gram 就会导致数值下溢。通过使用对数概率而非原始概率,我们能得到不会那么小的值。在对数空间中相加等效于在线性空间中相乘,这样我们就可以通过加法来将对数概率结合到一起。在对数空间中执行所有计算和存储是很方便的,如果我们想查看结果,只需要将结果转换到普通概率空间既可,即求该对数概率的指数:p1 × p2 × p3 × p4 = exp(log p1 +log p2 +log p3 +log p4)

2 这篇论文的动机

因为 N-gram 语言模型的查询速度在 CPU 上存在计算瓶颈(Heafield (2013) 和 Green et al. (2014) 在静态机器翻译任务上展现了这一问题,而且众所周知神经网络需要大量计算),因此人们转而使用 GPU。但是,GPU 采用了特殊的结构设计,在很多方面都不同于 CPU,使用已有的数据结构和算法很难最大化对这一资源的利用。

这篇论文提出了首个专门为这种硬件(GPU)设计的语言模型,它使用了 trie,其中每个节点都由 B-tree 表示,这能最大化数据并行以及最小化内存占用和延迟。

3 GPU 计算模型

比起 CPU,GPU 有很多更小的核,它们各自都实现一个线程,而且其中很多都属于下图所示的一个器件。本质上,在 GPU 上是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值