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

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 那个在国际翻译大赛上夺冠的模型,字节刚刚给开源了(附夺冠代码)

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 一方面会探索更多并行算法,比如条件随机场模型,进一步提高性能。另一方面也会开拓更多的部署环境,比如移动终端,嵌入式系统等等,方便更多实际场景的应用开发。

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
SQL 分布式计算 Hadoop
Azkaban【基础 01】核心概念+特点+Web界面+架构+Job类型(一篇即可入门Azkaban工作流调度系统)
【2月更文挑战第6天】Azkaban【基础 01】核心概念+特点+Web界面+架构+Job类型(一篇即可入门Azkaban工作流调度系统)
1111 0
|
Prometheus 监控 Cloud Native
基于k8s+Prometheus+Alertmanager+Grafana构建企业级监控告警系统(下)
基于k8s+Prometheus+Alertmanager+Grafana构建企业级监控告警系统
|
11月前
|
存储 NoSQL MongoDB
.NET MongoDB数据仓储和工作单元模式封装
.NET MongoDB数据仓储和工作单元模式封装
187 15
|
7月前
|
JavaScript 前端开发 Python
apply的用法
apply的用法
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
近期,阿里云重磅发布了首款面向 Java 开发者的开源 AI 应用开发框架:Spring AI Alibaba(项目 Github 仓库地址:alibaba/spring-ai-alibaba),Spring AI Alibaba 项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。本文将详细介绍 Spring AI Alibaba 的核心特性,并通过「智能机票助手」的示例直观的展示 Spring AI Alibaba 开发 AI 应用的便利性。示例源
8982 121
|
人工智能 边缘计算 自然语言处理
DistilQwen2:通义千问大模型的知识蒸馏实践
DistilQwen2 是基于 Qwen2大模型,通过知识蒸馏进行指令遵循效果增强的、参数较小的语言模型。本文将介绍DistilQwen2 的技术原理、效果评测,以及DistilQwen2 在阿里云人工智能平台 PAI 上的使用方法,和在各开源社区的下载使用教程。
|
Kubernetes 架构师 Java
史上最全对照表:大厂P6/P7/P8 职业技能 薪资水平 成长路线
40岁老架构师尼恩,专注于帮助读者提升技术能力和职业发展。其读者群中,多位成员成功获得知名互联网企业的面试机会。尼恩不仅提供系统化的面试准备指导,还特别针对谈薪酬环节给予专业建议,助力求职者在与HR谈判时更加自信。此外,尼恩还分享了阿里巴巴的职级体系,作为行业内广泛认可的标准,帮助读者更好地理解各职级的要求和发展路径。通过尼恩的技术圣经系列PDF,如《尼恩Java面试宝典》等,读者可以进一步提升自身技术实力,应对职场挑战。关注“技术自由圈”公众号,获取更多资源。
|
人工智能 云计算
官宣!阿里云正式亮相巴黎奥运会
官宣!阿里云正式亮相巴黎奥运会
434 3
|
存储 关系型数据库 数据库连接
数据源
数据源
424 1

热门文章

最新文章

下一篇
oss云网关配置