baichuan-7B: 开源可商用支持中英文的最好大模型

news2025/1/4 17:44:00

背景

baichuan-7B 是由百川智能开发的一个开源可商用的大规模预训练语言模型。

基于 Transformer 结构,在大约1.2万亿 tokens 上训练的70亿参数模型,支持中英双语,上下文窗口长度为4096。

在标准的中文和英文权威 benchmark(C-EVAL/MMLU)上均取得了同参数规模下的最好效果。

baichuan-7B的优点

  • 在同尺寸模型中baichuan-7B达到了目前SOTA的水平。
  • baichuan-7B使用自有的中英文双语语料进行训练,在中文上进行优化,在C-Eval达到SOTA水平。
  • 不同于LLaMA完全禁止商业使用,baichuan-7B使用更宽松的开源协议,允许用于商业目的。

数据收集

  • 原始数据包括开源的中英文数据和自行抓取的中文互联网数据,以及部分高质量知识性数据。
  • 参考相关数据工作,频率和质量是数据处理环节重点考虑的两个维度。 我们基于启发式规则和质量模型打分,对原始数据集进行篇章和句子粒度的过滤。在全量数据上,利用局部敏感哈希方法,对篇章和句子粒度做滤重。

模型结构

整体模型基于标准的 Transformer 结构,采用了和 LLaMA 一样的模型设计。

  • 位置编码:rotary-embedding

    是现阶段被大多模型采用的位置编码方案,具有更好的外延效果。虽然训练过程中最大长度为4096,但是实际测试中模型可以很好的扩展到 5000 tokens 上,如下图:

  • 激活层:SwiGLU, Feedforward 变化为(8/3)倍的隐含层大小,即11008。

  • Layer-Normalization: 基于 RMSNorm 的 Pre-Normalization。

预训练

采用 DeepSpeed 框架进行训练,在原本的LLaMA框架上进行诸多修改以提升训练时的吞吐,具体包括:

  1. 算子优化技术:采用更高效算子,如 Flash-attention,NVIDIA apex 的 RMSNorm 等。
  2. 算子切分技术:将部分计算算子进行切分,减小内存峰值。
  3. 混合精度技术:降低在不损失模型精度的情况下加速计算过程。
  4. 训练容灾技术:训练平台和训练框架联合优化,IaaS + PaaS 实现分钟级的故障定位和任务恢复。
  5. 通信优化技术,具体包括:
    1. 采用拓扑感知的集合通信算法,避免网络拥塞问题,提高通信效率。
    2. 根据卡数自适应设置 bucket size,提高带宽利用率。
    3. 根据模型和集群环境,调优通信原语的触发时机,从而将计算和通信重叠。

基于上述的几个优化技术,在千卡A800机器上达到了7B模型182Tflops的吞吐,GPU峰值算力利用率高达58.3% 。

最终的loss如下图:

实验效果

C-Eval

C-Eval 数据集是一个全面的中文基础模型评测数据集,涵盖了52个学科和四个难度的级别。

使用该数据集的dev集作为 few-shot 的来源,在 test 集上进行了 5-shot 测试。

先修改 evaluate_zh.py 中的 OPENMODEL_PATH 和 CEVAL_DATA_PATH 两个值,分别是模型(文件夹)存放的路径和 C-Eval 数据集的路径。再执行下面的脚本。

shot=5  # few-shot
gpu=0  # 显卡id
split=test  # 评估测试集
model_id=baichuan-7b   # 待评估的模型
task=ceval  # 任务名称:ceval
echo gpu_idx-${gpu}-${model_id}_${task}_${split}_${shot}-shot
nohup python  evaluate_zh.py --gpu_idx ${gpu} --model_id ${model_id} --task ${task} --shot ${shot} --split ${split} --show_detail  > ${model_id}_${task}_${split}_${shot}-shot_record.txt 2>&1 &

结果

Model 5-shotAverageAvg(Hard)STEMSocial SciencesHumanitiesOthers
GPT-468.754.967.177.664.567.8
ChatGPT54.441.452.961.850.953.6
Claude-v1.354.239.051.961.752.153.7
Claude-instant-v1.045.935.543.153.844.245.4
moss-moon-003-base (16B)27.424.527.029.127.226.9
Ziya-LLaMA-13B-pretrain30.222.727.734.432.028.9
LLaMA-7B-hf27.125.927.126.827.926.3
ChatGLM-6B34.523.130.439.637.434.5
Falcon-7B25.824.325.826.025.825.6
Open-LLaMA-v2-pretrain (7B)24.022.523.125.325.223.2
TigerBot-7B-base25.727.027.324.723.426.1
Aquila-7B*25.525.225.624.625.226.6
BLOOM-7B22.820.221.823.323.923.3
BLOOMZ-7B35.725.831.343.536.635.6
baichuan-7B42.831.538.252.046.239.3

Gaokao

Gaokao 是一个以中国高考题作为评测大语言模型能力的数据集,用以评估模型的语言能力和逻辑推理能力。

只保留了其中的单项选择题,随机划分后对所有模型进行统一 5-shot 测试。

结果

以下是测试的结果。

ModelAverage
Open-LLaMA-v2-pretrain21.41
Ziya-LLaMA-13B-pretrain23.17
Falcon-7B23.98
TigerBot-7B-base25.94
LLaMA-7B27.81
ChatGLM-6B21.41
BLOOM-7B26.96
BLOOMZ-7B28.72
Aquila-7B*24.39
baichuan-7B36.24

AGIEval

AGIEval 旨在评估模型的认知和解决问题相关的任务中的一般能力。

只保留了其中的四选一单项选择题,随机划分后对所有模型进行了统一5-shot测试。

结果

ModelAverage
Open-LLaMA-v2-pretrain23.49
Ziya-LLaMA-13B-pretrain27.64
Falcon-7B27.18
TigerBot-7B-base25.19
LLaMA-7B28.17
ChatGLM-6B23.49
BLOOM-7B26.55
BLOOMZ-7B30.27
Aquila-7B*25.58
baichuan-7B34.44
  • 其中 Aquila 模型来源于智源官方网站(https://model.baai.ac.cn/model-detail/100098) 仅做参考

英文榜单

除了中文之外,也测试了模型在英文上的效果。

MMLU 是包含57个多选任务的英文评测数据集,涵盖了初等数学、美国历史、计算机科学、法律等,难度覆盖高中水平到专家水平,是目前主流的LLM评测数据集。

采用了开源 的评测方案,最终 5-shot 结果如下所示:

结果

ModelHumanitiesSocial SciencesSTEMOtherAverage
LLaMA-7B234.038.330.538.135.1
Falcon-7B1----35.0
mpt-7B1----35.6
ChatGLM-6B035.441.031.340.536.9
BLOOM-7B025.024.426.526.425.5
BLOOMZ-7B031.342.134.439.036.1
moss-moon-003-base (16B)024.222.822.424.423.6
moss-moon-003-sft (16B)030.533.829.334.431.9
baichuan-7B038.448.935.648.142.3

总结

baichuan-7B模型基于标准的 Transformer 结构,采用了和 LLaMA 一样的模型设计,核心优势如下:

  • 在同尺寸模型中baichuan-7B达到了目前SOTA的水平。
  • baichuan-7B使用自有的中英文双语语料进行训练,在中文上进行优化,在C-Eval达到SOTA水平。
  • 不同于LLaMA完全禁止商业使用,baichuan-7B使用更宽松的开源协议,允许用于商业目的。

文章和示例代码开源在GitHub: GPT实战教程,了解所有主流的开源LLM。

公众号:coding进阶。关注公众号可以获取最新GPT实战内容。

个人网站:Jincheng’s Blog。

知乎:无忌。

References

  • https://github.com/baichuan-inc/baichuan-7B
  • https://huggingface.co/baichuan-inc/baichuan-7B

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/656224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【FreeRTOS】——列表与列表项列表相关API函数(初始化、插入、移除)

目录 前言: 一、列表与列表项 二、列表相关API函数 ①初始化列表vListInitialise() ②初始化列表项vListInitialise() ③列表插入列表项(升序)函数vListInsert() ④列表插入列表项(无序)函数vListInsertEnd() …

开源赋能 普惠未来——回顾全球数字经济大会及开放原子全球开源峰会(Intel专题)

一、峰会背景 2023年6月11日至13日,中国北京迎来了一场全球数字经济大会和开放原子全球开源峰会的盛会。这次大会在北京北人亦创国际会展中心隆重举行,为来自世界各地的数字经济和开源社区的代表们提供了一个共同交流、合作的平台。 本次大会以"开…

GAMES101笔记 Lecture02 线性代数基础

目录 A Swift and Brutal Introduction to Linear AlgebraGarphics Dependencies(图形学的依赖)Basic mathematics(基础的数学)Basic physics(基础的物理)Misc(杂项)And a bit of asethetics(以及一点美学) Vectors(向量)Vector Normalization(向量归一化)Vector Addition(向量…

记录好项目D7

记录好项目 你好呀,这里是我专门记录一下从某些地方收集起来的项目,对项目修改,进行添砖加瓦,变成自己的闪亮项目。修修补补也可以成为毕设哦 本次的项目是个酒店预订管理系统 技术栈:springbootjavamysqlmybatis …

从0到1学会在Linux中部署SpringBoot+Vue前后端分离项目

1.打包Vue前端项目 使用npm run build命令打包前端项目 前端项目会 打包到dist文件夹中 2.打包SpringBoot后端项目 点击生命周期的package命令,对后端项目进行打包 target目录下的renren-fast.jar就是刚刚打包的后端项目 后端打包项目有一个小技巧,就…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)一:项目规划及初始化

一、项目内容 使用vue3+Layui实现通用管理系统前端,使用vue3+layui搭建系统UI界面,使用nodejs搭建模拟web服务器,使用echarts实现系统可视化模块,可以此项目为基础进行扩展开发,快速搭建管理系统,具体内容如下:   1. 常见功能实现: 实现用户登录(用户名密码登录、手…

【c语言】 -- 详解数组篇

📕博主介绍:目前大一正在学习c语言,数据结构,计算机网络。 c语言学习,是为了更好的学习其他的编程语言,C语言是母体语言,是人机交互接近底层的桥梁。 本章来学习数据的存储。 让我们开启c语言学…

XSS测试-业务安全测试实操(11)

XSS测试 测试原理和方法 跨站脚本漏洞是Web应用程序在将数据输出到网页的时候存在问题,导致恶意攻击者可以往Web页面里插入恶意JavaScript、HTML代码,并将构造的恶意数据显示在页面的漏洞中。攻击者一般利用此漏洞窃取或操纵客户会话和 Cookie,用于模仿合法用户,从而使攻击…

CVE-2010-2883-PDF漏洞提权复现过程

第二步,打开Kali Linux渗透机使用命令msfconsole进入Metasploit渗透测试平台,使用模块adobe_cooltype_sing生成木马文件。 输入search adobe_cooltype_sing命令搜索Adobe渗透模块 与漏洞相关的模块有两个,编号为0的模块是使用本地的服务器挂…

项目实战:防刷

你好,我是田哥 最近在搞充电桩项目,用户使用短信验证码形式进行注册和登录,那么问题来了? 分布式微服务项目实战:充电桩项目 实战分布式事务【SeataSpring Cloud】 项目实战:自定义异常和统一参数验证&…

lazarus开发:快速读写excel文件的神奇控件——FPSpreadsheet

目录 1 简介 2 用wps制作一个简单的工资表 3 编译一下自带的演示程序 1 简介 FPSpreadsheet是一个功能强大的控件库,用于读取和写入电子表格文件。使用该控件库开发的软件,能够在不安装电子表格应用程序的情况下,快速读出、写入电子表格文…

详解Hystrix

目录 1.微服务中的容错 1.1.服务雪崩 1.2.解决办法 2.hystrix 2.1.概述 2.2.项目结构及依赖 2.3.代码示例 2.3.1.注册中心 2.3.2.服务调用者 2.3.3.服务提供者 2.4.服务降级 2.4.1.单点响应 2.4.2.默认响应 2.4.3.前置响应 2.5.服务熔断 2.5.1.概述 2.5.2.使用…

【C语言复习】第一篇、关于我的C语言的复习路线

目录 第一部分、前言 第二部分、学习视频 第三部分、我的建议 第一部分、前言 首先想谈一下为啥都读研究生的我还在学习C语言😂,说起来我认为挺搞笑的,一句话解释就是:本科上课的时候,耳朵打苍蝇去,哈哈。…

面向快速反应的工程团队--QRF团队模型

很多团队都纠结于产品业务需求和各种不断插入的中断请求而无法自拔,这篇文章介绍了QRF团队模型,将产品业务开发和紧急响应团队区分开,为重要而紧急的事情提供单独的处理通道,从而帮助团队能够聚焦在重要的事情上。原文&#xff1a…

Nucleo-F411RE (STM32F411)LL库体验 7 - 低功耗(睡眠、待机)

Nucleo-F411RE (STM32F411)LL库体验 7 - 低功耗(睡眠) 1、简述 F411有三种模式 Sleep mode、stop mode 、standby mode。 其中SleepMode 、Stop Mode 可选择WFI 以及WFE,两者的区别在于,前者任何中断都能…

编译原理笔记(哈工大编译原理)

文章目录 前言概论语言与文法基本概念字母表串字母表与串的联系 文法语言推导和规约句型与句子语言与字母表 文法的分类 前言 说实话,我不是很想上这门课,确实没什么大用,虽然我觉得这门课学一学也挺好,但是我觉得弄8个大实验就真…

socket地址的通配符地址、环回地址

今天在写ServerSocket的时候,遇到了socket地址的通配符地址、环回地址。 package com.thb;import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket;public class ServerSocketMain {public static void main(String[] args) {try…

UI Tool Kit 使用

Unity 2021 已经把UIBuilder 内置了,项目组也打算 后续工具采用 toolkit来写,这边也是找了一下教程熟悉了一下。 UI 工具包 - Unity 手册 首先 先创建一个EditorWindow 会生成相应的C#,UXML,USS代码 默认会把显示的MenuItem代码生成&#xf…

记录--设计一个可选择不连续的时间范围的日期选择器

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 npm包:sta-datepicker效果图 需求 普通的时间选择器要么只能单选,要么只能选范围,不可以随意选择若干个时间,同时大多数现成的时间选择器选择结束会收起…