当前位置: 首页 > news >正文

大模型压缩:基于贝叶斯优化的自适应低秩分解

1.方法

1.1 基于特征的高维空间低秩分解

PCA已经是老朋友了,每次一说主成分都会出现PCA。这篇文章1利用预训练数据的子集作为校准数据集 D c a l = { x i } i = 1 n \mathcal{D}_{cal}=\{x_{i}\}_{i=1}^{n} Dcal={xi}i=1n,首先用校准数据集的样本协方差矩阵(SCM)估计整个特征空间分布的Y的协方差矩阵
C o v S ( Y ) = 1 n − 1 ∑ i = 1 n ( y i − y ˉ ) T ( y i − y ˉ ) (1) Cov_S(\boldsymbol{Y})=\frac{1}{n-1}\sum_{i=1}^n(\boldsymbol{y}_i-\bar{\boldsymbol{y}})^T(\boldsymbol{y}_i-\bar{\boldsymbol{y}})\tag{1} CovS(Y)=n11i=1n(yiyˉ)T(yiyˉ)(1)
式中 y i \boldsymbol{y}_i yi表示 x i \boldsymbol{x}_i xi的特征, y ˉ \bar{\boldsymbol{y}} yˉ是校准数据集的特征值平均值。但文章指出,计算高维的协方差矩阵并不简单,他们提出了合并协方差矩阵(PCM),把校准数据集分成 m m m组,对每一组分别计算协方差矩阵最后求平均得PCM
C o v P ( Y ) = 1 m ∑ k = 1 m C o v S ( Y k ) (2) Cov_P(\boldsymbol{Y})=\frac{1}{m}\sum_{k=1}^mCov_S(\boldsymbol{Y}_k)\tag{2} CovP(Y)=m1k=1mCovS(Yk)(2)

1.2 基于贝叶斯优化得低秩分配

对于每一层,甚至每一层的不同矩阵对低秩分解得敏感度不同,对于一个模型 f ( ⋅ ; θ ) f(\cdot;\theta) f(;θ),引入一组压缩率 λ = { λ i } i = 1 k \lambda=\{\lambda_{i}\}_{i=1}^{k} λ={λi}i=1k,引入一个任务模糊数据集D来评价压缩大模型 f ( ⋅ ; θ , λ ) f(\cdot;\boldsymbol{\theta},\lambda) f(;θ,λ)的性能,例如预训练数据集的子集。因此目标函数表示为
min ⁡ λ ∈ V H ( λ ) = E ( x , y ) ∼ D h ( f ( x ; θ , λ ) , y ) s . t . Σ λ ≤ ρ (3) \begin{aligned}\min_{\lambda\in\mathcal{V}}H(\boldsymbol{\lambda})&=\mathbb{E}_{(x,y)\sim\mathcal{D}}h(f(x;\boldsymbol{\theta},\boldsymbol{\lambda}),y)\\&s.t.\Sigma\boldsymbol{\lambda}\leq\rho\end{aligned}\tag{3} λVminH(λ)=E(x,y)Dh(f(x;θ,λ),y)s.tλρ(3)
式中, ρ \rho ρ是模型的整体压缩比, h ( ⋅ , ⋅ ) h(\cdot,\cdot) h(,)是评价指标,但事实上,评价指标和低秩分配都是非常耗时耗算力的,所以这篇论文提出样本高效贝叶斯优化(BO)来优化公式3。这里引入一个替代模型(例如高斯模型 N ( μ ( ⋅ ) , σ 2 ( ⋅ ) ) \mathcal{N}(\mu(\cdot),\sigma^2(\cdot)) N(μ(),σ2())),BO通过替代模型来估计目标函数 H ( λ ) H(\boldsymbol{\lambda}) H(λ),并且基于每一步的结果,更新后面一步的目标函数 H ( λ ) H(\boldsymbol{\lambda}) H(λ)。比如给出前t-1步 { λ 1 , ⋯ , λ t − 1 } \{\boldsymbol{\lambda}_{1},\cdots,\boldsymbol{\lambda}_{t-1}\} {λ1,,λt1}的目标函数值分别为 H t − 1 = [ H ( λ 1 ) , ⋯ , H ( λ t − 1 ) ] H_{t-1}=[H(\boldsymbol{\lambda}_{1}),\cdots,H(\boldsymbol{\lambda}_{t-1})] Ht1=[H(λ1),,H(λt1)],替代模型更新为 μ ( λ ) = k ( K + η 2 I ) − 1 H t − 1 σ 2 ( λ ) = k ( λ , λ ) − k T ( K + η 2 I ) − 1 k (4) \mu(\boldsymbol{\lambda})=\boldsymbol{k}(\boldsymbol{K}+\eta^{2}\boldsymbol{I})^{-1}H_{t-1}\\\sigma^{2}(\boldsymbol{\lambda})=k(\boldsymbol{\lambda},\boldsymbol{\lambda})-\boldsymbol{k}^{T}(\boldsymbol{K}+\eta^{2}\boldsymbol{I})^{-1}\boldsymbol{k}\tag{4} μ(λ)=k(K+η2I)1Ht1σ2(λ)=k(λ,λ)kT(K+η2I)1k(4)
式中 k ( ⋅ , ⋅ ) k(\cdot,\cdot) k(,)是一个核函数, ( k = k ( λ , λ i ) ) i ∈ [ t − 1 ] (\boldsymbol{k}=k(\boldsymbol{\lambda},\boldsymbol{\lambda}_{i}))_{i\in[t-1]} (k=k(λ,λi))i[t1] K = ( k ( λ i , λ j ) ) i , j ∈ [ t − 1 ] K = (k(\boldsymbol{\lambda}_{i},\boldsymbol{\lambda}_{j}))_{i,j\in[t-1]} K=(k(λi,λj))i,j[t1] η 2 I \eta^{2}I η2I是用来模拟噪声的白核函数,得到后验估计 H ( λ ) H(\boldsymbol{\lambda}) H(λ)(例如 H ( λ ) ∼ N ( μ ( λ ) , σ 2 ( λ ) ) H(\boldsymbol{\lambda})\sim{\mathcal{N}}(\mu(\boldsymbol{\lambda}),\sigma^{2}(\boldsymbol{\lambda})) H(λ)N(μ(λ),σ2(λ)))之后,BO通过采集函数确定下一次的比率分布,对于采集函数,可以用EI
α ( λ ) = E H ( λ ) [ max ⁡ { 0 , H ′ − H ( λ ) } ] λ t = a r g m a x λ α ( λ ) , (5) \begin{aligned}\alpha(\boldsymbol{\lambda})&=\mathbb{E}_{H(\boldsymbol{\lambda})}\left[\max\left\{0,H'-H(\boldsymbol{\lambda})\right\}\right]\\\boldsymbol{\lambda}_{t}&=\mathop{\mathrm{argmax}}_{\boldsymbol{\lambda}}\alpha(\boldsymbol{\lambda}),\end{aligned}\tag{5} α(λ)λt=EH(λ)[max{0,HH(λ)}]=argmaxλα(λ),(5)
式中, H ′ = min ⁡ i ∈ [ t − 1 ] H ( λ i ) H^{\prime}=\operatorname*{min}_{i\in[t-1]}H(\boldsymbol{\lambda}_{i}) H=mini[t1]H(λi)是指迄今为止观察到的最小值,然后BO选择了最好的EI的方向去搜索。在得到最优比 λ ∗ \lambda^{*} λ之后,可以确定分配 r i = ( 1 − λ i ) d 1 d 2 / ( d 1 + d 2 ) r_{i}=(1-\lambda_{i})d_{1}d_{2}/(d_{1}+d_{2}) ri=(1λi)d1d2/(d1+d2)

1.3 后训练

为了不使模型参数量反弹,文章使用压缩模型的子空间对模型微调。
Y = ( B A + Λ b B r ′ Λ d A r ′ ) X (6) Y=(BA+\Lambda_bB_{r'}\Lambda_dA_{r'})X\tag{6} Y=(BA+ΛbBrΛdAr)X(6)
式中, B r ′ ∈ R d 2 × r ′ B_{r^{\prime}}\in\mathbb{R}^{d_2\times r^{\prime}} BrRd2×r A r ′ ∈ R r ′ × d 1 A_{r^{\prime}}\in\mathbb{R}^{r^{\prime}\times d_1} ArRr×d1是修正后的 B B B A A A矩阵, Λ b \boldsymbol{\Lambda}_{b} Λb Λ d \boldsymbol{\Lambda}_{d} Λd是对角阵。


  1. 基于贝叶斯优化的自适应低秩分解 ↩︎

相关文章:

大模型压缩:基于贝叶斯优化的自适应低秩分解

1.方法 1.1 基于特征的高维空间低秩分解 PCA已经是老朋友了,每次一说主成分都会出现PCA。这篇文章1利用预训练数据的子集作为校准数据集 D c a l { x i } i 1 n \mathcal{D}_{cal}\{x_{i}\}_{i1}^{n} Dcal​{xi​}i1n​,首先用校准数据集的样本协方差…...

【Python函数编程实战】:从基础到进阶,打造代码复用利器

文章目录 🚋前言🚀一、认识函数🌈二、函数定义❤️三、函数调用⭐四、实参与形参💥1. 形式参数🚲2. 实际参数🔥1. 位置参数☔2. 关键字参数🎬3. 默认参数🔥4. 可变数量参数(不定长参…...

ZooKeeper 应用场景深度解析

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 目录 引言 1.…...

动手学深度学习(Pytorch版)代码实践 -计算机视觉-41目标检测数据集

41目标检测数据集 import os import pandas as pd import torch import torchvision import matplotlib.pylab as plt from d2l import torch as d2l# 数据集下载链接 # http://d2l-data.s3-accelerate.amazonaws.com/banana-detection.zip# 读取数据集 #save def read_data_b…...

2.2章节python的变量和常量

在Python中,变量和常量有一些基本的概念和用法,但需要注意的是,Python本身并没有内置的“常量”类型。然而,程序员通常会遵循一种约定,即使用全部大写的变量名来表示常量。 一、变量 在Python中,变量是一…...

豆包文科成绩超了一本线,为什么理科不行?

卡奥斯智能交互引擎是卡奥斯基于海尔近40年工业生产经验积累和卡奥斯7年工业互联网平台建设的最佳实践,基于大语言模型和RAG技术,集合海量工业领域生态资源方优质产品和知识服务,旨在通过智能搜索、连续交互,实时生成个性化的内容…...

Java多线程编程实践中的常见问题与解决方案

Java多线程编程实践中的常见问题与解决方案 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! **1. **引言 Java多线程编程是现代软件开发中不可或缺的一部分&a…...

WebStorm配置路径别名(jsconfig.json)

项目是 ViteVueTs 新建一个 jsconfig.json文件 {"compilerOptions": {"baseUrl": ".","paths": {"/*": ["./src/*"]}},"exclude": ["node_modules", "dist"] }然后在 vite.confi…...

[吃瓜教程]南瓜书第4章决策树

1.决策树的算法原理 从逻辑角度,条件判断语句的组合;从几何角度,根据某种准则划分特征空间; 是一种分治的思想,其最终目的是将样本约分约纯,而划分的核心是在条件的选择或者说是**特征空间的划分标准 ** …...

Redis 面试题完整指南:深度解析基础、进阶与高级功能

基础知识 1. 什么是Redis? Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,既可以用作数据库、缓存,也可以用作消息中间件。它支持多种数据结构,如字符串、哈希、列表、集合、…...

spring 枚举、策略模式、InitializingBean初使化组合使用示例

实现一个简单的文本处理系统。 在这个系统中,我们将定义不同类型的文本处理策略,比如大小写转换、添加前缀后缀等,并使用工厂模式来管理这些策略。 1 定义一个枚举来标识不同的文本处理类型 public enum TextProcessTypeEnum {UPPER_CASE,LO…...

嵌入式学习——硬件(IIC、ADC)——day56

1. IIC 1.1 定义(同步串行半双工通信总线) IIC(Inter-Integrated Circuit)又称I2C,是是IICBus简称,所以中文应该叫集成电路总线。是飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备…...

vCenter VXR01405C ALARM Certificate is about to expire

vCenter VXR01405C ALARM Certificate is about to expire 需要更新证书 步骤如下 ===vCenter=== root@vc [ ~ ]# for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo STORE $i; sudo /usr/lib/vmware-vmafd/b STORE MACHINE_SSL_CERT Alias : __MACHINE…...

安装和微调大模型(基于LLaMA-Factory)

打开终端(在Unix或macOS上)或命令提示符/Anaconda Prompt(在Windows上)。 创建一个名为lora的虚拟环境并指定Python版本为3.9。 https://github.com/echonoshy/cgft-llm/blob/master/llama-factory/README.mdGitHub - hiyouga/…...

使用docker搭建squid和ss5

docker run -d --name squid-container -e TZAsia/Shanghai -p 自定义端口并记得开放:3128 ubuntu/squid docker exec -it squid-container /bin/bash apt update && apt install vim # 修改 http_port 3128 为 http_port 0.0.0.0:3128 # 修改 http_access deny all 为…...

大数据面试题之Flink(1)

目录 Flink架构 Flink的窗口了解哪些,都有什么区别,有哪几种?如何定义? Flink窗口函数,时间语义相关的问题 介绍下Flink的watermark(水位线),watermark需要实现哪个实现类,在何处定义?有什么作用? Flink的…...

策略模式、工厂模式和模板模式的应用

1、策略模式、工厂模式解决if else Cal package com.example.dyc.cal;import org.springframework.beans.factory.InitializingBean;public interface Cal extends InitializingBean {public Integer cal(Integer a, Integer b); }Cal工厂 package com.example.dyc.cal;impo…...

在postman中调试supabase的API接口

文章目录 在supabase中获取API地址和key知道它的restfull风格在postman中进行的设置1、get请求调试2、post新增用户调试3、使用patch更新数据,不用put!4、delete删除数据 总结 在supabase中获取API地址和key 首先登录dashboard后台,首页- 右…...

微信小程序毕业设计-英语互助系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…...

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第49课-机器人自动跳舞

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第49课-机器人自动跳舞 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎…...

龙虎榜——20250610

上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...