首页 > 其他分享 >ChatGLM3-6B模型分析

ChatGLM3-6B模型分析

时间:2024-10-31 17:58:36浏览次数:1  
标签:6B 微调 tuning 模型 ChatGLM3 Prefix v2 Block

  ChatGLM3是清华、智谱2023年开源的一款大模型。ChatGLM3-6B模型代码,目前还在研读中,尚未全部读完。

  图1为ChatGLM3-6B模型简图,其结构基于Transformer Encoder架构的Encoder,大体上与BERT架构类似。ChatGLM3实现模型架构时,已预置支持P-tuning v2微调结构,图7中的PrefixEncoder,负责将若干Prefix Tokens映射到各GLM Block层的输入层,并与上一个GLM Block层的输出结合为当前GLM Block层的输入。后续各落地场景数据,只需通过P-tuning v2微调Prefix encoder即可。

图1 ChatGLM3-6B模型简图

1、算法论文及代码

  • 论文

   《General Language Model Pretraining with Autoregressive Blank Infilling》

    https://arxiv.org/pdf/2103.10360

  • 代码

  https://modelscope.cn/models/ZhipuAI/chatglm3-6b/files

2、P tuning-v2微调机制

  ChatGLM3模型内置支持P-tuning v2微调,图7中最左边一列始从Prefix tokens,然后自底向上Prefix Embedding X,这条支线是为后续微调ChatGLM3大模型,预置的微调结构。

       图2以第X层GLM Block为例,更为详细地描述P-tuning v2微调是如何实现的,图2中的Prefix序列有2个token:(t1,t2),经由PrefixEncoder编码后,得到一个维度为[2, num_layers*hidden_size*2]的Prefix序列矩阵,第1个维度取值2,表示有2个token,即t1和t2,第2个维度取值,表示在每一层GLM Block,都会有2个(t1, t2)的Prefix序列,其中第1个(t1,t2)是输入给k矩阵的,而第2个(t1, t2)是输入给v矩阵的,且每一个t1、t2,其向量长度为hidden_size。

       从图2可知,ChatGLM3的每一层GLM Block,均可微调其输入中的k矩阵和v矩阵。由于引入了更多的微调参数,P-tuning v2相较P-tuning v1只能微调第一层GLM Block,其表达能力和微调效果,理论上会好很多。

图2 ChatGLM3之P-tuning v2实现原理

 

3、LoRA微调

       ChatGLM3除了“天然”支持P-tuning v2微调,还支持LoRA微调,但LoRA微调是通过peft库实现,即Parameter Efficient Finetune。

 

4、模型量化

  ChatGLM3在加载模型时,可动态地进行4位或8位量化。ChatGLM3实际执行量化的代码,是由C/C++编写,并将编译后的可执行代码做BASE64编码,然后将base64编码结果通过硬编码的方式,写死在ChatGLM3的实现python代码中,即图3中的quantization_code变量存储的字符串,即量化代码字节流的base64编码。

       将quantization_code值经由Base64解码和BZ2解压缩后,得到一串字节流,见图3中右下角的命令行区域。

 

图3 ChatGLM3加载量化代码原理

 

 

关注更多安卓开发、AI技术、股票分析技术及个股诊断等理财、生活分享等资讯信息,请关注本人公众号(木圭龙的知识小屋)

 

标签:6B,微调,tuning,模型,ChatGLM3,Prefix,v2,Block
From: https://www.cnblogs.com/tgltt/p/18518560

相关文章

  • Python深度学习进阶与前沿应用(注意力机制详解、生成式模型详解、自监督学习模型详解、
    近年来,伴随着以卷积神经网络(CNN)为代表的深度学习的快速发展,人工智能迈入了第三次发展浪潮,AI技术在各个领域中的应用越来越广泛。注意力机制、Transformer模型(BERT、GPT-1/2/3/3.5/4、DETR、ViT、SwinTransformer等)、生成式模型(变分自编码器VAE、生成式对抗网络GAN、扩散模型Di......
  • 一个AI模型统治所有机器人
    原文链接:RoboticControlModule:OneAIModelforAnyRobot-IEEESpectrumAnewmodelcanoperatevirtuallyanyrobotdesign,includingarms,quadrupeds,anddrones一个新模型几乎可以操作任何机器人设计,包括机械臂、四足机器人和无人机 UCBerkeley/CarnegieM......
  • BERT模型分析
       在2018年Google提出Transformer框架后,2019年,BERT作为最早期的大模型,便应运而生,因为BERT有强大的自然语言理解能力,因此在其被提出后便风靡NLP领域。研读BERT代码,是因为BERT作为大模型起源鼻祖,比GPT起源还早,弄明白其算法思想和其主体代码具体实现逻辑,有利于理解现行流......
  • 性能测试业务模型中常用的性能指标说明
    企业在实践过程中不断深入和积累,逐渐对部分性能指标的标准进行了补充,特别是在结合业务场景的分析过程中。一、系统处理能力本文主要是对RPS(RequeslPerSecond,每秒请求数)进行补充。我们知道TPS主要从事务数的角度来进行统计,而RPS主要从请求数的角度来进行统计。其中一个事务......
  • 网络编程-OSI模型
    OSI模型OSI是opensysteminterconnection的缩写,译为“开放式系统互联”。OSI模型把网络通信的工作分为7层,从下到上分别是物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。OSI七层网路模型和TCP/IP四层网络模型的对比。网络模型:就是进行数据封装的。当另一台计算机......
  • 构建第一个ArkTS应用(Stage模型)
    copy官网的留个记号:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/start-with-ets-stage-V5创建ArkTS工程若首次打开DevEcoStudio,请点击CreateProject创建工程。如果已经打开了一个工程,请在菜单栏选择File>New>CreateProject来创建一个新工程。选......
  • 智慧园区算法视频分析服务器区域入侵算法:开源免费的目标检测模型及关键特性
    在人工智能和计算机视觉领域,目标检测技术已成为理解和分析视频内容的关键。随着深度学习技术的不断进步,一系列优秀的开源目标检测模型应运而生,它们在提高检测精度和效率方面发挥着重要作用。这些模型不仅推动了学术界的发展,也为工业界提供了强大的工具。以下是一些在开源社区中广......
  • python实战(五)——构建自己的大模型助手
    一、任务目标    本文将利用大语言模型强大的对话能力,搭建一个PC端问答助手。具体来说,我们将使用API来调用我们想要的大模型,并结合Prompt让大模型根据任务类型生成对应的输出。为了更方便地调用大模型助手,我们将结合python第三方库中的语音识别库进行开发,实现调用麦克......
  • 常见大模型——LLama系列
    LLaMA简介LLaMA(LargeLanguageModelMetaAI)是由Meta开发的一种大规模语言模型,旨在提高自然语言处理任务的性能。LLaMA基于Transformer机构,并经过大规模数据训练,以便在多种语言任务中表现出色。LLaMA所采用的Transformer结构和细节,与标准的Transformer结构不同的地方是包......
  • 从零开始认识大模型,小白入行必看!
    前言什么是ChatGPT?什么是GPT-4?Bard和PaLM又是什么?它们有什么关系?它们对我们有什么影响?AI技术第一次这么密集地冲击着非从业者们,身处变革之中的我们或许会迷茫,但这本来就是工业革命之后的常态,我们要做的就是像九十年代学习计算机一样拥抱未来。在ChatGPT刚出的时候,我对未......