GLM 130B和chatGLM2-6B模型结构

news2024/11/28 16:42:59

GLM-130B
一、预训练
采用双向注意力机制,对被遮挡的部分及逆行预测,
可以自由设置单词mask,句子smask,文章gmask,可以根据任务的不同设置mask,文本理解设置单词级别mask,文本生成色湖之句子级别的gmask,glm130B中设置的师70%句子级别gmask,30%词级别mask,

二、模型架构LayerNorm
不同于bert采用transformer架构中attention后进行layernorm,glm采用attention前后进行归一化

用DeepNorm(x) = LayerNorm(α · x + Network(x)),其中α = (2N) 二分之一,
是的模型训练更具稳定性,
在这里插入图片描述

Positional Embedding
1,绝对位置编码,三角式,可学习式,
2,相对位置编码,attention中建模单词两两之间的相对距离,
3,RoPE旋转式编码,绝对编码实现相对编码,主要就是对每个位置token中的q, k向量乘以矩阵,然后用更新的q,k向量做attention中的内积就会引入相对位置信息了
在这里插入图片描述

三、混合精度训练,
在这里插入图片描述

整个流程,相当于forward 参数的计算都是fp16,,更新梯度使用fp32,有更长的表示范围,
转换机制使用float2hat,

四、数据并行,ZeRO优化器
模型并行,流水线并行,将每个stage分别放置到不同的显卡上计算,
五、训练稳定性,
在这里插入图片描述

1,attention中在softmax处理之前,乘以一个系数阿尔法,
2,调小embedding层的梯度,缓解梯度爆炸,
3,使用deepnorm归一化,
激活函数,改进transformer中的FFN,使用GeGLu代替relu

六、扩充词表,tockernizer,收集语料,然后用SentencePiece训练后,再拼接词表

七、GLM是一种基于transformer架构的语言模型,利用其空白填空作为其训练目标,对于文本序列x{x1…xm}和文本片段{s1,…sm}从其中采样,每个si表示一个连续标记片段[si,1,…si,li]
并用单个掩码标记替换,形成x,模型要求对它进行自回归回复,
在这里插入图片描述

八、预训练数据:包括1.2T Pile (Gao et al., 2020)英语语料库、1.0T汉语五道语料库(Yuan et al.,从网上爬取的250G中文语料库(包括在线论坛、百科全书和问答),形成了中英文数据集
九、Chatglm2-6B,具体信息,
模型结构是,堆叠了28层transformer结构,输入维度是4096,mutil-attention-head是32头
Tokenizer: ChatGLMTokenizer(name_or_path=‘/home/.cache/huggingface/hub/models–THUDM–chatglm2-6b/snapshots/31d45da2d8f14e55f459e15da7e5e57e32dd1e93’, vocab_size=64794, model_max_length=1000000000000000019884624838656, is_fast=False, padding_side=‘left’, truncation_side=‘right’, special_tokens={})

config:
ChatGLMConfig {
“_name_or_path”: “/home/.cache/huggingface/hub/models–THUDM–chatglm2-6b/snapshots/31d45da2d8f14e55f459e15da7e5e57e32dd1e93”,
“add_bias_linear”: false,
“add_qkv_bias”: true,
“apply_query_key_layer_scaling”: true,
“apply_residual_connection_post_layernorm”: false,
“architectures”: [
“ChatGLMModel”
],
“attention_dropout”: 0.0,
“attention_softmax_in_fp32”: true,
“auto_map”: {
“AutoConfig”: “configuration_chatglm.ChatGLMConfig”,
“AutoModel”: “modeling_chatglm.ChatGLMForConditionalGeneration”,
“AutoModelForSeq2SeqLM”: “modeling_chatglm.ChatGLMForConditionalGeneration”
},
“bias_dropout_fusion”: true,
“eos_token_id”: 2,
“ffn_hidden_size”: 13696,
“fp32_residual_connection”: false,
“hidden_dropout”: 0.0,
“hidden_size”: 4096,
“kv_channels”: 128,
“layernorm_epsilon”: 1e-05,
“model_type”: “chatglm”,
“multi_query_attention”: true,
“multi_query_group_num”: 2,
“num_attention_heads”: 32,
“num_layers”: 28,
“original_rope”: true,
“pad_token_id”: 0,
“padded_vocab_size”: 65024,
“post_layer_norm”: true,
“pre_seq_len”: 128,
“prefix_projection”: false,
“quantization_bit”: 0,
“rmsnorm”: true,
“seq_length”: 32768,
“tie_word_embeddings”: false,
“torch_dtype”: “float16”,
“transformers_version”: “4.27.1”,
“use_cache”: true,
“vocab_size”: 65024
}

model: ChatGLMForConditionalGeneration(
(transformer): ChatGLMModel(
(embedding): Embedding(
(word_embeddings): Embedding(65024, 4096)
)
(rotary_pos_emb): RotaryEmbedding()
(encoder): GLMTransformer(
(layers): ModuleList(
(0-27): 28 x GLMBlock(
(input_layernorm): RMSNorm()
(self_attention): SelfAttention(
(query_key_value): Linear(in_features=4096, out_features=4608, bias=True)
(core_attention): CoreAttention(
(attention_dropout): Dropout(p=0.0, inplace=False)
)
(dense): Linear(in_features=4096, out_features=4096, bias=False)
)
(post_attention_layernorm): RMSNorm()
(mlp): MLP(
(dense_h_to_4h): Linear(in_features=4096, out_features=27392, bias=False)
(dense_4h_to_h): Linear(in_features=13696, out_features=4096, bias=False)
)
)
)
(final_layernorm): RMSNorm()
)
(output_layer): Linear(in_features=4096, out_features=65024, bias=False)
(prefix_encoder): PrefixEncoder(
(embedding): Embedding(128, 14336)
)
(dropout): Dropout(p=0.1, inplace=False)
)
)

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

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

相关文章

Streamsets binlog采集时区问题

通过Streamsets采集mysql binglog增量数据时候,出现数据库中datetime时区问题。 要注意一点是,streamsets的前端展示的时间也是有时区的,后端返回的数据是时间戳,等于做了两次时区的转换 后端binglog时区转换->时间戳->前端…

ELK日志记录——Kibana组件——grok 正则捕获插件

grok 正则捕获插件 grok 使用文本片段切分的方式来切分日志事件 内置正则表达式调用 %{SYNTAX:SEMANTIC} ●SYNTAX代表匹配值的类型,例如,0.11可以NUMBER类型所匹配,10.222.22.25可以使用IP匹配。 ●SEMANTIC表示存储该值的一个变量声明&…

Linux——SIGCHLD信号——第17号信号

目录 什么是僵尸进程? 僵尸进程的目的? 如何避免僵尸进程? 总结: 提到SIGCHLD信号,就不得不先说一个有关僵尸状态的进程知识点了。 什么是僵尸进程? 首先内核会释放终止进程(调用了exit系统调用)所使用的所有存情区,关闭所有打开的文…

计代码行数cloc,一个代码统计行数很好用的工具

分为window、mac系统区分,基本是一样的,一个代码统计行数很好用的工具。 CLOC简介 Cloc是一款使用Perl语言开发的开源代码统计工具,支持多平台使用、多语言识别,能够计算指定目标文件或文件夹中的文件数(files&#x…

Linux——sigaction信号捕捉函数

目录 一.sigaction () ; struct sigaction结构体的成员: sigaction()和signal()函数的区别: 二.sigaction函数的使用 sigaction函数使用案例1: 对该进程发送指定的信号 案例2:对该进程发送多个同类型的信号时: …

vim中文帮助文档安装

vim自带的帮助手册是英文的, 对平时编程的人来说没有多大阅读困难,在何况还有"星级译王"呢, 但是我猜和我一样连英语四级都愁的大有人,可偏偏就有一帮好心人人将其翻译成了中文, 可偏偏我又挡不住诱惑将它安装了, 唉.......又痛失一个学习英文的好机会, 下…

J2EE集合框架Map

目录 一.Map特点 1.无序,键值对,键不能重复,值可以重复 2.键重复则覆盖,没有继承Collection接口 二.遍历方式 1.拿到key,再拿值2.拿到映射关系,键值都有 取出保存所有Entry的Set,再遍历此Set即可 三.HashMap与H…

SpringBoot实现返回值数据脱敏

介绍 SpringBoot实现返回数据脱敏 有时,敏感数据返回时,需要进行隐藏处理,但是如果一个字段一个字段的进行硬编码处理的话,不仅增加了工作量,而且后期需求变动的时候,更加是地狱般的工作量变更。 下面&am…

HLS入门简述

What‘s HLS? HLS(High-Level Synthesis)高层次综合。何谓高层次?意味着我们可以使用高层次的语言来对设计进行描述,如C,C,System C等;那何谓综合呢?HLS在其中起了重要的…

Denosing score matching (公式+代码)

加噪声的分数匹配 def anneal_dsm_score_estimation(scorenet, samples, labels, sigmas, anneal_power2.):# 取出每个样本对应噪声级别下的噪声分布的标准差,即公式中的sigma_i,# 这里的 labels 是用于标识每个样本的噪声级别的,就是 i&…

JavaEE——常见的锁策略、CAS、synchronized 原理(八股)

文章目录 一、常见的锁策略1.乐观锁 & 悲观锁2.轻量级锁 & 重量级锁3.自旋锁 & 挂起等待锁4.互斥锁 & 读写锁5. 公平锁 & 非公平锁 二、CAS1、什么是 CAS2. CAS 的应用场景2.实现自旋锁3. CAS 中的 ABA 问题 三、 Synchronized 原理 一、常见的锁策略 当前…

DataFun: ChatGPT背后的模型详解

ChatGPT背后的模型详解 Overview Transofrmer 各个构件都有一定的作用 Multi-head self attention 每个字的重要性不一样,学习QKV三个矩阵(query,key,value) 多组QKV RLHF ChatGPT训练过程 思维链 COT

C++_简单模拟实现string的基本结构

C中,string早于STL问世。使用string中的构造函数可以实现对string类型的字符串的一系列操作。 今天来模拟C中的string的基本结构。注意仅仅是简单模拟,string内部结构其实非常复杂,并且不同版本的IDEstring的内部结构也不尽相同。尽管有所不…

SpringBoot2+Vue2实战(十五)高德地图集成

1.地图官网&#xff1a; 高德开放平台 | 高德地图API 2.开发文档(web js) 正式集成&#xff1a; 1.再index.html中引入script标签 <script type"text/javascript" src"https://webapi.amap.com/maps?v2.0&key您申请的key值"></script>…

第五章 PCIe介绍 5.1-5.7

5.1 从PCIe的速度说起 为什么SSD要用PCIe接口&#xff1f;因为它快&#xff0c;比SATA快。 Lane&#xff1a;通道&#xff0c;PCIe最多可以有32个通道。 1. PCIe的工作模式 两个设备之间的PCIe连接&#xff0c;叫做一个Link。如下图&#xff0c;设备A和设备B是个双向连接&#…

【读书笔记】只管去做

《只管去做》是一本很容易读完的书&#xff0c;这本书是以故事的形式来阐述把愿景落实到每天的行动中的方法&#xff0c;对我们做人生规划很有帮助。

使用leaflet在html中加载天地图且去掉左上角的缩放图标以及右下角的logo

前言 我们这一节使用轻量化的javascript库leaflet来实现在html中加载天地图&#xff0c;实现类似高德地图、百度地图的效果。 效果图如下&#xff1a; 话不多说&#xff0c;进入主题&#xff01;&#xff01; 一、注册开发者权限 我们需要在天地图平台注册一个账号&#xff0…

【Qt】VS2013+QT5.6.3环境搭建

安装VS2013 略 安装Qt 安装文件&#xff1a;qt-opensource-windows-x86-msvc2013-5.6.3.exe&#xff08;官网已经不提供下载了。&#xff09; 安装步骤&#xff1a;安装到C盘根目录&#xff0c;其它略。 安装qt vs插件 1、下载地址&#xff1a; https://download.qt.io/a…

string常见功能模拟

学到string终于就不用像c语言一样造轮子了&#xff0c;接下来我们就模拟一下string方便我们更好理解string&#xff0c;首先我们都知道库里有个string&#xff0c;所以为了避免我们的string和库里的冲突&#xff0c;要用命名空间my_string将我们写的string包含在内。string的成…

精准医学时代:探索人工智能在DCA曲线下的临床医学应用

一、引言 在当今医学领域中&#xff0c;精准医学作为一种以个体差异为基础的医疗模式逐渐受到重视和应用[1]。精准医学基于个体基因组、环境和生活方式因素的综合分析&#xff0c;旨在实现个体化的预防、诊断和治疗方案&#xff0c;从而提供更好的临床结果[2]。与传统医学相比&…