首页 > 其他分享 >大模型模型结构总结

大模型模型结构总结

时间:2024-01-30 22:44:08浏览次数:22  
标签:总结 False features 模型 Linear 2048 bias out 结构

对比各个大模型的网络结构

ps:使用自己的config,但是模型结构跟官方配置原理一致.

chatglm3

ChatGLMForConditionalGeneration(
  (transformer): ChatGLMModel(
    (embedding): Embedding(
      (word_embeddings): Embedding(65024, 4096)
    )
    (rotary_pos_emb): RotaryEmbedding()
    (encoder): GLMTransformer(
      (layers): ModuleList(
        (0-1): 2 x GLMBlock(
          (input_layernorm): RMSNorm()
          (self_attention): SelfAttention(
            (query_key_value): Linear(in_features=4096, out_features=12288, bias=False)
            (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)
  )
)
#模型调试代码:
#=======通过下面这个代码可以debug学习chatglm3的代码.
from modeling_chatglm import ChatGLMForConditionalGeneration,ChatGLMConfig
import torch
 
def run ():
  config= ChatGLMConfig(num_layers=2,original_rope=True,use_cache=True)  #=====有一些参数在config.json里面搬过来即可.
  model = ChatGLMForConditionalGeneration(config=config)
  inputs_ids  = torch.randint(low=0,high=config.vocab_size, size=(4,30))
  print(model)
  res = model(inputs_ids)
  print(res)
 
run()

llama2


LlamaForCausalLM(
  (model): LlamaModel(
    (embed_tokens): Embedding(32000, 2048)
    (layers): ModuleList(
      (0-1): 2 x LlamaDecoderLayer(
        (self_attn): LlamaAttention(
          (q_proj): Linear(in_features=2048, out_features=2048, bias=False)       
          (k_proj): Linear(in_features=2048, out_features=2048, bias=False)       
          (v_proj): Linear(in_features=2048, out_features=2048, bias=False)       
          (o_proj): Linear(in_features=2048, out_features=2048, bias=False)       
          (rotary_emb): LlamaRotaryEmbedding()
        )
        (mlp): LlamaMLP(
          (gate_proj): Linear(in_features=2048, out_features=554, bias=False)     
          (up_proj): Linear(in_features=2048, out_features=554, bias=False)       
          (down_proj): Linear(in_features=554, out_features=2048, bias=False)     
          (act_fn): SiLUActivation()
        )
        (input_layernorm): LlamaRMSNorm()
        (post_attention_layernorm): LlamaRMSNorm()
      )
    )
    (norm): LlamaRMSNorm()
  )
  (lm_head): Linear(in_features=2048, out_features=32000, bias=False)
)
#模型调试代码:
from transformers.models .llama import LlamaModel,LlamaConfig,LlamaForCausalLM
import torch
 
def run ():
  llamaconfig= LlamaConfig(vocab_size=32000,
  hidden_size=4096//2,
  intermediate_size=1108//2,
  num_hidden_layers=2,
  num_attention_heads=32//2,max_position_embeddings=2048//2)
  llamamodel = LlamaForCausalLM(config=llamaconfig) #https://hf-mirror.com/hiyouga/Llama-2-Chinese-13b-chat/blob/main/config.json 参考这里面的architecture知道llama2依然用的事llamaforcausallm架构.
  inputs_ids  = torch.randint(low=0,high=llamaconfig.vocab_size, size=(4,30))
  print(llamamodel)
  res = llamamodel(inputs_ids)
  print(res)
 
run()

核心部分放在一起比较

chatglm:          (input_layernorm): RMSNorm()
          (self_attention): SelfAttention(
            (query_key_value): Linear(in_features=4096, out_features=12288, bias=False)
            (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)
          )
		  
		  
		  
		  
llama2:		(self_attn): LlamaAttention(
          (q_proj): Linear(in_features=2048, out_features=2048, bias=False)       
          (k_proj): Linear(in_features=2048, out_features=2048, bias=False)       
          (v_proj): Linear(in_features=2048, out_features=2048, bias=False)       
          (o_proj): Linear(in_features=2048, out_features=2048, bias=False)       
          (rotary_emb): LlamaRotaryEmbedding()
        )
        (mlp): LlamaMLP(
          (gate_proj): Linear(in_features=2048, out_features=554, bias=False)     
          (up_proj): Linear(in_features=2048, out_features=554, bias=False)       
          (down_proj): Linear(in_features=554, out_features=2048, bias=False)     
          (act_fn): SiLUActivation()
        )
        (input_layernorm): LlamaRMSNorm()
        (post_attention_layernorm): LlamaRMSNorm()
		  
		  
		  
		  
		  
		  
		  

总结: 可以看出这2个模型除了参数有些区别外模型架构一模一样. chatglm的attendim=4096, dnn层 参数少. llama2的attentiondim=2048,dnn层参数多.就这么点区别.

标签:总结,False,features,模型,Linear,2048,bias,out,结构
From: https://www.cnblogs.com/zhangbo2008/p/17998145

相关文章

  • ABC388-VP赛总结-A/B(日结)
    首先A题(一个difficultly为21的题卡了我20分钟)ProblemStatementYouaregivenanon-emptystring\(S\)consistingofuppercaseandlowercaseEnglishletters.Determinewhetherthefollowingconditionissatisfied:Thefirstcharacterof\(S\)isuppercase,and......
  • (MJ出图转大模型)删除二级文件夹
    importosimportshutildefdelete_subfolders(directory):#检查目录是否存在ifnotos.path.exists(directory):print("指定的目录不存在:",directory)return#遍历目录中的所有项foriteminos.listdir(directory):item......
  • 2023年度总结:我们都在用力的活着,拼尽了全力,却换回了伤痕累累!!!
    阅前必读:2023你还记得让你听过最扎心的话吗?你印象里记得你做的哪些不如意痛心的事吗?当你的付出得不到回报的时候。你有过绝望吗?闭上眼睛,想起过往时候,你流泪了吗?其实我并不害怕黑夜,我只是怕了孤单。走在那条回忆的路上,想我了血肉模糊的风景。承受过了背叛。其实并不是放不下。......
  • 如何做好一个信息系统项目经理,一个项目经理的个人体会和经验总结(二)
    前言之前文章讲了在项目开始阶段,作为一个信息系统项目经理应该做好哪些内容(参见如何做好一个信息系统项目经理,一个项目经理的个人体会和经验总结(一)),这一篇我们继续聊聊在项目开发阶段,项目经理又需要做好哪些事情呢?......
  • 设计模式一句话总结
    1.设计原则(SOLID原则)原则名字原则描述单一职责原则(S)功能只有一个开闭原则(O)开放扩展,关闭修改里氏替换原则(L)子类需要实现父类功能以保持兼容性接口隔离原则(I)不用的函数或者功能不要出现依赖倒置原则(D)细节依赖于抽象,约定优先迪米特法则只和朋友说话......
  • IOS七层模型
    ISO七层模型的分层和作用7应用层<--------------应用层协议------------>应用层APDU6表示层<--------------表示层协议------------>表示层PPDU5会话层<--------------会话层协议------------>会话层SPDU4传输层<--------------传输层协议----------......
  • 每日总结2024年1月30日
    今天完成了歌声转换的第一阶段验收。我们小组选择的服务外包杯课题是A13的歌声转化,我们计划实现两个方面的功能。能够选择人声,然后根据导入的歌曲,替换原声,生成新的歌曲,这是我们计划的基础目标。但是考虑到条件的局限性,我们很难让用户自行导入音色素材直接转化为需要的音色,目前计......
  • c#树结构转npoi复杂表头
    Vue前端框架框架中采用树结构打印表头,为了前后端适配NPOI导出。这里重点做树结构转换 NPOI复杂表头的结构数据(跨行、跨列),其它具体导出功能请参考  https://www.cnblogs.com/lwk9527/p/17374291.html 导出后实际效果 源数据json版[{"Title":"账号"......
  • 瀑布模型指南:优缺点和适合的团队领域
    如果你在项目管理这一领域有一定的经验,那么你肯定不陌生于瀑布模型这一概念。它是一种诞生于1970年代的传统软件开发方法。在使用瀑布模型的过程中,必须按顺序完成每个项目的阶段,之后才能进入下一阶段。这种方法是非常严格且按部就班的。它极度依赖于项目开始前完成的所有需求收集......
  • 【scikit-learn基础】--『回归模型评估』之损失分析
    分类模型评估中,通过各类损失(loss)函数的分析,可以衡量模型预测结果与真实值之间的差异。不同的损失函数可用于不同类型的分类问题,以便更好地评估模型的性能。本篇将介绍分类模型评估中常用的几种损失计算方法。1.汉明损失Hammingloss(汉明损失)是一种衡量分类模型预测错误率的指......