LLM(一)| 百川智能baichuan7B、13B、53B以及baichuan2总结

news2024/12/24 3:49:01

       之前在文章baichuan-53B VS ChatGLM-6B对比中做过百川大模型53B和ChatGLM 6B模型的效果对比,由于百川大模型的内测模型是53B,因此本次对比参数量差异较大,但仍然可以看到两个模型的效果。百川大模型在benchmark上有超越ChatGLM和LLaMA的迹象,尤其是在中文任务上的表现,下面分别对7B、13B和53B模型进行简单总结:

图片

一、baichuan-7B

       2023年6月15日,百川智能发布了baichuan-7B,它基于 Transformer 结构,在大约1.2万亿 tokens 上训练的70亿参数模型,支持中英双语,上下文窗口长度为4096。

项目地址:https://github.com/baichuan-inc/baichuan-7B

预训练模型:https://huggingface.co/baichuan-inc/baichuan-7B

modelscope:https://modelscope.cn/models/baichuan-inc/baichuan-7B/

数据

  • 原始数据包括开源的中英文数据和自行抓取的中文互联网数据,以及部分高质量知识性数据。

  • 参考相关数据工作,频率和质量是数据处理环节重点考虑的两个维度。我们基于启发式规则和质量模型打分,对原始数据集进行篇章和句子粒度的过滤。在全量数据上,利用局部敏感哈希方法,对篇章和句子粒度做滤重。

整体流程如下所示:

图片

  • 经过不断的调整和多轮测试,最终确认了一个在下游任务上表现最好的中英文配比。

  • 我们使用了一个基于自动学习的数据权重策略,对不同类别的数据进行配比。

训练稳定性和吞吐

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

  1. 算子优化技术:采用更高效算子,如 Flash-Attention,NVIDIA apex 的 RMSNorm 等。

  2. 算子切分技术:将部分计算算子进行切分,减小内存峰值。

  3. 混合精度技术:降低在不损失模型精度的情况下加速计算过程。

  4. 训练容灾技术:训练平台和训练框架联合优化,IaaS + PaaS 实现分钟级的故障定位和任务恢复。

  5. 通信优化技术,具体包括:

    1. 采用拓扑感知的集合通信算法,避免网络拥塞问题,提高通信效率。

    2. 根据卡数自适应设置 bucket size,提高带宽利用率。

    3. 根据模型和集群环境,调优通信原语的触发时机,从而将计算和通信重叠。

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

最终的loss如下图:

图片

二、baichuan-13B

     2023年7月11日,百川智能正式发布130亿参数通用大语言模型(Baichuan-13B-Base)。并且官方对此的评价是:性能最强的中英文百亿参数量开源模型。

项目地址:https://github.com/Baichuan-inc/Baichuan-13B

预训练模型:https://huggingface.co/baichuan-inc/Baichuan-13B-Base

对话模型:https://huggingface.co/baichuan-inc/Baichuan-13B-Chat

Model Scope:https://modelscope.cn/models/Baichuan-inc/Baichuan-13B-Chat/summary

Baichuan-13B 有如下几个特点:

  1. 更大尺寸、更多数据:Baichuan-13B 在 Baichuan-7B 的基础上进一步扩大参数量到 130 亿,并且在高质量的语料上训练了 1.4 万亿 tokens,超过 LLaMA-13B 40%,是当前开源 13B 尺寸下训练数据量最多的模型。支持中英双语,使用 ALiBi 位置编码,上下文窗口长度为 4096;

  2. 同时开源预训练和对齐模型:预训练模型是适用开发者的『 基座 』,而广大普通用户对有对话功能的对齐模型具有更强的需求。因此本次开源我们同时发布了对齐模型(Baichuan-13B-Chat),具有很强的对话能力,开箱即用,几行代码即可简单的部署;

  3. 更高效的推理:为了支持更广大用户的使用,同时开源了 int8 和 int4 的量化版本,相对非量化版本在几乎没有效果损失的情况下大大降低了部署的机器资源门槛,可以部署在如 Nvidia 3090 这样的消费级显卡上;

  4. 开源免费可商用:Baichuan-13B 不仅对学术研究完全开放,开发者也仅需邮件申请并获得官方商用许可后,即可以免费商用;

2.1 推理和部署

2.1.1 GPU直接部署

安装环境

pip install -r requirements.txt

方法一: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米,位于喀喇昆仑山脉的中巴边境上

        模型加载指定 device_map='auto',会使用所有可用显卡。如需指定使用的设备,可以使用类似 export CUDA_VISIBLE_DEVICES=0,1(使用了0、1号显卡)的方式控制。

方法二:命令行方式

python cli_demo.py

方法三:web方式

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

streamlit run web_demo.py

2.1.2 量化部署

       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()

量化前后占用显存情况如下:

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

2.1.3 CPU部署

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

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

2.2 微调

        开发者可以对 Baichuan-13B-Base 或 Baichuan-13B-Chat 进行微调使用。团队测试了与 Baichuan-13B 兼容的微调工具 LLaMA Efficient Tuning,并给出全量微调和 LoRA微调的两种示范。

        输入数据为放置在项目data目录下的 json 文件,用--dataset选项指定(参考下面示例),多个输入文件用,分隔。json 文件示例格式和字段说明如下:​​​​​​​

[    {        "instruction": "What are the three primary colors?",        "input": "",        "output": "The three primary colors are red, blue, and yellow."    },    ....]

     json 文件中存储一个列表,列表的每个元素是一个 sample。其中instruction代表用户输入,input是可选项,如果开发者同时指定了instructioninput,会把二者用\n连接起来代表用户输入;output代表期望的模型输出。

2.2.1 全量微调

微调环境:8 * Nvidia A100 80 GB + deepspeed

deepspeed --num_gpus=8 src/train_bash.py \    --stage sft \    --model_name_or_path baichuan-inc/Baichuan-13B-Base \    --do_train \    --dataset alpaca_gpt4_en,alpaca_gpt4_zh \    --finetuning_type full \    --output_dir path_to_your_sft_checkpoint \    --overwrite_cache \    --per_device_train_batch_size 4 \     --per_device_eval_batch_size 4 \     --gradient_accumulation_steps 8 \     --preprocessing_num_workers 16 \    --lr_scheduler_type cosine \    --logging_steps 10 \    --save_steps 100 \    --eval_steps 100 \    --learning_rate 5e-5 \    --max_grad_norm 0.5 \    --num_train_epochs 2.0 \    --dev_ratio 0.01 \    --evaluation_strategy steps \    --load_best_model_at_end \    --plot_loss \    --fp16 \    --deepspeed deepspeed.json

deep_speed.json 配置示例:​​​​​​​

{  "train_micro_batch_size_per_gpu": "auto",  "zero_allow_untested_optimizer": true,  "fp16": {    "enabled": "auto",    "loss_scale": 0,    "initial_scale_power": 16,     "loss_scale_window": 1000,    "hysteresis": 2,    "min_loss_scale": 1  },    "zero_optimization": {    "stage": 2,    "allgather_partitions": true,    "allgather_bucket_size": 5e8,    "overlap_comm": false,    "reduce_scatter": true,    "reduce_bucket_size": 5e8,    "contiguous_gradients" : true  }}

2.2.2 LoRA微调

微调环境:1 * Nvidia A100 80 GB​​​​​​​

CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \    --stage sft \    --model_name_or_path baichuan-inc/Baichuan-13B-Base \    --do_train \    --dataset alpaca_gpt4_en,alpaca_gpt4_zh \    --finetuning_type lora \    --lora_rank 8 \     --lora_target W_pack \    --output_dir path_to_your_sft_checkpoint \    --overwrite_cache \    --per_device_train_batch_size 4 \     --per_device_eval_batch_size 4 \     --gradient_accumulation_steps 8 \     --preprocessing_num_workers 16 \    --lr_scheduler_type cosine \    --logging_steps 10 \    --save_steps 100 \    --eval_steps 100 \    --learning_rate 5e-5 \    --max_grad_norm 0.5 \    --num_train_epochs 2.0 \    --dev_ratio 0.01 \    --evaluation_strategy steps \    --load_best_model_at_end \    --plot_loss \    --fp16

       同样还有其他微调框架可以支持微调baichuan-13B-Base模型,比如Firefly,想了解的读者可以参考文章微调百川Baichuan-13B保姆式教程,手把手教你训练百亿大模型。

三、baichuan-53B

      8 月 8 日,百川智能发布新一代大模型 Baichuan-53B。不同于此前发布的 7B 和 13B 模型,Baichuan-53B 并没有走开源路线。Baichuan-53B 支持中英双语,在知识性上表现优异,相对此前两款模型有更好的表现,擅长知识问答文本创作等领域。

      百川强调了 Baichuan-53B 的三个技术优势:预训练数据搜索增强对齐能力,其中前两者与百川团队中丰富的搜索引擎经验有较强相关性。

预训练数据

      预训练阶段,王小川表示,此前团队做搜索引擎的经验,让百川能够又快又好地完成前期数据积累,这也是百川此前两款开源模型能够迅速推出的原因之一。

「团队背景做了很多年的搜索,所以整个中文互联网里哪里有好的数据,我们团队是最清楚的,怎么把这些数据收集回来,质量做好,识别出来,我们以前有很强的积累和方法论。」百川智能联合创始人、大语言模型技术负责人陈炜鹏说道。

  • 百川希望构建一个全面的世界知识体系,覆盖各个领域和学科的知识,通过整合各类信息源,确保文化、科学、技术等方面广泛的知识覆盖;

  • 目前百川已经建立了一套系统的数据质量体系,包括低质、优质、类别等,确保整个预训练过程中维持高标准的数据质量,以让数据为最终模型训练的目标服务;

  • 为保证数据的多样性并有效处理重复信息,百川设计了一个多粒度的大规模聚类系统。通过使用先进的聚类算法和方法,识别和整合相似或相关的数据,为去重、采样提供支撑;

  • 百川还开发了一种细粒度的自动化匹配算法,自动配比各类任务,例如课程学习。从而实现个性化的模型学习,使预训练数据能够更精确地匹配用户需求;

搜索增强

王小川始终认为,过去 20 年搜索技术的积累是百川在大模型领域的优势。初期,这样的观点在行业里是一种「非共识」。

这次 Baichuan-53B 的开发过程中,百川应用了更多搜索相关的技术,实现模型优化与改进。

  • 动态响应策略,依赖 Prompt,将指令任务细化为 16 个独立类别,覆盖各种用户指令的场景。

  • 智能化搜索词生成,通过对问答样本进行精细化的人工标注,捕捉和理解用户多元化的志林需求。

  • 高质量搜索结果筛选,百川构建了一个搜索结果相关性模型,对从搜索内容和知识库中获取的信息进行相关性频分,从而筛选出高质量的搜索引用内容,减少在知识抽取阶段引入的无关、低质量的信息。

  • 回答结果的搜索增强,RLHF,让 Baichuan 大模型参照搜索结果,针对用户请求生成高价值且具有实时性的回答。

在采访中,陈炜鹏表示,不同于 ChatGPT 和 Bing 用插件将搜索和模型连接的方式,百川希望大模型和搜索引擎在模型层面有更强的交互

「搜索和模型的结合从非常底层的地方就开始了。」王小川总结说。

四、baichuan2

      9 月 6 日下午的发布会上,百川智能宣布正式开源微调后的 Baichuan-2 大模型。

图片

       这是百川自 8 月发布 Baichuan-53B 大模型后的又一次新发布。本次开源的模型包括 Baichuan2-7B、Baichuan2-13B、Baichuan2-13B-Chat 与其 4bit 量化版本,并且均为免费可商用。

       除了模型的全面公开之外,百川智能此次还开源了模型训练的 Check Point,并公开了 Baichuan 2 技术报告,详细介绍了新模型的训练细节。百川智能创始人兼 CEO 王小川表示,希望此举能够帮助大模型学术机构、开发者和企业用户深入了解大模型的训练过程,更好地推动大模型学术研究和社区的技术发展。

  • Baichuan 2 大模型开原链接:https://github.com/baichuan-inc/Baichuan2

  • 技术报告:https://cdn.baichuan-ai.com/paper/Baichuan2-technical-report.pdf

       Baichuan2-13B-Base 相比上一代 13B 模型,数学能力提升 49%,代码能力提升 46%,安全能力提升 37%,逻辑推理能力提升 25%,语义理解能力提升 15%。

图片

图片

参考文献:

[1] https://mp.weixin.qq.com/s/DY0ZyV6-hVS8VN803K8H4w

[2] https://github.com/hiyouga/LLaMA-Efficient-Tuning

[3] https://mp.weixin.qq.com/s/gkom1eKDnXHzYf7JHG_gSQ

[4] https://mp.weixin.qq.com/s/ivMsRkN8RBq1V6sGJNzrnw

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

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

相关文章

《DevOps实践指南》- 读书笔记(六)

DevOps实践指南 Part 4 第二步 :反馈的技术实践17. 将假设驱动的开发和A/B测试融入日常工作17.1 A/B 测试简史17.2 在功能测试中集成 A/B 测试17.3 在发布中集成 A/B 测试17.4 在功能规划中集成 A/B 测试17.5 小结 18. 建立评审和协作流程以提升当前工作的质量18.1 …

内存映射-

内存映射区不会堵塞 父子进程之间通信 /*#include <sys/mman.h>void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);作用&#xff1a;将一个文件或者设备的数据映射到内存中参数&#xff1a;- addr&#xff1a;NULL- length&#xff1…

计算机毕设 flink大数据淘宝用户行为数据实时分析与可视化

文章目录 0 前言1、环境准备1.1 flink 下载相关 jar 包1.2 生成 kafka 数据1.3 开发前的三个小 tip 2、flink-sql 客户端编写运行 sql2.1 创建 kafka 数据源表2.2 指标统计&#xff1a;每小时成交量2.2.1 创建 es 结果表&#xff0c; 存放每小时的成交量2.2.2 执行 sql &#x…

双喜临门 | 开源网安SFuzz在谷歌FuzzBench中夺魁,并获得CWE国际认证

​近日&#xff0c;开源网安模糊测试平台SFuzz于上半年推出的“灰盒代码模糊测试系统”&#xff0c;经过数月的不断调优&#xff0c;在谷歌的FuzzBench基准测试中脱颖而出&#xff0c;荣登榜首。此外&#xff0c;SFuzz还成功获得了CWE国际兼容性认证&#xff0c;进一步巩固了其…

警报:新的 Kubernetes 漏洞可对 Windows 端点实施远程攻击

不久前&#xff0c;研究人员在 Kubernetes 中发现的三个可被利用并相互关联的高危安全漏洞&#xff0c;这些漏洞可在集群内的 Windows 端点上以提升权限的方式实现远程代码执行。 这些漏洞被标记为 CVE-2023-3676、CVE-2023-3893 和 CVE-2023-3955&#xff0c;CVSS 评分为 8.8…

第73步 时间序列建模实战:多步滚动预测 vol-1(以决策树回归为例)

基于WIN10的64位系统演示 一、写在前面 上一期&#xff0c;我们讲了单步滚动预测&#xff0c;一次只预测一个值。 既然有单步&#xff0c;有没有多步呢&#xff1f;那肯定有&#xff0c;这一期来介绍多步滚动预测。 然而&#xff0c;多步滚动模型也可以有不同的步骤&#x…

Mac电脑运行太卡怎么办?

许多小伙伴使用Mac后都反馈电脑不如想象中的流畅&#xff0c;甚至有点卡顿的现象&#xff0c;原因可能是因为无用的应用占据了过多的内存&#xff0c;或者是系统盘垃圾过多&#xff0c;导致的电脑卡顿现象。 今天小编教给大家几招&#xff0c;让自己的Mac能够一键重生&#xf…

创造性地解决冲突

1、冲突的根本原因是矛盾双方存在不可调和的目标冲突。 2、要知己知彼&#xff1a; 知己&#xff1a;就是对自己的问题、需求进行客观定义&#xff0c;说明需求和问题的意义或价值、阐述解决方案和期望效果&#xff1b; 知彼&#xff1a;站在对方立场&#xff0c;深挖对方真…

探索AIGC人工智能(Midjourney篇)(四)

文章目录 Midjourney模特换装 Midjourney制作APP图标 Midjourney网页设计 Midjourney如何生成IP盲盒 Midjourney设计儿童节海报 Midjourney制作商用矢量插画 Midjourney设计徽章 Midjourney图片融合 Midjourney后缀参数 Midjourney模特换装 关键词生成模特照片 中国女性模特的…

虚拟机Ubuntu操作系统常用终端命令(3)(详细解释+详细演示)

本篇概要 本篇讲述了Ubuntu操作系统常用的几个功能&#xff0c;即修改文件权限、修改文件属性、可执行脚本、虚拟机网络、FTP服务器、SSH服务器、VIM等方面的知识。希望能够得到大家的支持。 文章目录 本篇概要1.修改文件权限2.修改文件属主3.可执行脚本3.1要点与细节3.2shell…

河北吉力宝打造步力宝智能康养鞋,助力健康中国行

据国家统计局数据&#xff0c;2022年我国总人口减少85万人&#xff0c;正式迈入人口负增长时代。人口老龄化程度的进一步加深令劳动力愈加不足&#xff0c;加之“421”的家庭结构&#xff0c;仅依靠政府性养老事业已难以支撑。 当老年群体对品质消费越来越看重时&#xff0c;康…

9万多条执业医师资格考试题库ACCESS数据库

《9万多条执业医师资格考试题库ACCESS数据库》搜集了大量执业医师资格考试试题&#xff0c;包括临床执业医师资格考试试题、口腔执业医师资格考试试题、中医执业医师资格考试试题、中西医结合执业医师资格考试试题、公卫执业医师资格考试试题等。 分类情况包含&#xff1a;临床…

MT4深受投资者喜欢,anzo capital昂首资本认为这几个特点必不可少

MT4为什么深受投资者喜欢&#xff0c;anzo capital昂首资本总结这几个特点&#xff0c;一起分享给各位投资者。 一.专业性 MT4平台是专门为外汇投资交易而设计的。投资者可以在指数、股票、债券、商品和各种货币上交易货币和差价合约。 二.兼容性 MT4不仅可用于32位操作系统…

对于每种情况分别统计概率来计算期望+树上连通块统计:ARC165E

https://atcoder.jp/contests/arc165/tasks/arc165_e 考虑一个常见套路&#xff0c;我们对每个连通块统计其概率&#xff0c;设为 p ( T ) p(T) p(T)&#xff0c;则答案为 ∑ ∣ T ∣ > k p ( T ) \sum_{|T|>k} p(T) ∣T∣>k∑​p(T) 可以想成对于每个大小大于 k …

RockyLinux安装MariaDB

文章目录 1 前言2 参考3 开始安装3.1 运行官方脚本 添加 MariaDB 的源3.2 安装 MariaDB Server3.3 启动 MariaDB 4 SSH 登录 MariaDB4.1 ssh 上使用 root 账号登录4.2 新建管理员账号并授权 5 放行端口 33065.1 VirtualBox 上设置端口转发5.2 Rocky Linux 防火墙放行 3306 端口…

nacos服务端--切换数据源

nacos服务端版本&#xff1a;2.3.0-SNAPSHOT 在nacos的服务端&#xff0c;需改application.properties文件 #*************** Config Module Related Configurations ***************# ### Deprecated configuration property, it is recommended to use spring.sql.init.platf…

BK698CPA15B0 创建了通用电气数字工业发展指数

BK698CPA15B0 创建了通用电气数字工业发展指数 基于调查研究&#xff0c;通用电气创建了通用电气数字工业发展指数&#xff0c;以跟踪数字化转型的实际进展——从对IIoT的展望到准备好转型。该创始指数在100分制中的总得分为63&#xff0c;表明尽管工业互联网的前景非常强劲&a…

3.2-3.4 Qt样式表使用补充说明

本期内容 3.2 设置样式的几种方式—— 3.2.1 不同方式使用介绍—— 3.2.2 不同方式的优缺点3.3 样式表使用过程中产生的冲突-分析及解决3.4 各控件中常用样式讲解及说明3.2 设置样式的几种方式 我们通常在使用Qt开发的过程中都会使用样式表来美化我们的界面,关于如何使用样式…

input修改checkbox复选框默认选中样式

问题描述&#xff1a; <input type"checkbox" /> input修改checkbox默认选中样式&#xff0c;直接设置选中后的样式不生效&#xff0c;需要先给复选框设置-webkit-appearance: none&#xff08;取消默认样式&#xff09;&#xff0c; 再设置样式才会生效。 …

Vue中的路由懒加载:提高性能和用户体验

Vue中的路由懒加载&#xff1a;提高性能和用户体验 在现代Web应用程序中&#xff0c;性能和用户体验是至关重要的。为了加速页面加载速度和提高用户感知的响应性&#xff0c;Vue提供了一种路由懒加载的方法。本文将详细介绍Vue中如何进行路由懒加载&#xff0c;并提供代码示例…