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

从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.hqwc.cn/news/188982.html

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

相关文章

牛客——OR36 链表的回文结构(C语言,配图,快慢指针)

本题是没有对C的支持的,但因为Cpp支持C,所以这里就用C写了,可以面向更多用户 链表的回文结构_牛客题霸_牛客网 (nowcoder.com) 思路一:链表翻转 简单的想想整形我们怎么比较,就是将整形A 依次取尾,放到整形…

gorm的简单操作

1. 什么是orm ORM全称是:Object Relational Mapping(对象关系映射),其主要作用是在编程中,把面向对象的概念跟数据库中表的概念对应起来。举例来说就是,我定义一个对象,那就对应着一张表,这个对象的实例&a…

基于SSM的设备配件管理和设备检修系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

Redis数据的持久化

Redis的持久化有两种方式: RDB(Redis Database)和AOF(Append Only File) 目录 一、RDB 保存方式 2、rdb在redis.conf文件中的配置 二、AOF 1、保存方式 2、aof方式持久化在redis.conf文件中的配置 三、持久化建…

spring cloud openfeign 使用注意点

近期在做项目时给自己挖了一个坑,问题重现如下 使用的组件版本如下 spring boot 2.7.15,对应的 spring cloud 版本为 2021.0.5,其中 spring cloud 适配的 openfeign 版本是 3.1.5。 项目中使用的 feign 接口如下 public interface QueryApi…

vulnhub靶场—matrix-breakout-2-morpheus靶机

一,实验环境 靶机ip:192.168.150.131攻击机ip:192.168.150.130 二,信息收集 arp-scan -l 扫描网段,寻找靶机ip 使用工具nmap进行端口扫描 nmap -A -T4 -p- 192.168.150.131 通过信息收集发现了靶机有80和81这两个…

golang学习笔记——基础01

文章目录 golang概述Go 语言特色Go 语言用途 Go 语言结构执行 Go 程序 Go 语言包管理01Go 语言包管理02Go 语言基础语法Go 标记行分隔符注释标识符字符串连接关键字、预定义标识符Go 语言的空格格式化字符串 Go 语言数据类型数字类型浮点型其他数字类型 Go 语言变量变量声明零值…

酷柚易汛ERP - 通用设置操作指南

1、系统设置 对系统进行初步设置,如系统LOGO、站点名称、备案号、版权信息、尾部信息及系统相关的一些基础设置 2、应用/小程序配置 对系统移动端进行相关配置 3、短信配置 对系统短信进行配置,此配置用于移动端一些通知类信息发送【目前仅支持阿里云…

centos7 网卡聚合bond0模式配置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、什么是网卡bond二、网卡bond的模式三、配置bond0 一、什么是网卡bond 所谓bond,就是把多个物理网卡绑定成一个逻辑上的网卡,使用同一个…

es使用客户端,“grunt” 不是内部或外部命令,多种解决方法

”grunt“不是内部或外部命令,也不是可运行的程序 或批处理文件。 4、问题排查 查看node的安装根目录 npm root -g 在运行grunt -version还是不行 网上找了很多,给出正确解决方案的没几个,所以自己摸索,最后确定了加环境变量的解…

电子学会C/C++编程等级考试2021年09月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:数字判断 输入一个字符,如何输入的字符是数字,输出yes,否则输出no 输入 一个字符 输出 如何输入的字符是数字,输出yes,否则输出no 样例1输入 样例1输入 5样例1输出 yes样例2输入 A 样例2输出 …

人生阶段总结

--回顾一下我迷茫、努力、不开心又失败的阶段人生自我介绍一下,我是一个智力平平,记忆力差,适合自学的长睡眠者。 大专之前 国内的应试教育基本上不适合我,厌恶补课厌恶机械式听课刷题,所有的优势学科都是自学&#xf…