当前位置: 首页 > news >正文

OpenBA:开源模型家族再添一员!从头训练的15B中英非对称Encoder-Decoder结构双语模型...

e8ddda1de46684d9fffd05473602db6d.png

苏州大学从头训练的双语非对称Encoder-Decoder模型OpenBA已正式开源!

主要亮点包括:

  • 亮点一:此模型为中文开源社区贡献了一个有代表性的编码器解码器大语言模型,其训练过程(包括数据收集与清洗、模型构建与训练)已完全开源。

  • 亮点二:数据方面,OpenBA所使用的数据均公开可获取,模型的能力产生更加透明。

  • 亮点三:针对中文instruction能力,我们基于开源的标注数据构建了大规模中文Flan数据集,并完全开放了其构建方法。

  • 亮点四:仅凭380B token的训练量,在多种中英下游任务上超越了许多同参数量、更大数据训练的模型。

技术报告与项目地址

技术报告:
OpenBA: An Open-sourced 15B Bilingual Asymmetric seq2seq Model Pre-trained from Scratch
https://arxiv.org/abs/2309.10706

模型:
https://huggingface.co/OpenBA

项目:
https://github.com/OpenNLG/OpenBA.git

论文概述

语言大模型的发展离不开开源社区的贡献。在中文开源领域,虽有GLM,Baichuan,Moss,BatGPT之类的优秀工作,但仍存在以下空白:

  1. 主流开源大语言模型主要基于decoder-only架构或其变种,encoder-decoder架构仍待研究。

  2. 许多中文开源指令数据集是由ChatGPT生成或从英文翻译而来,存在版权和质量问题。

为填补这些空白,该工作:

  1. 采用了非对称的编码器-解码器架构(浅编码器,深解码器),融入UL2多任务训练、长度适应训练和双语Flan训练三个阶段。

  2. 构建了包括五千万条指令的中文Flan数据集,涵盖了44个任务,同时完全开放收集和构建方法。

预训练数据构成

OpenBA的数据构成为190B tokens 英文数据,190B tokens 中文数据和20B tokens 代码数据。其中,英文数据和代码数据从The Pile数据集中采样而来,而中文数据集主要来源于Common Crawl的子集和FudanNLPLAB的CBook-150K数据集。其具体的预训数据构成如下图所示:

b326572070b5fc2ec564ab9571b4244a.png

双语Flan数据收集

我们选用了The Flan Collection作为英文Flan数据集,而中文Flan数据集则选用了涵盖了44个任务五千万条指令数据,同时完全开放了其构建方法。下面给出了整个双语Flan数据集的分布和具体的中文Flan数据集构成。

afd63416dcade063c85ccf12f7781100.png1b17ab1bfb7834ea875f56d84c50e799.png

非对称Encoder-Decoder模型结构

在模型结构的选择上,OpenBA尝试了三种设置:(1) 更深的decoder,(2) 更深的encoder,(3) 相同层数的encoder和decoder。

论文认为现有的大语言模型主要为decoder-only结构,以生成能力见长,而decoder的层数更深有助于模型生成能力的提升。

针这一点,本文做了一个验证试验,用UL2的训练目标训练上述三种设置的模型,并观察模型在三种denoising验证集上的效果,其中S-Denoising task上的能力可以看作是对模型生成能力的衡量。

2ebc0bfaf59118eb6ce6ca2613083be0.png

实验结论表明:更深的decoder设置在S-Denoising任务上的能力要更优,这也证实了更深decoder模型在生成任务上的有效性。

融合UL2的三阶段预训练

eea4e09cb86f837f0e56a836a4c54cad.png

如上图所示,OpenBA经历了三个阶段的预训练,分别是:

  • UL2 预训练 此阶段主要涉及三个任务:少量随机掩码的R-Denosing,大量随机掩码的X-Denosing,以及序列连续掩码的S-Denosing。

  • 长度适应训练: 在这个阶段,OpenBA将570/380的输入输出最大长度延伸至1024/1024,并仅专注于续写任务。这一步的目的是为了让模型能适应对上下文长度要求更高的下游任务,且进一步增强其生成能力。

  • 双语Flan训练阶段: 在这个阶段,OpenBA在双语Flan数据集上进行了微调,赋予模型更强的遵循指令能力。

实验结果

OpenBA在多个常用中英文Benchmark(MMLU,CMMLU,C-Eval,BBH,SuperGLUE等)以及不同设置下(包括Zero-shot, Few-shot, Held-in, Hold-out)进行了评测,覆盖了常识推理、自然语言生成和自然语言理解等任务。

OpenBA在不同任务与设置下均取得了有竞争力的效果。以下为OpenBA在BELEBELE(自然语言理解任务),ROC Story(自然语言生成任务),CMMLU(逻辑推理任务)的部分评测结果。

6631541b5f29eee867a87d775f34f348.png
OpenBA在BELEBELE(阅读理解)上的自动指标结果

OpenBA在ROC Story(故事生成)上的人工评测结果:

f1f8a7379aa818319eada7bfed4072f4.png
连贯性评测
47bd26012c3b9d99ad29a914188e1d68.png
一致性评测

OpenBA在CMMLU(中文逻辑推理)上的自动指标结果:522286ec5fc7ecfc7fedc62066890c72.png

小结

尽管OpenBA仅使用了380B tokens,但它在众多benchmarks上均获得了出色的性能,甚至超过了消耗更多数据的模型。苏州大学已开源OpenBA的各阶段checkpoint以及中文Flan数据集的构建方法,以便于广大研究者使用。

OpenBA下一阶段的工作将在通用聊天模型、调用工具模型以及去除偏见与对齐方面进一步深化研究(具体请参考技术报告)。

如果您对OpenBA感兴趣,欢迎合作,一起为开源社区做出贡献。


进NLP群—>加入NLP交流群

相关文章:

OpenBA:开源模型家族再添一员!从头训练的15B中英非对称Encoder-Decoder结构双语模型...

苏州大学从头训练的双语非对称Encoder-Decoder模型OpenBA已正式开源! 主要亮点包括: 亮点一:此模型为中文开源社区贡献了一个有代表性的编码器解码器大语言模型,其训练过程(包括数据收集与清洗、模型构建与训练&#x…...

安防视频监控平台EasyNVR无法控制云台,该如何解决?

TSINGSEE青犀视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。在智慧安防等视频监控场景中,EasyNVR可提供视频实时监控直播、云端…...

基座向量施密特正交化

最近再次细细的阅读了向量施密特正交化,重新系统梳理一下 一、正交基地与向量的正交分解 二、基化成标准正交基,是什么意思 将一个向量空间中的基向量通过某种方式转化为一组标准正交基,是指将原有的基向量进行调整,使得它们满足…...

OpenCV图像金字塔

什么是图像金字塔? 向上采样 :cv.pyrUp(img) 向下采样 : cv.pyrDown(img) 代码实现 import numpy as np import cv2 as cv import matplotlib.pyplot as plt#图像的读取 img cv.imread("lena.png")#进行图像采样 up_img cv.pyrUp(img) #上…...

Arduino驱动MMA7361/MMA7360三轴加速度传感器(惯性测量传感器篇)

目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 MMA7361三轴加速度传感器是替代停产的MMA7260三轴加速度传感器,三轴加速度传感器是一种可以对物体运动过程中的加速度进行测量的电子设备,典型互动应用中的加速度传感器可以用来对物体的姿态或者运动方向进行检测…...

ceph分布式存储

目录 一、概述 1、特点 2、组件 3、架构图 二、分布式部署 1、环境拓扑 2、实验准备 3、ceph安装 安装 初始化monitor 同步管理信息 安装mgr(管理守护进程) 安装rgw 创建mds服务 OSD安装 4、dashboard安装 开启dashboard模块 生成签名 …...

DA1--用pandas查看网站用户数据

目录 1.题目描述 2.输入描述 3.输出描述 4.题目分析 5.通过代码 1.题目描述 现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔): Nowcoder_ID:用户ID …...

JWT令牌

一、JWT(Json Web Token)能干什么 1、安全认证(权限认证) 比如登录系统的时候,服务器会检查前端请求数据中携带的token信息,符合标准则允许访问,不符合则拒绝你的访问请求。 2、信息传递 比…...

uni-app使用CSS实现无限旋转动画

本来想用uni.createAnimation创建一个旋转动画,发现转完一圈后就不动了,没法循环旋转, 后来又用setInterval每隔一个周期就把旋转角度加180度,发现运行一段时间后动画逐渐崩坏,应该是动画的周期和定时器的周期时间没有…...

java面向对象(八)

文章目录 一、abstract关键字的使用1.概念2. abstract修饰类:抽象类3.abstract修饰方法,抽象方法4.abstract使用上的注意点:5.抽象类的匿名子类 二、计算一段代码执行所花费的时间三、接口的使用1.接口的使用2.定义接口中的成员3.代码demo4.Java类可以实…...

【proverif】proverif的下载安装和初使用

文章目录 一、proverif下载1. 下载proverif安装包2. 解压proverif安装包3. 点开其中的README,安装graphciz和gtk4. 查看安装是否成功5. 测试 一、proverif下载 1. 下载proverif安装包 官网:proverif 首先下载全过程无需开外网,而且安装包下…...

浙江大学《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作——2023学生开学季辉少许

浙江大学《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作——2023学生开学季辉少许...

Centos7.9 一键脚本部署 LibreNMS 网络监控系统

前言: LibreNMS 是个以 PHP/MySQL 为基底的自动探索网络监控系统 LibreNMS 官网 版本23.8.2-52-g7bbe0a2 - Thu Sep 14 2023 22:33:23 GMT0700数据库纲要2023_09_01_084057_application_new_defaults (259)Web 服务器nginx/1.20.1PHP8.1.23Python3.6.8DatabaseMa…...

【大数据之Kafka】十六、Kafka集成外部系统之集成Flume

Flume 是一个在大数据开发中非常常用的组件。可以用于 Kafka 的生产者,也可以用于 Kafka 的消费者。 Flume安装和部署:https://blog.csdn.net/qq_18625571/article/details/131678589?spm1001.2014.3001.5501 1 Flume生产者 (1&#xff09…...

java学习--day3 (运算符、if循环、switch-case结构)

文章目录 今天的内容1.运算符1.1关系运算符1.2逻辑运算符1.3逻辑运算符的短路原则 2.分支结构【重点】2.1if分支2.2if-else分支2.3if-else的嵌套写法2.4if-else if 分支结构2.5swicth-case结构 扩展知识点 1.八大基本数据类型整型: byte short int long浮点: float double字…...

ActiveMQ、RabbitMQ、RocketMQ、Kafka区别

一、消息中间件的使用场景 消息中间件的使用场景总结就是六个字:解耦、异步、削峰 1.解耦 如果我方系统A要与三方B系统进行数据对接,推送系统人员信息,通常我们会使用接口开发来进行。但是如果运维期间B系统进行了调整,或者推送…...

csp初赛总结 那些年编程走过的坑 初高中信竞常考语法算法点

😘个人主页:曲终酣兴晚的小书屋💖 😕作者介绍:一个莽莽撞撞的🐻 💖专栏介绍:日常生活&往事回忆 😶‍🌫️每日金句:祝大家心有山水不造作&…...

DollarTree(美元树)验厂需要注意哪些方面?

【DollarTree(美元树)验厂需要注意哪些方面?】 美元树(Dollar tree),是美国的一元店。每件商品都只卖一美元,吃的、用的和玩的应有尽有。美元树在美国共拥有4900家门店,其中一半的连…...

vector使用和模拟实现

💓博主个人主页:不是笨小孩👀 ⏩专栏分类:数据结构与算法👀 C👀 刷题专栏👀 C语言👀 🚚代码仓库:笨小孩的代码库👀 ⏩社区:不是笨小孩👀 🌹欢迎大…...

token登录的实现

token登录的实现 我这种token只是简单的实现token,就是后端利用UUID 生成简单随机码,利用随机码作为在Redis中的键,然后存储的用户信息作为值,在每次合理请求的时候对token的有效时间进行刷新(利用拦截器)&…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...