CogView中网络结构的总体构建

news/2024/5/4 8:56:53/文章来源:https://blog.csdn.net/weixin_55073640/article/details/126585021

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。

目录

一、构建图

二、代码解析

1、__init__

(1)参数设定

(2)Word embeddings (parallel)

(3)Transformer

2、forward

(1)Word embeddings (parallel)

(2)Transformer

(3)Parallel logits

(4)串行 or 并行输出


一、构建图


二、代码解析

这部分代码在model/gpt2_modeling.py中

1、__init__

(1)参数设定

  •  num_layers:transformerLayer的层数;
  • vocab_size:词典大小;
  • hidden_size:输入层大小;
  • num_attention_heads:attention head的数目;
  • embedding_dropout_prob:embedding的dropout概率;
  • attention_dropout_prob:self attention的dropout概率;
  • output_dropout_prob:输出的的dropout概率;
  • max_sequence_length:最大序列长度(每次读入的序列长度);
  • checkpoint_activations:是否启用检查点激活;
  • checkpoint_num_layers:checkpoint层数;
  • parallel_output:output是串行or并行;
  • query_window:稀疏处理的窗口大小;
  • key_window_times:用于调节稀疏处理中的窗口数量;
  • num_pivot:稀疏处理中的token总数;
class GPT2Model(torch.nn.Module):"""GPT-2 Language model.The output of the forward method are the logits (parallel orserial depending on the `parallel_output` flag."""def __init__(self,num_layers,vocab_size,hidden_size,num_attention_heads,embedding_dropout_prob,attention_dropout_prob,output_dropout_prob,max_sequence_length,max_memory_length,checkpoint_activations,checkpoint_num_layers=1,parallel_output=True,query_window=128,key_window_times=6,num_pivot=768):super(GPT2Model, self).__init__()self.parallel_output = parallel_outputinit_method = init_method_normal(std=0.02)#初始化方法为高斯分布(均值为0,方差为0.02)

(2)Word embeddings (parallel)

        # Word embeddings (parallel).self.word_embeddings = mpu.VocabParallelEmbedding(vocab_size, hidden_size, init_method=init_method)

详见CogView中的Word embeddings (parallel)_tt丫的博客-CSDN博客

(3)Transformer

        # Transformerself.transformer = mpu.GPT2ParallelTransformer(num_layers,hidden_size,num_attention_heads,max_sequence_length,max_memory_length,embedding_dropout_prob,attention_dropout_prob,output_dropout_prob,checkpoint_activations,checkpoint_num_layers,query_window=query_window,key_window_times=key_window_times,num_pivot=num_pivot)

详见CogView中的Transformer_tt丫的博客-CSDN博客

2、forward

    def forward(self, input_ids, position_ids, attention_mask, txt_indices_bool, img_indices_bool, is_sparse, *mems):

(1)Word embeddings (parallel)

shape为(b,s,h)

补:b——batch size;s——sequence length;h——hidden_size;

        # Embeddings.words_embeddings = self.word_embeddings(input_ids)embeddings = words_embeddings

(2)Transformer

        # Transformer.transformer_output = self.transformer(embeddings, position_ids, attention_mask, txt_indices_bool, img_indices_bool, is_sparse, *mems)logits, *hidden_layers = transformer_output#logits为output;*hidden_layers为*mem

(3)Parallel logits

        # Parallel logits.logits_parallel = mpu.copy_to_model_parallel_region(logits)#传递到模型并行区域logits_parallel = F.linear(logits_parallel,self.word_embeddings.weight)#线性变化

最终shape为(b,s,h)*(v/p,h)^T=(b,s,v/p)

v——vocab_size;p——number of partitions;

(4)串行 or 并行输出

        if self.parallel_output:#并行return (logits_parallel, *hidden_layers)return (mpu.gather_from_model_parallel_region(logits_parallel), *hidden_layers)#串行

欢迎大家在评论区批评指正,谢谢~

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

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

相关文章

UVA 10271 佳佳的筷子 Chopsticks [DP的基本运用]

佳佳的筷子 Chopsticks 题面翻译 定义一个三元组(a,b,c)(a⩽b⩽c)(a,b,c)(a\leqslant b\leqslant c)(a,b,c)(a⩽b⩽c),它的权值为 (a−b)2(a-b)^2(a−b)2 。 给定 n(n⩽5000)n(n\leqslant5000)n(n⩽5000) 个数,要求选出 k8k8k8 个三元组,使…

2、操作系统基本原理

操作系统基本原理 软件设计师需要有扎实的理论知识,而操作系统作为计算机科学最为基本的理论基础和分支领域之一,是软件设计师必须重点掌握的知识。本章将介绍操作系统相关的考点,并辅以练习题,以便考生切实掌握相关内容。 根据考…

【python经验总结】我与bug的那些日子

【python经验总结】我与bug的那段岁月 💖💖💖💕💕💕欢迎来到本博客💕💕💕💖💖💖 . 🎁支持:如果觉得博主的文章…

猿创征文|【Typescript】搭建TS的编译环境

多一些不为什么的坚持🤳 贤蛋 🥚大眼萌 ,一名很普通但不想普通的程序媛🙊 📝本文章收录于专栏:Typescript学习 搭建TS的编译环境🎈 认识Typescript💊 Typescript 的编译环境&#x1…

110道Java初级面试题及答案(最新Java初级面试题大汇总)

史上最全Java初中级面试题,发现网上很多Java初级面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本人发现网上虽然有不少Java相关的面试题,但第一未必全,第二未必有答案&am…

windows系统使用docker-compose

windows系统使用docker-compose 为什么使用docker-compose? 使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具 1、新建docker-compose.yml文件 在windows系统找到docker的安装目录:C:P…

2022 IDC中国数字金融论坛 | 筑基金融信创 共话金融科技新愿景

2022年8月18日,第十届“IDC中国数字金融论坛”于北京举行。本届论坛以“开放融合、数字信任、智慧金融”为主题,基于IDC对全球金融科技发展及行业趋势的研究,发布对金融行业趋势的解读与对数字金融发展的洞见,为金融领域资深专家及…

怎么把PDF转换成CAD文件格式呢?

我们在工作中难免会遇到各种文件格式,而每种格式都有其独特的优点。比如PDF文件格式比其他文件格式更稳定,基本上所有系统都可以打开,内容不容易修改。而CAD文件格式,在工程建设中,尤其是设计阶段被广泛应用。那么当我…

27、CityNeRF

简介 主页:https://city-super.github.io/citynerf/ CityNeRF能够将城市尺度的3D场景打包到一个统一的模型中,它能够保存从卫星到地面不等尺度的高质量细节。顶部:使用边缘颜色蓝色(L1)、绿色(L2)和橙色(L3)来表示从最远到最近的三个等级,P…

L73.linux命令每日一练 -- 第十章 Linux网络管理命令 -- dig和host

10.19 dig:域名查询工具 10.19.1 命令详解 ​ 【命令星级】 ★★★★☆ ​ 【功能说明】 ​ dig命令是常用的域名查询工具,可以用于测试域名系统的工作是否正常。 ​ 【语法格式】 dig [option] dig [选项]​ **说明:**在dig命令及后面…

Debian/Ubuntu/Kali 如何安装 Spotify 音乐白嫖神器

How to install Spotify on Debian/Ubuntu/Kali Linux 可能有小伙伴不了解,什么是Spotify?博主照搬维基百科来做 简要介绍: Spotify(/ˈspɒtɪfaɪ/),中文译作“声田”),是一家瑞典…

如何图片批量重命名编号不要汉字?

如何图片批量重命名编号不要汉字?如果你是一个摄影发烧友,或者你是一名从事摄影相关工作的朋友,那么肯定经常会将拍摄好的照片转移到电脑上,然后进行批量重命名。其实不管什么时候,我们经常会遇到图片批量重命名的操作…

group by后,使用nvl失效问题

原因 首先,这篇博客写出了这个问题出现的原因: 链接: nvl(sum(字段),0) 的时候,能展示数据0,但是group by 下某个伪列的时候,查不到数据(转载) 这里我也总结下原因:没有记录返回则…

使用Kibana进行数据可视化

使用 Kibana 进行数据可视化 使用 ELK 堆栈(Elasticsearch、Logstash 和 Kibana)和 Elastic Stack 的一部分 Kibana 可视化和分析数据。 课程英文名:Data Visualization with Kibana 此视频教程共21.0小时,中英双语字幕&#x…

[模拟][模电][面试][运放]仪表放大器

前言 昨天访问量还是29万1千多,今天就变成了28万3千,CSDN又在倒退了!!! 目录前言框图\;\\\;\\\;框图 虚短:放大器的正负输入假设短路,两个端口电位相同虚断:放大器的正负输入假设断…

Linux命令记录大全

至于为什么写下该篇博客 身为以为软件工程师平时在工作中会经常的使用Linux系统,久而久之会发现该系统比我们平时用的Windows系统有着巨大的优势,不管是从安全层面和可扩展层面。而Linux的命令可以说是非常的多并难以全部记住,所以我写下该片…

Hive 多数组合并 CONCAT_WS

目录 多列的情况 先上结果 拆分concat_ws 可以拆分数组 然后在用split切分再变回数组 多行合并 多列的情况 先上结果 select split(concat_ws(,,array("AAA", "bbb"), array(CCC,"AAA", "bbb"), array("GGG","…

react native 使用阿里字体图标库

前言 本文基于 “react-native”: “0.69.5” 版本。 1.下载iconfont图标文件 将iconfont图标文件放置在src/assets/fonts react native 所需的字体图标文件仅需iconfont.ttf这一个文件即可其余文件只是用于打开demo_index.html,打包时可将其余文件删除 2.链接字…

Java配置41-搭建Kafka服务器

目录 1.服务器环境 2.安装kafka 1)上传安装介质 2)解压安装 3)修改配置文件 4)启动zookeeper 5)启动kafka 6)测试 ​​​​​ 1.服务器环境 系统版本:Red Hat Enterprise Linux Server…

IC入行第一步:怎样选择岗位和公司?

IC行业是一个比较火的行业,不少人想要转行IC,但不知道该如何选择岗位和公司? 其实这得根据个人的学历和专业结合选择,转行之前一定要考虑清楚,不要盲从,毕竟入行是一件大事,得认真分析选择适合…