LLMs之Baichuan:Baichuan-13B模型的简介(包括Baichuan-7B)、安装、使用方法之详细攻略

news2024/11/22 11:46:25

LLMs之Baichuan:Baichuan-13B模型的简介(包括Baichuan-7B)、安装、使用方法之详细攻略

导读:2023年6月15日,百川智能(搜狗创始人王小川创建)发布了首个大模型成果Baichuan-7B,开源可商用,它在C-Eval、AGIEval和Gaokao中文权威评测榜单上,以显著优势全面超过了ChatGLM-6B等其他大模型,并且在MMLU英文权威评测榜单上,也领先LLaMA-7B很多。
要来就来大的,要玩就玩真的,人狠话不多,就在7月11日,百川智能发布包含有预训练 (Baichuan-13B-Base) 和对齐 (Baichuan-13B-Chat) 两个版本。
分析Baichuan-13B 的技术:Baichuan-13B 整体模型基于标准的 Transformer 结构,并在高质量的语料上(词表为64K)训练了 1.4 万亿 tokens,上下文窗口长度为 4096。Baichuan-13B 采样ALiBi 线性偏置技术提高了推理性能,但是早先的Baichuan-7B采样的是RoPE。它还支持 int8 和 int4 量化,其中int4仅需9.7 GPU显存,当然,也支持CPU推理但需要 60GB 内存。
分析Baichuan-7B的技术:位置编码采用rotary-embedding,激活函数采用SwiGLU,基于RMSNorm 的 Pre-Normalization,并采用 DeepSpeed 框架进行训练,工程上采用了包括算子优化、算子切分、混合精度、训练容灾、通信优化的五大技术增速提效。
>> 算子优化技术:采用更高效算子,如 Flash-attention,NVIDIA apex 的 RMSNorm 等。
>> 算子切分技术:将部分计算算子进行切分,减小内存峰值。
>> 混合精度技术:降低在不损失模型精度的情况下加速计算过程。
>> 训练容灾技术:训练平台和训练框架联合优化,IaaS + PaaS 实现分钟级的故障定位和任务恢复。
>> 通信优化技
术,具体包括:采用拓扑感知的集合通信算法,避免网络拥塞问题,提高通信效率;根据卡数自适应设置 bucket size,提高带宽利用率;根据模型和集群环境,调优通信原语的触发时机,从而将计算和通信重叠。

---------------------------------------------------------------------------------
近一段时间,不论是从外部公开发布,还是与内部各位业界大佬在线上探讨或者私下交流时,博主深深地感觉到,太卷了,大模型领域是贼卷啊,周围的业界人士,都在把玩各种tricks,博主本人是深深的感受到了……国内AI公司,不出来弄个开源模型,总感觉自己啥都不是啊……

路人甲:啥?你是搞AIGC的?别先说话,你先告诉我你是几B的?有多少亿的token?你是哪个style?用的是SwiGLU吧,RoPE吧,还有个Flash Attention,加点AMP,给个4-bit,你说!你到底有没有用Fast?ComOpt呢?有木有AimOpt?哎,你倒是,你说话呀?

目录

Baichuan-13B模型的简介

1、测试结果——Benchmark结果

C-Eval

MMLU

CMMLU

2、模型细节

Baichuan-13B模型的安装

Baichuan-13B模型的使用方法

1、推理和部署

T1、Python代码方式 

T2、命令行工具方式

T3、网页 demo 方式

2、推理性能

3、量化部署

4、CPU 部署


Baichuan-13B模型的简介

         Baichuan-13B 是由百川智能继 Baichuan-7B 之后开发的包含 130 亿参数的开源可商用的大规模语言模型,在权威的中文和英文 benchmark 上均取得同尺寸最好的效果。本次发布包含有预训练 (Baichuan-13B-Base) 和对齐 (Baichuan-13B-Chat) 两个版本。Baichuan-13B 有如下几个特点:

  • 更大尺寸、更多数据:Baichuan-13B 在 Baichuan-7B 的基础上进一步扩大参数量到 130 亿,并且在高质量的语料上训练了 1.4 万亿 tokens,超过 LLaMA-13B 40%,是当前开源 13B 尺寸下训练数据量最多的模型。支持中英双语,使用 ALiBi 位置编码,上下文窗口长度为 4096
  • 同时开源预训练和对齐模型:预训练模型是适用开发者的『 基座 』,而广大普通用户对有对话功能的对齐模型具有更强的需求。因此本次开源我们同时发布了对齐模型(Baichuan-13B-Chat),具有很强的对话能力,开箱即用,几行代码即可简单的部署。
  • 更高效的推理:为了支持更广大用户的使用,我们本次同时开源了 int8 和 int4 的量化版本,相对非量化版本在几乎没有效果损失的情况下大大降低了部署的机器资源门槛,可以部署在如 Nvidia 3090 这样的消费级显卡上。
  • 开源免费可商用:Baichuan-13B 不仅对学术研究完全开放,开发者也仅需邮件申请并获得官方商用许可后,即可以免费商用。

GitHub地址:https://github.com/baichuan-inc/Baichuan-13B

1、测试结果——Benchmark结果

我们在各个权威大语言模型的中英文 benchmark 上进行了5-shot评测。结果如下:

C-Eval

Model 5-shotSTEMSocial SciencesHumanitiesOthersAverage
Baichuan-7B38.252.046.239.342.8
Chinese-Alpaca-Plus-13B35.245.640.038.238.8
Vicuna-13B30.538.232.532.532.8
Chinese-LLaMA-Plus-13B30.338.032.929.132.1
Ziya-LLaMA-13B-Pretrain27.634.432.028.630.0
LLaMA-13B27.033.627.727.628.5
moss-moon-003-base (16B)27.029.127.226.927.4
Baichuan-13B-Base45.963.557.249.352.4
Baichuan-13B-Chat43.764.656.249.251.5

MMLU

Model 5-shotSTEMSocial SciencesHumanitiesOthersAverage
Vicuna-13B40.460.549.558.452.0
LLaMA-13B36.153.044.052.846.3
Chinese-Alpaca-Plus-13B36.948.940.550.543.9
Ziya-LLaMA-13B-Pretrain35.647.640.149.442.9
Baichuan-7B35.648.938.448.142.3
Chinese-LLaMA-Plus-13B33.142.837.044.639.2
moss-moon-003-base (16B)22.422.824.224.423.6
Baichuan-13B-Base41.660.947.458.551.6
Baichuan-13B-Chat40.960.948.859.052.1

说明:我们采用了 MMLU 官方的评测方案。

CMMLU

Model 5-shotSTEMHumanitiesSocial SciencesOthersChina SpecificAverage
Baichuan-7B34.447.547.646.644.344.0
Vicuna-13B31.836.237.639.534.336.3
Chinese-Alpaca-Plus-13B29.833.433.237.932.133.4
Chinese-LLaMA-Plus-13B28.133.135.435.133.533.0
Ziya-LLaMA-13B-Pretrain29.030.733.834.431.932.1
LLaMA-13B29.230.831.633.030.531.2
moss-moon-003-base (16B)27.230.428.832.628.729.6
Baichuan-13B-Base41.761.159.859.056.455.3
Baichuan-13B-Chat42.862.659.759.056.155.8

说明:CMMLU 是一个综合性的中文评估基准,专门用于评估语言模型在中文语境下的知识和推理能力。我们采用了其官方的评测方案。

2、模型细节

模型名称隐藏层维度层数注意力头数词表大小总参数量训练数据(tokens)位置编码最大长度
Baichuan-7B4,096323264,0007,000,559,6161.2 万亿RoPE4,096
Baichuan-13B5,120404064,00013,264,901,1201.4 万亿ALiBi4,096

Baichuan-13B模型的安装

baichuan-inc/Baichuan-13B-Base下载

https://huggingface.co/baichuan-inc/Baichuan-13B-Base

baichuan-inc/Baichuan-13B-Chat下载

baichuan-inc/Baichuan-13B-Chat · Hugging Face

Baichuan-13B模型的使用方法

1、推理和部署

         推理所需的模型权重、源码、配置已发布在 Hugging Face:Baichuan-13B-Base 和 Baichuan-13B-Chat。下面以 Baichuan-13B-Chat 为例示范多种推理方式。程序会自动从 Hugging Face 下载所需资源。

推理前请安装依赖:

pip install -r requirements.txt

T1、Python代码方式 

>>> import torch
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> from transformers.generation.utils import GenerationConfig
>>> tokenizer = AutoTokenizer.from_pretrained("baichuan-inc/Baichuan-13B-Chat", use_fast=False, trust_remote_code=True)
>>> model = AutoModelForCausalLM.from_pretrained("baichuan-inc/Baichuan-13B-Chat", device_map="auto", torch_dtype=torch.float16, trust_remote_code=True)
>>> model.generation_config = GenerationConfig.from_pretrained("baichuan-inc/Baichuan-13B-Chat")
>>> messages = []
>>> messages.append({"role": "user", "content": "世界上第二高的山峰是哪座"})
>>> response = model.chat(tokenizer, messages)
>>> print(response)
乔戈里峰。世界第二高峰———乔戈里峰西方登山者称其为k2峰,海拔高度是8611米,位于喀喇昆仑山脉的中巴边境上

T2、命令行工具方式

python cli_demo.py

最后输出示例如下:

T3、网页 demo 方式

依靠streamlit运行以下命令,会在本地启动一个 web 服务,把控制台给出的地址放入浏览器即可访问。

streamlit run web_demo.py

效果如下:

2、推理性能

Baichuan-13B 使用了 ALiBi 线性偏置技术,相对于 Rotary Embedding 计算量更小,对推理性能有显著提升;与标准的 LLaMA-13B 相比,平均推理速度 (tokens/s) 实测提升 31.6%:

Modeltokens/s
LLaMA-13B19.4
Baichuan-13B25.4

测试环境和参数:GPU A100-SXM4-80G, PyTorch 2.0.0+cu117, transformers 4.29.1, batch size = 1, 生成长度 = 2048, 精度 fp16, 基于 Baichuan-13B-Base

3、量化部署

Baichuan-13B 支持 int8 和 int4 量化,用户只需在推理代码中简单修改两行即可实现。请注意,如果是为了节省显存而进行量化,应加载原始精度模型到 CPU 后再开始量化;避免在from_pretrained时添加device_map='auto'或者其它会导致把原始精度模型直接加载到 GPU 的行为的参数。

如需使用 int8 量化:

model = AutoModelForCausalLM.from_pretrained("baichuan-inc/Baichuan-13B-Chat", torch_dtype=torch.float16, trust_remote_code=True)
model = model.quantize(8).cuda() 

同样的,如需使用 int4 量化:

model = AutoModelForCausalLM.from_pretrained("baichuan-inc/Baichuan-13B-Chat", torch_dtype=torch.float16, trust_remote_code=True)
model = model.quantize(4).cuda()
另外,如果你不想调用 quantize 在线量化,我们有量化好的 int8 Chat 模型可供使用:Baichuan-13B-Chat-int8:
model = AutoModelForCausalLM.from_pretrained("baichuan-inc/Baichuan-13B-Chat-int8", torch_dtype=torch.float16, trust_remote_code=True).cuda()
量化前后占用显存情况如下:
PrecisionGPU Mem (GB)
bf16 / fp1626.0
int815.8
int49.7

量化后在各个 benchmark 上的结果和原始版本对比如下:

Model 5-shotC-EvalMMLUCMMLU
Baichuan-13B-Base52.451.655.3
Baichuan-13B-Base-int851.249.954.5
Baichuan-13B-Base-int447.646.051.0

4、CPU 部署

Baichuan-13B 支持 CPU 推理,但需要强调的是,CPU 的推理速度相对较慢。需按如下方式修改模型加载的方式:

model = AutoModelForCausalLM.from_pretrained("baichuan-inc/Baichuan-13B-Chat", torch_dtype=torch.float32, trust_remote_code=True)

使用CPU进行推理大概需要 60GB 内存。

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

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

相关文章

java通过url获取视频时长(无需下载文件)

1、导入架包 <!-- jave 核心依赖 --><dependency><groupId>ws.schild</groupId><artifactId>jave-core</artifactId><version>2.4.6</version></dependency><!-- 根据不同操作系统引入不同FFmpeg包 --><!-- wi…

KEIL安装额外版本的arm compiler v6.16 v5.06update7

很多时候安装了一个版本的keil&#xff0c;但是别人的工程是拿另一个版本做的&#xff0c;重新安装也不是不行&#xff0c;但是会占很多地方&#xff0c;文件关联也很乱套&#xff0c;所以记录一下怎么安装额外的&#xff0c;比如我的是keil mdk530&#xff0c;自带Compiler v6…

Linux 离线安装软件

这里写目录标题 0.注意1.防火墙操作2.安装jdk1.上传jdk安装包2.安装3.配置环境变量 3.安装redis1.上传tar包2.安装命令3.项目连接时报错4.问题一保存信息解决 4.安装rabbitMq1.查看erlang与mq对应版本2.下载软件2.1下载erlang2.2下载rabbitMq 3.将文件拖放到linux4.安装5.开放端…

loki技巧 - 结构化log日志文本

将非结构化的log日志信息结构化为JSON格式&#xff0c;以方便在Grafana界面侧的浏览和查询。 0. 目录 1. 需求背景和描述2. 实现&#xff08;Promtail侧&#xff09;3. 注意事项4. 参考 1. 需求背景和描述 最近几个月&#xff0c;部门内部开始尝试统一日志收集、查询统计相关的…

没有广告的浏览器(AdBlock)

AdBlock是一个广告拦截器&#xff0c;可以帮你拦截所有浏览网站上的广告。 安装&#xff1a; 有梯子 1、官网 https://getadblock.com/zh_CN/ 2、点击【以及获得Adblock】跳转浏览器->扩展程序->插件详情页&#xff0c;目前支持 Chrome Firefox Edge Safari 浏览器&am…

KaiwuDB CTO 魏可伟:多模架构 —“化繁为简”加速器

以下为浪潮 KaiwuDB CTO 魏可伟受邀于7月4日在京举行的可信数据库发展大会发表演讲的实录&#xff0c;欢迎大家点赞、收藏、关注&#xff01; 打造多模引擎&#xff0c;AIoT数据库探索之路 01 何为“繁”&#xff1f; 工业 4.0 时代&#xff0c; 物联网产业驱动数据要素市场不…

H3C-Cloud Lab实验-PPP实验

实验拓扑图&#xff1a; 实验需求&#xff1a; 1. R1 和 R2 使用 PPP 链路直连&#xff0c;R2 和 R3 把 2 条 PPP 链路捆绑为 PPP MP 直连 2. 按照图示配置 IP 地址 3. R2 对 R1 的 PPP 进行单向 chap 验证 4. R2 和 R3 的 PPP 进行双向 chap 验证 实验步骤&#xff1a; …

SkipList

文章目录 SkipList理解跳表从单链表说起查找的时间复杂度空间复杂度插入数据更高效的方式维护索引代码实现索引的抽取概率算法 举例插入元素 删除数据总结为什么Redis选择使用跳表而不是红黑树来实现有序集合 SkipList 理解跳表从单链表说起 在原始单链表中查找元素&#xff…

C# Linq 详解三

目录 概述 十三、Sum / Min / Max / Average 十四、Distinct 十五、Concat 十六、Join 十七、ToList 十八、ToArray 十九、ToDictionary C# Linq 详解一 1.Where 2.Select 3.GroupBy 4.First / FirstOrDefault 5.Last / LastOrDefault C# Linq 详解二 1.OrderBy 2.O…

HOT64-搜索二维矩阵

leetcode原题链接&#xff1a;搜索二维矩阵 题目描述 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回…

Leetcode每日一题:979. 在二叉树中分配硬币(2023.7.14 C++)

目录 979. 在二叉树中分配硬币 题目描述&#xff1a; 实现代码与解析&#xff1a; dfs&#xff08;后序遍历&#xff09; 原理思路&#xff1a; 979. 在二叉树中分配硬币 题目描述&#xff1a; 给定一个有 N 个结点的二叉树的根结点 root&#xff0c;树中的每个结点上都对…

宋浩高等数学笔记(一)函数与极限

b站宋浩老师的高等数学网课&#xff0c;全套笔记已记完&#xff0c;不定期复习并发布更新。 章节顺序与同济大学第七版教材所一致。

C++虚函数学习

VC6新建一个单文档工程&#xff1b; 添加一个一般类&#xff1b; 生成的Shape.cpp保持不变&#xff1b; #include "Shape.h"#ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]__FILE__; #define new DEBUG_NEW #endif// // Construction/Destruction //Shap…

Unity平台如何实现RTSP转RTMP推送?

技术背景 Unity平台下&#xff0c;RTSP、RTMP播放和RTMP推送&#xff0c;甚至包括轻量级RTSP服务这块都不再赘述&#xff0c;今天探讨的一位开发者提到的问题&#xff0c;如果在Unity下&#xff0c;实现RTSP播放的同时&#xff0c;随时转RTMP推送出去&#xff1f; RTSP转RTMP…

使用Google Chrome浏览器打开Vue项目报错“Uncaught runtime errors”——已解决

使用Google Chrome浏览器打开Vue项目报错&#xff1a; Uncaught runtime errors:ERROR Identifier originalPrompt has already been declared SyntaxError: Identifier originalPrompt has already been declared问题原因&#xff1a; Google Chrome浏览器安装了插件跟Vue项…

2023年最新水果编曲软件FLStudio21.0.3.3517中文直装完整至尊解版下载

2023年最新水果编曲软件FLStudio21.0.3.3517中文直装完整至尊解版下载 是最好的音乐开发和制作软件也称为水果循环。它是最受欢迎的工作室&#xff0c;因为它包含了一个主要的听觉工作场所。 最新fl studio 21有不同的功能&#xff0c;如它包含图形和音乐音序器&#xff0c;帮助…

Nginx Linux设置开机自启动

使用如下命令 vi /lib/systemd/system/nginx.service 创建并编辑文件将以下代码黏贴至此文件中 [Unit] Descriptionnginx Afternetwork.target[Service] Typeforking TimeoutSec0 #防止启动超时 Userroot Grouproot criptionnacos Afternetwork.target[Service] Typeforking T…

哈希的应用(1)——位图

计算机存储单位的常用知识 2^30大约等于10亿 1byte8bit--一个字节等于八个比特位 左移操作符<<表示将值从底地址到高地址的方向移动。 bitset<-1>&#xff0c;开了2^32个bit512MB1GB 位图概念 面试题 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符…

Kerberos协议详解

0x01 kerberos协议的角色组成 Kerberos协议中存在三个角色&#xff1a; 客户端(Client)&#xff1a;发送请求的一方 服务端(Server)&#xff1a;接收请求的一方 密钥分发中心(Key distribution KDC) 密钥分发中心分为两个部分&#xff1a; AS(Authentication Server)&…

Linux下JDK版本与安装版本不一致问题

目录 一. &#x1f981; 前言二. &#x1f981; 操作流程三. &#x1f981; 总结四. &#x1f981; Happy Ending 一. &#x1f981; 前言 最近重新安装了centos7.9,针对以前遇到的Java版本不一致的情况, 提出了另一种方法,该方法简单易行,容易理解。 二. &#x1f981; 操作…