模型压缩笔记2:模型蒸馏

模型压缩

深度神经网络的缺点是计算量太大,研究人员对此的优化有两个方面

  1. 高性能硬件加速
  2. 模型压缩

模型压缩方式

  1. 剪枝:删除冗余权重
  2. 蒸馏:大模型 --> 小模型
  3. 量化:高精度 --> 低精度
    注意:三种方式建议三选一

常用程度:量化 > 蒸馏 > 剪枝
量化:需要一定的硬件支持

模型蒸馏(Model Distillation)

1. 原理

  • 模型蒸馏是一种将大型、复杂模型(教师模型)的知识转移到小型、简单模型(学生模型)上的技术。
  • 模型蒸馏是将一个复杂的大模型(通常称为教师模型)压缩成一个较小的模型(称为学生模型),通过引导学生模型模仿教师模型的输出(通常是教师模型的软标签)来训练学生模型。软标签包含了更多的类别信息,使得学生模型能够学习到教师模型的知识,而不仅仅是硬标签(即地面真实标签)。
  • 蒸馏过程:
    • 知识转移: 教师模型先进行训练,然后在推理阶段生成软标签。学生模型在训练时不仅学习硬标签,还学习教师模型生成的软标签。
    • 损失函数: 学生模型的损失函数通常包含两部分:硬标签的交叉熵损失和软标签的交叉熵损失。软标签通常使用更高的温度参数来平滑输出分布。
  • 蒸馏这个过程通常包括以下步骤:
    • 训练教师模型:首先训练一个大型、高精度的模型。
    • 生成软标签:使用教师模型生成软标签(即类别的概率分布),这些软标签包含了教师模型关于数据分布的信息。
    • 训练学生模型:学生模型同时学习真实标签和软标签,通过这种方式,学生模型能够学习到教师模型的知识。

2. 应用

  • 部署在资源受限环境中: 例如移动设备或边缘设备,蒸馏模型可以在保持较好性能的同时显著减少计算资源的消耗。
  • 多任务学习: 通过蒸馏,学生模型可以从多个教师模型中学习不同的任务,这样学生模型可以同时执行多项任务。
  • 模型压缩: 在实际应用中,将大模型压缩成小模型而保持性能不显著下降,对于降低存储需求和提高推理速度非常有利。在不牺牲太多性能的情况下减小模型大小,便于在移动和嵌入式设备上部署。
  • 模型加速:小型模型通常具有更快的推理速度,适用于需要快速响应的应用。

3. 特点

  • 知识转移:学生模型能够学习到教师模型的泛化能力。
  • 性能保留:即使学生模型较小,也能在一定程度上保持教师模型的性能。
  • 灵活性:学生模型的设计可以更加灵活,以适应不同的应用场景。

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

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

相关文章

【Ubuntu 24.04】How to Install and Use NVM

参考 下载 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash激活 Activate NVM: Once the installation script completes, you need to either close and reopen the terminal or run the following command to use nvm immediately. exp…

【优选算法】位运算

目录 常见位运算总结1、基础位运算2、给一个数n,确定它的二进制位的第x位上是0还是13、将一个数n的二进制位的第x位改成14、将一个数n的二进制位的第x位改成05、位图的思想6、提取一个数n的二进制位中最右侧的17、将一个数n的二进制位中最右侧的1变为08、位运算的优…

systemverilog约束中:=和:/的区别

“x dist { [100:102] : 1, 200 : 2, 300 : 5}” 意味着其值等于100或101或102或200或300其中之一, 其权重比例为1:1:1:2:5 “x dist { [100:102] :/ 1, 200 : 2, 300 : 5}” 意味着等于100,101,102或200,或300其…

06_数据类型

数据类型 数据类型分类 JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbol 类型的值和第八种 BigInt类型,当前课程暂不涉及) 据类型分类 原始类型(基础类型) var age = 20, var name = 尚学堂"; var le…

芯盾时代的身份安全产品体系

芯盾时代具备全栈零信任身份安全产品和服务能力: 芯盾时代IAM能够适配大企业用户复杂的应用访问需求,提供云端、互联网端、企业内网全场景的身份访问安全接入能力; 芯盾时代IAM能够理解大企业用户的身份差异,为内部用户、合作方和…

【Db First】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列 &#x1f…

shell综合

声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…

Ubutuns服务器搭建与维护

1.靶机搭建 首先,安装 Apache2 作为 Web 服务器: sudo apt install apache2 安装完成后,可以启动 Apache 服务并确保它开机自启: sudo systemctl start apache2 sudo systemctl enable apache2然后,你可以通过访问…

003 LVGL相关文件分析

LVGL移植相关文件: 显示设备接口文件 lv_port_disp_templ.c/输入设备接口文件 lv_port_indev_templ.c/h 裁剪、配置文件 lv_conf.h lv_conf.h文件内容介绍: 对应中文翻译版本: #if 1 /* 设置为1,以启…

阿里巴巴即将超越OpenAI的o1?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Web自动化测试教程详解(附文档一份)

一、什么是web自动化测试 自动化(Automation)是指机器设备、系统或过程(生产、管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测、信息处理、分析判断、操纵控制,实现预期的目…

外包干了两年,快要废了。。。

先说一下自己的情况,普通本科,曾在外包干了2年多的功能测试,再加上大环境不好,那时我整个人心惊胆战的,怕自己卷铺盖走人了,所以当时我感觉自己不能够在这样蹉跎下去了,长时间呆在一个舒适的环境…

乌班图单机(不访问外网)部署docker和服务的方法

面向对象:Ubuntu不能访问外网的机子,部署mysql、redis、jdk8、minio 过程: 1、安装docker(照着图去这里找对应的下载下来https://download.docker.com/linux/static/stable/),将7个docker官网下载的文件下载下来后,传上去服务器随便一个文件夹或者常用的opt或者/usr/lo…

【线程】Java多线程代码案例(2)

【线程】Java多线程代码案例(2) 一、定时器的实现1.1Java标准库定时器1.2 定时器的实现 二、线程池的实现2.1 线程池2.2 Java标准库中的线程池2.3 线程池的实现 一、定时器的实现 1.1Java标准库定时器 import java.util.Timer; import java.util.Timer…

pyspark实现基于协同过滤的电影推荐系统

最近在学一门大数据的课,课程要求很开放,任意做一个大数据相关的项目即可,不知道为什么我就想到推荐算法,一直到着手要做之前还没有新的更好的来代替,那就这个吧。 推荐算法 推荐算法的发展由来已久,但和…

log4c库使用

log4c库 介绍 log4c 是一个 C 语言实现的日志库,它是 log4j(Java 语言的日志框架)的 C 语言版本,旨在为 C 语言应用程序提供灵活、可配置的日志功能。log4c 提供了丰富的日志功能,包括日志级别、日志输出目标、日志格…

Llmcad: Fast and scalable on-device large language model inference

题目:Llmcad: Fast and scalable on-device large language model inference 发表于2023.09 链接:https://arxiv.org/pdf/2309.04255 声称是第一篇speculative decoding边缘设备的论文(不一定是绝对的第一篇),不开源…

Leetcode 每日一题 36.有效的数独

目录 问题描述 输入输出格式 算法思路 过题图片 代码实现 题目链接 复杂度分析 问题描述 给定一个 9x9 的数独棋盘,我们需要判断棋盘上已填入的数字是否有效。根据数独的规则,有效性需要满足以下条件: 数字 1-9 在每一行只能出现一次…

深入浅出UART驱动开发与调试:从基础调试到虚拟驱动实现

往期内容 本专栏往期内容:Uart子系统 UART串口硬件介绍深入理解TTY体系:设备节点与驱动程序框架详解Linux串口应用编程:从UART到GPS模块及字符设备驱动 解UART 子系统:Linux Kernel 4.9.88 中的核心结构体与设计详解IMX 平台UART驱…

韦东山stm32hal库--定时器喂狗模型按键消抖原理+实操详细步骤

一.定时器按键消抖的原理: 按键消抖的原因: 当我们按下按键的后, 端口从高电平变成低电平, 理想的情况是, 按下, 只发生一次中断, 中断程序只记录一个数据. 但是我们使用的是金属弹片, 实际的情况就是如上图所示, 可能会发生多次中断,难道我们要记录3/4次数据吗? 答:按键按下…