LLM量化

  1. Efficient Finetuning

  2. prefix tuning

针对每种任务,学习prefix vector

启发于prompting,调整上下文内容让模型去输出自己想要的内容

核心就是找到一个上下文去引导模型解决NLP生成任务

传统情况下,我们为了得到想要的结果,会人工去设计一些模版,这被称为硬模板

这种人工设计模版的方式往往需要大量尝试,所以另一种可以通过模型学习的,添加一组没有明确意义的prompt tensor的方式被提出,叫做软模板

实际实现中,就是添加了一个embedding层,形状为prefix_tokens * target_dims,

这个target_dims在p-tuing中就是直接等于hidden_size.

但是prefix-tuning在实验过程中发现这样效果并不好,于是改成在每层都加入prefix_layer,其实就是在每层的attention计算的时候,给K,V tensor(x Wk, x Wv之后的结果)前面拼接prefix tensor

通过上面等式的变换,等式的前部分是不加入prefix向量的初始attention计算的公式,后半部分则是上下文向量无关的部分。通过一个类似门的机制来计算前后两部分的比重

其实就是在原有attention中加入了一个Q tensor和k v的prefix tensor计算attention的过程,结果用门控机制做加和

关于Embedding部分,实现在了一个PrefixEncoder中,作者实验结果中得出,如果仅仅对prefix tensor做优化,结果不稳定,加入一个MLP层会更好,MLP结构就是(hs ->low_dim)+激活函数+(low_dim->hs),就是先降维再升维,训练完后仅保留MLP输出的结果

class PrefixEncoder(torch.nn.Module):  
    """  
    The torch.nn model to encode the prefix    Input shape: (batch-size, prefix-length)    Output shape: (batch-size, prefix-length, 2*layers*hidden)    """    def __init__(self, config: ChatGLMConfig):  
        super().__init__()  
        self.prefix_projection = config.prefix_projection  
  
        if self.prefix_projection:  
            # Use a two-layer MLP to encode the prefix  
            kv_size = config.num_layers * config. hidden_dim* 2  
            self.embedding = torch.nn.Embedding(config.pre_seq_len, kv_size)  
            self.trans = torch.nn.Sequential(  
                torch.nn.Linear(kv_size, config.hidden_size),  
                torch.nn.Tanh(),  
                torch.nn.Linear(config.hidden_size, kv_size)  
            )  
        else:  
            self.embedding = torch.nn.Embedding(config.pre_seq_len,  
                                                config.num_layers * config. hidden_dim * 2)  
  
    def forward(self, prefix: torch.Tensor):  
        if self.prefix_projection:  
            prefix_tokens = self.embedding(prefix)  
            past_key_values = self.trans(prefix_tokens)  
        else:  
            past_key_values = self.embedding(prefix)  
        return past_key_values

关于Embedding的维度,输出是hs * layer_nums*2,因为每一层都要加入prefix,所以乘上layer_nums,由于要给K V都拼接,所以乘2

self.prefix_projection用于区分是否要加入MLP结构,这也是区分Prefix tuning和p-tuningV2的一个方式,p-tuning v2中认为中重参数化的方式收益很小,选择不加入MLP层,其他部分基本和Prefix tuing一致。

具体插入过程,在huggingface实现中,是通过past_key_values的方式给巧妙地传递到每层的

Adapter tuing

Lora系列

Efficient Inference

Quantization基础

Post-training quantization (训练完后做量化然后做推理)

Quantization-aware traing(将量化的过程融合到训练里,减少量化损失)

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

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

相关文章

jdk8的新特征

1: jdk8中新增的方法 在jdk8中对接口进行了增强,在jdk8之前 interface 接口名{ 静态常量: 抽象方法: } 在jdk8之后 interface 接口名{ 静态常量: 抽象方法: 默认方法: 静态方法: } 2…

Ubuntu20.4部署Cuda12.4

准备Ubuntu20.4 VM 安装Cuda12.4 1.进入如下界面安装安装Cuda12.4版本: CUDA Toolkit 12.4 Update 1 Downloads | NVIDIA Developerhttps://developer.nvidia.com/cuda-downloads?target_osLinux&target_archx86_64&DistributionUbuntu&target_vers…

97. 交错字符串-----回溯、动态规划

题目链接 97. 交错字符串 - 力扣(LeetCode) 解答 递归回溯 题目所述为两个字符串交替组成第三个字符串,之前好像做过相似的题目,直接联想到可以考虑使用递归回溯的做法,让字符串s1和字符串s2分别作为起始字符串&…

vm16安装最新版本的ubuntu虚拟机,并安装g++的步骤记录

背景 低版本的ubuntu安装G一直不成功,干脆安装最新版的 官网下载 bing搜索ubuntu 下载完成 vm16新建虚拟机 一直下一步,安装完成 终端输入命令 sudo apt-get update ᅟᅠ       sudo apt install gcc ᅟᅠ      sudo apt install g

工程师工具箱系列(1)MapStruct

文章目录 工程师工具箱系列(1)MapStruct芸芸众生初窥门径引入POM依赖创建转换器与方法进行使用IDEA好基友 游刃有余示例说明避免编写重复转换器实现复杂灵活转换 温故知新 工程师工具箱系列(1)MapStruct 芸芸众生 在Java项目开发…

SpringAI 技术解析

1. 发展历史 SpringAI 的发展历史可以追溯到对 Spring 框架的扩展和改进,以支持人工智能相关的功能。随着人工智能技术的快速发展,SpringAI 逐渐成为 Spring 生态系统中的一个重要组成部分,为开发者提供了便捷、灵活的解决方案。 项目的灵感来…

算法提高之单词接龙

算法提高之单词接龙 核心思想&#xff1a;dfs 预处理每两个字符串之间最短的公共部分长度 求最短公共 最终字符串是最长 dfs所有开头字符串 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N 25;int g[N][N…

雷军-2022.8小米创业思考-6-互联网七字诀之快:天下武功,唯快不破;快不是目的,快是手段;不要用战术上的勤奋掩盖战略上的懒惰。

第六章 互联网七字诀 专注、极致、口碑、快&#xff0c;这就是我总结的互联网七字诀&#xff0c;也是我对互联网思维的高度概括。 快 我们期待非常多的快&#xff0c;比如研发进展快、库存周转快、资金回笼快等等。但在这里&#xff0c;我们集中讨论的是公司在业务发展和面对…

LeetCode题练习与总结:二叉树的中序遍历--94

一、题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]示例 3&#xff1a; 输入&#xff1a;roo…

C语言(指针)5

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

Busybox 在 Docker 中的部署和启动

可以使用 docker pull 指令下载 busybox:latest 镜像&#xff1a; PS C:\Users\yhu> docker pull busybox:latest latest: Pulling from library/busybox ec562eabd705: Pull complete Digest: sha256:5eef5ed34e1e1ff0a4ae850395cbf665c4de6b4b83a32a0bc7bcb998e24e7bbb St…

COX回归特征筛选

任务&#xff1a;利用cox筛选出P值小于0.05的特征 数据的格式第一列为标签&#xff0c;第二列为时间&#xff0c;第三列及后为特征 先想一想&#xff0c;想好了再更新 这里我们先举一个例子&#xff1a; import pandas as pd from lifelines import CoxPHFitter# 创建示例数…

项目管理-计算题公式【复习】

1.【进度】相关公式 1.1三点估算 PERT 三点估算法是基于 任务成本的三种估算值&#xff08;最可能成本CM&#xff0c;最乐观成本CO&#xff0c;最悲观成本CP&#xff09;来计算预期成本的方法。 三角 分布&#xff1a;预期成本&#xff08;最乐观成本最可能成本最悲观成本&am…

RabbitMq出现Not management user问题解决

在RabbitMq登录的时候突然弹出如下图&#xff1a; 提示“当前用户不是管理员用户”进入mq控制命令台下&#xff1a; windows版本在mq安装路径下的sbin下进入cmd弹出框&#xff1b; Linux版本没有测试&#xff1b; 输入以下命令&#xff1a; rabbitmqctl list_users 查询当…

【计算机网络篇】数据链路层(8)共享式以太网的退避算法和信道利用率

文章目录 &#x1f6f8;共享式以太网的退避算法&#x1f95a;截断二进制指数算法 &#x1f354;共享式以太网的信道利用率 &#x1f6f8;共享式以太网的退避算法 在使用CSMA/CD协议的共享总线以太网中&#xff0c;正在发送帧的站点一边发送帧一边检测碰撞&#xff0c;当检测到…

Springboot整合 Spring Cloud Alibaba Sentinel

1.Sentinel介绍 官方文档地址&#xff1a; https://sentinelguard.io/zh-cn/docs/introduction.html https://github.com/alibaba/Sentinel/wiki/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入…

探索共享内存:解锁并发编程的潜力

文章目录 序言shm 原理对shm的理解通过代码认识shm调用shmget方法实现 序言 system V版本 指定的一种规则(俗话说一流公司定规则,二流公司重服务,三流公司重技术).这个规则虽然有很多种(消息队列,共享内存等只是比较出名的几个).但是在内核的相关技术解决上是类似的,因为都是基…

吴恩达 深度学习 神经网络 softmax adam 交叉验证

神经网络中的层&#xff1a;输入层&#xff08;layer 0&#xff09;、隐藏层、卷积层&#xff08;看情况用这个&#xff09;、输出层。&#xff08;参考文章&#xff09; 激活函数&#xff1a; 隐藏层一般用relu函数&#xff1b; 输出层根据需要&#xff0c;二分类用sigmoid&…

Selenium 自动化 —— 一篇文章彻底搞懂XPath

更多关于Selenium的知识请访问“兰亭序咖啡”的专栏&#xff1a;专栏《Selenium 从入门到精通》 文章目录 前言 一、什么是xpath&#xff1f; 二、XPath 节点 三. 节点的关系 1. 父&#xff08;Parent&#xff09; 2. 子&#xff08;Children&#xff09; 3. 同胞&#xff08;S…

[Algorithm][回溯][全排列][子集] + 回溯原理 详细讲解

目录 0.原理讲解1.全排列1.题目链接2.算法原理详解3.代码实现 2.子集1.题目链接2.算法原理详解3.代码实现 0.原理讲解 回溯算法通常⽤于解决组合问题、排列问题和搜索问题等回溯算法的基本思想&#xff1a; 从⼀个初始状态开始&#xff0c;按照⼀定的规则向前搜索&#xff0c;…