当前位置: 首页 > 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的有效时间进行刷新(利用拦截器)&…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...

微服务通信安全:深入解析mTLS的原理与实践

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...

Python训练营-Day26-函数专题1:函数定义与参数

题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...