【代码大模型】Compressing Pre-trained Models of Code into 3 MB论文阅读

news2024/11/18 5:17:48

Compressing Pre-trained Models of Code into 3 MB
key word: code PLM, compression, GA算法

论文:https://dl.acm.org/doi/pdf/10.1145/3551349.3556964
代码:https://github.com/soarsmu/Compressor.git

【why】
1.问题描述: code LLM 在广泛使用过程中存在障碍,模型占内存大+在个人设备上运行缓慢
2. Idea的起源:vscode建议发布 IDE组件 or 编辑器插件 给用户的开发者,将组件大小限制为50MB,3MB的模型为最佳模型大小,且延时应被降至0.1s
3. 现有的方法存在的问题:
model pruning ===> 无法将codeBERT和GraphCodeBERT压缩至50MB以下
model quantization ===> 压缩后的模型在推理上并不快或消耗更少的CPU内存,且在运行时需要专门的硬件
knowledge distillation ===> 知识蒸馏训练一个小的student model去模仿一个大的teacher model,但是小模型不能有效的从大模型中吸收知识
4. 解决上述问题,获得一个合适的模型结构的挑战:
(1)寻找合适的体系结构本质上是一个搜索空间巨大的组合问题
(2)通过训练和测试来评估每个可能的候选模型在计算上是不可行的,从而难以指导搜索

【what】
提出了 Compressor,通过遗传算法将PLM压缩成极小的模型,而性能损失忽略不计。
利用遗传算法搜索,知识蒸馏找到小模型,利用预训练模型中的知识对小模型训练
在这里插入图片描述

  1. 问题搜索空间
    调整网络层数( L ),网络层的维度( H ),注意力头的数量( A ),前馈层的维度( D )和词汇量( V )
    在这里插入图片描述
  2. GA 算法指导模型简化
    在这里插入图片描述
    (1)Chromosome Representation => 通过随机设置其中每个键值对的值
    (2)Fitness Function => 衡量候选目标的质量。在这里插入图片描述
    使用 GFLOPs 表示计算模型需要进行前向传递的乘法和累加操作的次数,更大的 GFLOPs 意味着模型具有更大的capacity。
    T 表示给定的模型大小,ts 表示 微小模型的尺寸。| ts-T | 是当前搜索模型的模型尺寸与目标模型尺寸的差值。
    (3)Operators & Selection
    算子选择使用算法:crossover (r的概率) & mutation (1-r的概率)
  3. 使用 unlabeled 数据进行数据蒸馏
    应用特定于下游任务的蒸馏方法 Distilling the Knowledge in a Neural Network 。将 unlabeled data 输入到PLM中,收集 output probability values,接着训练获得的 tiny model。
    训练的loss函数为:
    在这里插入图片描述
    n表示训练样本数,pi是大模型输出,qi是小模型输出

【how】
1.实验配置
硬件环境: Ubuntu 18.04 server with an Intel Xeon E5-2698 CPU, 504GB RAM, and 8 Tesla P100 GPUs
模型: CodeBert and GraphCodeBert
下游任务和数据集:
Vulnerability Prediction ==> Devign,是CodeXGLUE中的一部分
Clone Detection ==> BigCloneBench
GA算法: 保存50个候选模型,crossover rate = 0.6,迭代次数为 100
衡量指标: computational cost [GFLOPS]
baseline: 基于特定任务的知识蒸馏方法BiLSTMsoft,其能将模型压缩至7.5MB左右
2.实验结果
(1)精度下降 + 模型缩小率
在这里插入图片描述
(2)延时比较
在这里插入图片描述
(3)压缩预训练模型所需使用的时间
在这里插入图片描述
(4)模型大小与模型精度的关系
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文《基于现实迷宫地形的电脑鼠设计》深度分析——智能车驱动算法

论文概述 《基于现实迷宫地形的电脑鼠设计》是由吴润强、庹忠曜、刘文杰、项璟晨、孙科学等人于2023年发表的一篇优秀期刊论文。其针对现阶段电脑鼠计算量庞大且不适用于现实迷宫地形的问题,特基于超声波测距与传统迷宫算法原理,设计出一款可在现实迷宫地…

PG-DERN 解读:少样本学习、 双视角编码器、 关系图学习网络

本文提出了一种用于 分子属性预测 的 少样本学习(Few-shot Learning) 模型—— PG-DERN,该模型结合了 双视角编码器(Dual-view Encoder) 和 关系图学习网络(Relation Graph Learning Network) 双…

w039基于Web足球青训俱乐部管理后台系统开发

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…

H3C NX30Pro刷机教程-2024-11-16

H3C NX30Pro刷机教程-2024-11-16 ref: http://www.ttcoder.cn/index.php/2024/11/03/h3c-nx30pro亲测无需分区备份 路由器-新机初始化设置路由器登录密码telnet进入路由器后台 刷机上传uboot到路由器后台在Windows环境下解压后的软件包中打开 tftpd64.exe在NX30Pro环境下通过以…

[2024最新] java八股文实用版(附带原理)---java集合篇

介绍一下常见的list实现类? ArrayList 线程不安全,内部是通过数组实现的,继承了AbstractList,实现了List,适合随机查找和遍历,不适合插入和删除。排列有序,可重复,当容量不够的时候…

python 异步编程之协程

最近在学习python的异步编程,这里就简单记录一下,免得日后忘记。 首先,python异步实现大概有三种方式,多进程,多线程和协程;多线程和多进程就不用多说了,基本上每种语言都会有多进行和多线程的…

20241112-Pycharm使用托管的Anaconda的Jupyter Notebook

Pycharm使用托管的Anaconda的Jupyter Notebook 要求 不要每次使用 Pycharm 运行 Jupyter 文件时都要手动打开 Anaconda 的 Jupyter Notebook 正文 pycharm中配置好会自动安装的,有的要自己配置 Pycharm中配置 文件 ——> 设置 ——> 语言和框架……&am…

Android 无签名系统 debug 版本APK push到设备引起的开机异常问题分析(zygote进程)

问题背景 前置操作: 替换原system/priv-app 目录下已有的应用包未未签名的debug版本,然后重启。 现象: 无法正常开机,卡在开机动画,并且pm没有起来,因为执行adb install 命令是返回“cmd: Cant find se…

【学习心得】数据分析三剑客跟学Gitee仓库

之前,自己在学习数据分析过程中的学习方法和思路,将那些摸索与实践中的心得体会分享出来,能够得到大家的喜欢、点赞我非常高兴,谢谢大家的支持!这些正面的反馈对我来说,不仅是莫大的鼓励,更是持…

Vue 批量注册组件实现动态组件技巧

介绍 Vue 动态组件的应用场景很多,可应用于动态页签,动态路由等场景,其核心原理是批量注册。在Vue2和Vue3中实现原理相同,只是语法略有差异。 Vue2 实现 基于 webpack require.context() 是webpack提供的一个自动导入的API 参数1:加载的文件目录 参数2&#xff…

AndroidStudio-Activity的生命周期

一、Avtivity的启动和结束 从当前页面跳到新页面,跳转代码如下: startActivity(new Intent(源页面.this,目标页面.class)); 从当前页面回到上一个页面,相当于关闭当前页面,返回代码如下: finis…

DB-GPT系列(四):DB-GPT六大基础应用场景part1

一、基础问答 进入DB-GPT后,再在线对话默认的基础功能就是对话功能。这里我们可以和使用通义千问、文心一言等在线大模型类似的方法, 来和DB-GPT进行对话。 但是值得注意的是,DB-GPT的输出结果是在内置提示词基础之上进行的回答&#xff0c…

对PolyMarket的突袭

一天清晨六点,美国联邦调查局的探员冲进了纽约市的一间公寓。这间公寓的主人是26岁的Shane Copeland,一个有着凌乱头发的年轻人,也是一个加密货币狂热者。他运营着一个名为PolyMarket的网站——一个允许用户YZ全球事件结果的平台,…

DB_redis数据一致性(三)

前言 以mysql_redis 为例 介绍 数据一致性 1:数据一致行(单进程/单线程) 这个没什么说的,都是串行 2:数据一致行(多进程/多线程) 读的逻辑,先读缓存,缓存没有的话,就读数据库,然后取出数据后…

Jdbc学习笔记(三)--PreparedStatement对象、sql攻击(安全问题)

目录 (一)使用PreparedStatement对象的原因: 使用Statement对象编写sql语句会遇到的问题 ​编辑 (二)sql攻击 1.什么是sql攻击 2.演示sql攻击 (三)防止SQL攻击 1.PreparedStatement是什么 …

对称加密算法DES的实现

一、实验目的 1、了解对称密码体制基本原理 2、掌握编程语言实现对称加密、解密 二、实验原理 DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密…

【Hadoop实训】Hive 数据操作②

延续上一篇文章,不懂的宝子们请看以下链接: 【Hadoop实训】Hive 数据操作①-CSDN博客 目录 一、Group by 语句 (1)、计算emp表每个部门的平均工资 (2)、计算emp表每个部门中每个岗位的最高工资 二、Having 语句 (1)、求每个部门的平均工资 (2)、求每个…

centos7 升级openssl 与升级openssh 安装卸载 telnet-server

前言: 服务器被安全扫描,扫出了漏洞需要修复,根据提示将openssh升级为9.8p1的版本,同时需要升级openssl,但是升级openssh可能会导致ssh连接失败,从而无法继续操作,特别是远程机房尤为危险&#…

Notepad++的完美替代

由于Notepad的作者曾发表过可能在开发者代码中植入恶意软件的言论,他备受指责。在此,我向大家推荐一个Notepad的完美替代品——NotepadNext和Notepad--。 1、NotepadNext NotepadNext的特点: 1、跨平台兼容性 NotepadNext基于Electron或Qt…

大语言模型LLM综述

一、LM主要发展阶段 1.1、统计语言模型SLM 基于统计学习方法,基本思想是基于马尔可夫假设HMM建立词概率预测模型。如n-gram语言模型 1.2、神经语言模型NLM 基于神经网络来做词的分布式表示。如word2vec模型 1.3、 预训练语言模型PLM 预训练一个网络模型来做词表…