大模型之十二十-中英双语开源大语言模型选型

从ChatGPT火爆出圈到现在纷纷开源的大语言模型,众多出入门的学习者以及跃跃欲试的公司不得不面临的是开源大语言模型的选型问题。
基于开源商业许可的开源大语言模型可以极大的节省成本和加速业务迭代。
当前(2023年11月17日)开源的大语言模型如下:

模型所属公司发布时间开放模型许可词表大小语料Huggingface下载量模型结构位置编码激活函数隐变量维度dimension自注意力头的个数n heads层数n layers输入序列长度sequence length训练时长
LLaMA-2Meta2023年8月7B 13B 70B允许商用,月活超7亿需向Meta申请许可320002.0T70B-chat下载量1.69M,变种还有若干Casual decoderRoPESwiGLUPre RMS Norm7B 4096, 13B 5120, 70B 81927B 32, 13B 40, 70B 647B 32, 13B 40, 70B 804096A100 7B 184320, 13B 368640, 70B 1720320
baichuan-2百川智能2023年9月6日7B 13B base/chat代码Apache 2.0,模型非商用1256962.6T1-7B 95.5k,2-13B 40.8k, 2-7B 20.5kPrefix decoderRoPEGeGLUPost Deep Norm7B 4096, 13B 51207B 32, 13B 407B 32, 13B 404096
ChatGLM3智普2023年10月6B填问卷登记后允许免费商业使用650241.5T左右中英8kCasual decoderRoPESwiGLUPost Deep Norm409632288192
千问阿里2023年8月7B 14B允许商用,超过1亿用户机构需申请1519367B 2.4T,14B 3.0T25kCasual decoderRoPESwiGLUPre Layer Norm409632328192
BloomBigScience2022年7月560M 1.1B 1.7B 3B 7.1B允许商用250880366B125MCasual decoderALiBiGeLUPre Layer Norm409632302048
  1. LLaMA-2的词表是32k,在中英文上的平均token数最多,对中英文分词比较碎,比较细粒度。尤其在中文上平均token数高达1.45,这意味着大概率会将中文字符切分为2个以上的token。
  2. ChatGLM3-6B是平衡中英文分词效果最好的tokenizer。由于词表比较大,中文处理时间也有增加。
  3. BLOOM虽然是词表最大的,但由于是多语种的,在中英文上分词效率与ChatGLM-6B基本相当。

还有很多其他的开源中英大语言模型,但基本都有Llama的影子,有些是直接扩充Lllama的词汇再用新的数据集重新训练,这些大语言模型包括Chinese-LLaMA-Alpaca-2、OpenChineseLLaMA、Panda、Robin (罗宾)、Fengshenbang-LM等,这里就不一一列出了。

和信息大爆炸一样,模型也是呈现大爆炸的态势,如何选择一个合适自己/公司业务场景的基座大模型就显得十分重要,模型选择的好,至于训练方法和一些训练技巧以及超参设置都不那么重要,相对而言数据工程确是相对重要的。一个模型的选择需要结合自身的目的和资源决定。

从模型到落地,涉及到方方面面的东西,相对而言模型公司也注意到了,所以开源模型也会附带一些Agent等支持。选择模型第一要考虑的是license问题,如果是学习目的,那么几乎所有开源的大语言模型都可以选择,结合算力和内存资源选择合适参数量的模型即可,如果是蹭免费GPU的,建议选择7B及以下的模型参数。

如果是商用目的的建议选择70B及以上的模型,个别很窄的垂直领域也可以考虑30B左右的,甚至是7B的参数,如果是端上智能,考虑7B参数量。

10B以内的中英模型,建议选择chatglm3-6B(生态工具支持也挺好,性能在10B里中英文很不错,上下文长度基座有8k,长上下文大32k)以及llama-2的变种(LlaMA-2生态很好,工具很多)模型。算力有限的学生建议选择Bloom 1.1B模型。

chatglm和LlaMA-2在模型有些差异,关于mask和norm的差异性区别如下。

transformer中的mask机制:

mask机制是用于Transformer模型self-attention机制中的技术,用以控制不同token之间的注意力交互。有两种类型的mask:padding mask和sequence mask。

  • Padding mask(填充掩码):在自注意力机制中,句子中的所有单词都会参与计算。但是,在实际的句子中,往往会存在填充符,用来填充句子长度不够的情况。Padding mask就是将这些填充符对应的位置标记为0,以便在计算中将这些位置的单词忽略掉。
  • Sequence mask(序列掩码):sequence mask用于在Decoder端的self-attention中,以保证在生成序列时不会将未来的信息泄露给当前位置的单词。

Norm层

在这里插入图片描述

  • post layer norm。在原始的transformer中,layer normalization是放在残差连接之后的,称为post LN。使用Post LN的深层transformer模型容易出现训练不稳定的问题。post LN随着transformer层数的加深,梯度范数逐渐增大,导致了训练的不稳定性。

  • pre layer norm。将layer norm放在残差连接的过程中,self-attention或FFN块之前,称为“Pre LN”。Pre layer norm在每个transformer层的梯度范数近似相等,有利于提升训练稳定性,但缺点是pre LN可能会轻微影响transformer模型的性能,为了提升训练稳定性,GPT3、PaLM、BLOOM、OPT等大语言模型都采用了pre layer norm。

    • LayerNorm:LayerNorm对每一层的所有激活函数进行标准化,使用它们的均值和方差来重新定位和调整激活函数。其公式如下:
      x − μ σ ⋅ γ β , μ = 1 d ∑ i = 1 d x i , σ = 1 d ∑ i = 1 d ( x i − μ ) 2 \frac{\mathbf x -\mu}{\sqrt{\sigma}} \cdot \gamma \beta, \mu=\frac{1}{d} \sum_{i=1}^dx_i, \sigma=\sqrt{\frac{1}{d}\sum_{i=1}^{d}(x_i-\mu)^2} σ xμγβ,μ=d1i=1dxi,σ=d1i=1d(xiμ)2
      • RMSNorm:RMSNorm通过仅使用激活函数的均方根来重新调整激活,从而提高了训练速度。

    x R M S ( x ) ⋅ γ , R M S ( x ) = 1 d ∑ i = 1 d x i 2 \frac{\mathbf x}{RMS(\mathbf x)} \cdot \gamma, RMS(\mathbf x)=\sqrt{\frac{1}{d}\sum_{i=1}^dx_i^2} RMS(x)xγ,RMS(x)=d1i=1dxi2

    • DeepNorm:为了进一步稳定深度Transformer的训练,Microsoft推出了DeepNorm。这是一个创新的方法,它不仅用作标准化,还作为残差连接。有了DeepNorm的帮助,我们现在可以轻松训练高达1000层的Transformer模型,同时保持稳定性和高性能。其中,GLM-130B和ChatGLM就是采用了这种技术的代表。其公式如下:其中SublayerSublayer是FFN或Self-Attention模块。
      L a y e r N o r m ( α ⋅ x + S u b l a y e r ( x ) ) LayerNorm(\alpha\cdot \mathbf x+Sublayer(\mathbf x)) LayerNorm(αx+Sublayer(x))

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3+webpack+elementplus+国际化+axios封装+pinia

文章目录 创建项目 eslint prettier切换pinia(后补上)创建项目eslint prettier注意 自动格式化 element plus注意 element plus icon注意: 国际化注意 axios 封装 最近菜鸟自己搭建一个项目,想着 vue3 都出来这么久了&#xff…

HarmonyOS开发Java与ArkTS如何抉择

在“鸿蒙系统实战短视频App 从0到1掌握HarmonyOS”视频课程中,很多学员来问我,在HarmonyOS开发过程中,面对Java与ArkTS,应该选哪样? 本文详细分析Java与ArkTS在HarmonyOS开发过程的区别,力求解答学员的一些…

<MySQL> 什么是JDBC?如何使用JDBC进行编程?

目录 一、JDBC是什么? 二、JDBC常用接口和类 2.1 DataSource 2.2 Connection 2.3 Statement 2.4 ResultSet 三、JDBC的使用 3.1 获得数据库驱动包 3.2 添加到项目依赖 3.3 描述数据库服务器 3.4 建立数据库连接 3.6 执行SQL语句和接收返回数据 3.7 释放…

搭建内部知识库,解决企业内部琐碎信息问题

企业内部面临着大量琐碎的信息,这些信息可能分散在各个部门、员工之间,导致查找和共享变得困难。这种情况下,搭建一个内部知识库可以解决这一问题。通过内部知识库,企业可以将琐碎的信息整理、分类,并提供一个集中存储…

python之使用深度学习创建自己的表情符号

目录 部署项目1、首先运行train.py训练模型2、接下运行gui.py测试 一、使用 CNN 进行面部情绪识别二、GUI 代码和表情符号映射 在这个深度学习项目中,我们将对人类面部表情进行分类,以过滤和映射相应的表情符号或头像。 数据集(面部表情识别&…

【ARM Trace32(劳特巴赫) 使用介绍 5 -- Trace32 scan dump 详细介绍】

文章目录 1.1 JTAG 测试逻辑架构1.2 D型扫描触发器1.2.1 全扫描介绍1.3 IR 寄存器1.4 TDR(Test data registers)1.4.1 TDR 的实现1.4.1.1 Bypass Register1.4.1.2 Boundary-scan register1.5 Scan Dump1.5.1 soft fusion1.1 JTAG 测试逻辑架构 图 1-1 片上测试逻辑概念图 如前面…

基于STM32的多组外部中断(EXTI)的优化策略与应用

在某些嵌入式应用中,可能需要同时处理多个外部中断事件。STM32系列微控制器提供了多组外部中断线(EXTI Line),可以同时配置和使用多个GPIO引脚作为外部中断触发器。为了有效管理和处理多组外部中断,我们可以采取一些优…

(带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程

源码简介: 1、会员管理: 该系统分为三个级别的会员流程:总站管理员、代理与会员(会员有普通会员、中级会员和高级会员三个等级)。总站管理员可以添加代理用户并为其充值余额,代理用户可以为普通用户充值余…

zookeperkafka学习

1、why kafka 优点 缺点kafka 吞吐量高,对批处理和异步处理做了大量的设计,因此Kafka可以得到非常高的性能。延迟也会高,不适合电商场景。RabbitMQ 如果有大量消息堆积在队列中,性能会急剧下降每秒处理几万到几十万的消息。如果…

若依框架数据源切换为pg库

一 切换数据源 在ruoyi-admin项目里引入pg数据库驱动 <dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.2.18</version> </dependency>修改配置文件里的数据源为pg spring:d…

交通 | 神奇动物在哪里?Operations Research经典文章

论文作者&#xff1a;Robert G. Haight, Charles S. Revelle, Stephanie A. Snyder​ 论文原文&#xff1a;Robert G. Haight, Charles S. Revelle, Stephanie A. Snyder, (2000) An Integer Optimization Approach to a Probabilistic Reserve Site Selection Problem. Operat…

解决java在idea运行正常,但是打成jar包后中文乱码问题

目录 比如&#xff1a; 打包命令使用utf-8编码&#xff1a; 1.当在idea中编写的程序,运行一切正常.但是当被打成jar包时,执行的程序会中文乱码.产生问题的原因和解决方案是什么呢? 一.问题分析 分别使用idea和jar包形式打印出System中所有的jvm参数---代码如下: public static…

H5ke11--1登录界面一直保存--用本地localStorage存储

目录 代码详解 localStage优点 :一直保存着 注意事项: storage属性们 代码详解 ke8学校陈老师H5-CSDN博客文章浏览阅读76次。实现H5中新增的三个元素&#xff1a;forEach的使用方法。https://blog.csdn.net/m0_72735063/article/details/134019012即此之后 当然可以分为按…

快速入门:构建您的第一个 .NET Aspire 应用程序

##前言 云原生应用程序通常需要连接到各种服务&#xff0c;例如数据库、存储和缓存解决方案、消息传递提供商或其他 Web 服务。.NET Aspire 旨在简化这些类型服务之间的连接和配置。在本快速入门中&#xff0c;您将了解如何创建 .NET Aspire Starter 应用程序模板解决方案。 …

Postman接收列表、数组参数@RequestParam List<String> ids

示例如下: 接口定义如下: GetMapping(value "/queryNewMoviePath")public List<Map<String, Object>> queryNewMoviePath(RequestParam List<String> ids ) {return service.queryNewMoviePath(ids);}postman中测试如下&#xff1a; http://loc…

MFA多因子认证

什么是多因子认证&#xff08;MFA&#xff09;&#xff1f;为什么需要MFA&#xff1f; 同义词 多因子认证或者多因素验证 [尤其是需要做等级保护测评的时候需要用到] 摘要 多因子认证MFA&#xff08;Multi Factor Authentication&#xff09;是一种安全认证过程&#xff0c;需…

k8s-部署Redis-cluster(TLS)

helm pull bitnami/redis-cluster v8.3.8拉取源码生成证书 git clone https://github.com/redis/redis.git #文档 https://redis.io/docs/management/security/encryption/#getting-started生成你的TLS证书用官网的工具生成 1 Run ./utils/gen-test-certs.sh 生成根CA和服务…

springboot321基于java的校园服务平台设计与开发

交流学习&#xff1a; 更多项目&#xff1a; 全网最全的Java成品项目列表 https://docs.qq.com/doc/DUXdsVlhIdVlsemdX 演示 项目功能演示&#xff1a; ————————————————

【双指针】复写0

复写0 1089. 复写零 - 力扣&#xff08;LeetCode&#xff09; 给你一个长度固定的整数数组 arr &#xff0c;请你将该数组中出现的每个零都复写一遍&#xff0c;并将其余的元素向右平移。 注意&#xff1a;请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上…

python趣味编程-5分钟实现一个益智数独游戏(含源码、步骤讲解)

Puzzle Game In Python是用 Python 编程语言Puzzle Game Code In Python编写的,有一个 4*4 的棋盘,有 15 个数字。然后将数字随机洗牌。 在本教程中,我将教您如何使用Python 创建记忆谜题游戏。 Python Puzzle Game游戏需要遵循以下步骤,首先是将图块数量移动到空的图块空…