Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

钱线、封江涛、周浩作者

那个在国际翻译大赛上夺冠的模型,字节刚刚给开源了(附夺冠代码)

Transformer 等文本生成主流算法的逐词生成对适合并行计算的 GPU 并不友好,会导致 GPU 利用率低下。并行生成有助于解决这一问题。前不久,字节跳动火山翻译团队的并行生成翻译系统 GLAT 拿下了 WMT2021 De-En/En-De 的双料冠军。为了帮助大家跟进这一成果,火山翻译开源了一个名为 ParaGen 的 Pytorch 深度学习框架,其中包含 GLAT 模型复现和 WMT21 的代码。

图片

代码地址:https://github.com/bytedance/ParaGen

文本生成自然语言处理的一个重要研究方向,具有广泛的应用场景。比如文本摘要、机器翻译、文案生成等等。不同于一般的分类、标注等任务,文本生成不仅要考虑每个词的重要性,提高单词的预测准确性,也要兼顾词语之间的搭配,保持整个文本的流畅度。因此一般的做法是逐词生成,每产生一个词都会考虑和已有词的关系。

经过以上步骤进行文本生成的这类模型称为自回归模型,比如目前主流的生成算法 Transformer。该模型首先对原始文本进行编码,比如机器翻译中的待翻译文本或者是文本摘要中的原文。然后再从左到右逐词解码产生翻译好的文本或是摘要。基于该算法的开源软件有 tensor2tensor、fairseq 等。然而逐词生成对适合并行计算的 GPU 来说并不友好,导致 GPU 利用率低下,句子生成速度慢。因此近年来有很多研究探索如何并行生成文本,降低响应延时。

此前,字节跳动人工智能实验室 (AI-Lab) 的火山翻译团队研发了并行生成的翻译系统 Glancing Transformer (GLAT)(参见《ACL 2021 | 字节跳动 Glancing Transformer:惊鸿一瞥的并行生成模型),并且使用它一举拿下了 WMT2021 De-En/En-De 的双料冠军 (参见《并行生成奇点临近!字节跳动 GLAT 斩获 WMT2021 大语种德英自动评估第一》),彰显出了并行生成的强大潜力。ParaGen 正是在这个背景下应运而生。团队的研究者们发现,对于并行生成来说,单单是模型的改进已经不能满足研究的需求,训练方法、解码算法的改进也变得日益重要。而 ParaGen 的开发正是为了解放并行生成研究的生产力。

在 ParaGen 中,火山翻译开源了 GLAT 模型复现和 WMT21 的代码,帮助大家更好地去跟进并行生成的研究结果。在未来,火山翻译也将开源更多并行生成相关的技术,推动并行生成技术的进一步发展,帮助并行生成这一技术逐渐走向更多的生产应用。与此同时,除了并行生成以外,ParaGen 也支持了多元化的自然语言处理任务,包括自回归翻译、多语言翻译、预训练模型、生成任务、抽取任务、分类任务等,并提供从零复现的代码,帮助刚接触自然语言处理研究的同学更快进入到研究的状态。

ParaGen 让开发更灵活、更自由、更简便

ParaGen 支持了多达 13 种可自定义模块,包括数据读入、数据预处理、数据采样、数据加载、网络模块、训练模型、推断模型、优化目标、搜索算法、优化器、数值规划器、训练算法和评价目标,相比于同类的文本生成框架,大大提高了二次开发的灵活性。而对于不同的模块,ParaGen 采用微内核的设计,每个模块只提供一些通用基本的实现,彼此之间互相独立,比如数值优化器中 InverseSquareRootRateScheduler、网络模块的 positional embedding、数据读入的 JsonDataset 等。也正是得益于这细致的 13 类模块拆解,ParaGen 可以更方便地进行自定义。例如需要实现 glancing training 的方式,在 ParaGen 里面仅仅只需要重载一个 forward_loss 函数,就可以模块化的实现自定义的训练。

import torch
from paragen.trainers.trainer import Trainer
from paragen.trainers import register_trainer


@register_trainer
class GLATTrainer(Trainer):
    """
    Trainer with glancing strategy
    """
    def _forward_loss(self, samples):
        glancing_output = self._generator(**samples['net_input'])
        fused_samples = self._fusing(samples, glancing_output)
        logging_states = self._criterion(**fused_samples)
        return loss

不同于既往的过程式开发,ParaGen 更偏向于组装式开发。过程式开发中,框架固定一个流程代码,用户则想办法将各个模组填入到流程里面。而 ParaGen 的组装式开发则是完全不同。想象你目前正要实现一个任务,ParaGen 像是一个工具箱,你可以根据自己想要的功能组装出一个完整的流程出来,比如可以选择合适的 Dataset 类来进行数据读取、选择 Sampler 来进行 batch 组合、选择 Metric 来进行结果评估、甚至定义自己的训练流程等等。而在碰到了没有实现的工具时,ParaGen 的工具又可以作为父类使用,通过重载一小部分的函数来定制自己的专属工具,以适配更多的任务。

与此同时,ParaGen 代码结构拆解的更加细致,用户只要花 2-3 小时阅读代码就能了解整个项目的框架,从而定制自己的任务。不仅如此,ParaGen 也提供了相应的教程,帮助初学者认识学习了解整个 ParaGen 代码的基本知识和使用方式。

ParaGen 让开发更稳定

ParaGen 能够很好的支持不同方向的同时开发。ParaGen 支持可插拔的方式进行代码开发,允许用户脱离框架进行开发。用户可以在任何的目录下开发自己专属的模块,并通过 --lib {my_lib} 命令进行导入 ParaGen 执行,使得二次开发代码独立于主代码,更加有利于二次开发代码的维护和主框架的稳定,保证了不同项目开发的并行性和稳定性,不会引起彼此代码的冲突。

图片

ParaGen 采用 apache2 开源协议,该协议十分宽松,比如允许其他开发人员二次开发后闭源等,方便更多的优秀开发人员或者团队的参与。

作为首款翻译质量超过传统自回归模型的并行文本生成软件,ParaGen 证明了同时兼顾速度和质量的可行性,为后续研究提供了可复现的实现。在应用层面,极大地满足了终端部署的低功耗快速响应的性能需求。在后续的开发中,ParaGen 一方面会探索更多并行算法,比如条件随机场模型,进一步提高性能。另一方面也会开拓更多的部署环境,比如移动终端,嵌入式系统等等,方便更多实际场景的应用开发。

理论字节跳动机器翻译
相关数据
字节跳动机构

北京字节跳动科技有限公司成立于2012年,是最早将人工智能应用于移动互联网场景的科技企业之一,是中国北京的一家信息科技公司,地址位于北京市海淀区知春路甲48号。其独立研发的“今日头条”客户端,通过海量信息采集、深度数据挖掘和用户行为分析,为用户智能推荐个性化信息,从而开创了一种全新的新闻阅读模式

https://bytedance.com
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

规划技术

人工智能领域的「规划」通常是指智能体执行的任务/动作的自动规划和调度,其目的是进行资源的优化。常见的规划方法包括经典规划(Classical Planning)、分层任务网络(HTN)和 logistics 规划。

机器翻译技术

机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。

条件随机场技术

条件随机场(conditional random field,简称 CRF),是一种鉴别式机率模型,是随机场的一种,常用于标注或分析序列资料,如自然语言文字或是生物序列。 如同马尔可夫随机场,条件随机场为无向性之图模型,图中的顶点代表随机变量,顶点间的连线代表随机变量间的相依关系,在条件随机场当中,随机变量 Y 的分布为条件机率,给定的观察值则为随机变量 X。原则上,条件随机场的图模型布局是可以任意给定的,一般常用的布局是链接式的架构,链接式架构不论在训练(training)、推论(inference)、或是解码(decoding)上,都存在有效率的算法可供演算。 条件随机场跟隐马尔可夫模型常被一起提及,条件随机场对于输入和输出的机率分布,没有如隐马尔可夫模型那般强烈的假设存在。 线性链条件随机场应用于标注问题是由Lafferty等人与2001年提出的。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

生成模型技术

在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。 它给观测值和标注数据序列指定一个联合概率分布。 在机器学习中,生成模型可以用来直接对数据建模(例如根据某个变量的概率密度函数进行数据采样),也可以用来建立变量间的条件概率分布。

嵌入式系统技术

嵌入式系统,是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。嵌入式系统常被用于高效控制许多常见设备,被嵌入的系统通常是包含数字硬件和机械部件的完整设备,例如汽车的防锁死刹车系统。

自回归模型技术

自回归模型,是统计上一种处理时间序列的方法,自回归模型被广泛运用在经济学、资讯学、自然现象的预测上。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

文本生成技术

文本生成是生成文本的任务,其目的是使人类书写文本难以区分。

推荐文章
暂无评论
暂无评论~