[ICLR 2020] Reducing Transformer Depth on Demand with Structured Dropout

news2024/11/25 10:42:11

Contents

  • Introduction
  • Training Transformers with Random Structured Pruning
    • Randomly Dropping Structures at Training Time
    • Pruning at Inference Time
  • Experiments
  • References

Introduction

  • 作者提出了一种新的 structural pruning 方法 LayerDrop,通过在训练时随机丢弃 Transformer block 来稳定模型训练过程 (有利于训练更深的模型),并且在推理时直接丢弃掉一些层来加快推理速度,这种推理加速方法无需进行额外的微调,并且不会损失过多的模型精度

Training Transformers with Random Structured Pruning

在这里插入图片描述

Randomly Dropping Structures at Training Time

  • 作者提出在训练时使用 LayerDrop (类似于 dropout) 随机丢弃 Transformer block. 这可以看作是一种正则化方法,提高模型泛化性,并且还使得推理时可以随机裁剪掉一些层来加速推理速度

Pruning at Inference Time

  • Selecting Layers to Prune. 使用 LayerDrop 进行训练可以让模型在推理时对以 Transformer block 为单位的结构化剪枝更加鲁棒,下面作者给出了 3 种推理时的结构化剪枝策略,即直接丢弃掉一些层而无需进行额外的微调。实验表明,Every Other strategy 就可以在许多任务和设置下取得不错的效果,而 Search on Valid 和 Data Driven Pruning 只能带来 marginal gains.
    • Every Other: 等间隔裁剪。假如裁剪率为 p p p,则裁剪所有深度为 d d d ( d  mod  ⌊ 1 p ⌋ = 0 d\text{ mod }\lfloor\frac{1}{p}\rfloor=0 d mod p1=0) 的层
    • Search on Valid: 把要裁剪的层当作超参,用验证集去搜索最佳裁剪策略,但这种方法计算量很大并且容易对验证集过拟合
    • Data Driven Pruning: 直接在训练时学得每个 block 的 drop rate. 具体而言,作者将 block 输出的激活值经过非线性函数和 softmax 后得到 p d p_d pd,并且约束所有层的 p d p_d pd 均值为预设的裁剪率 p p p. 推理时选择 top-k highest scoring layers 进行前向传播即可
  • Setting the drop rate for optimal pruning. 假如想裁剪 r r r 层,则训练时的最优 drop rate p p p (类似于 dropout 里的 dropout ratio) 为
    在这里插入图片描述作者在实验中设置 p = 0.2 p = 0.2 p=0.2,并且当推理速度要求特别高时作者推荐使用 p = 0.5 p = 0.5 p=0.5

Experiments

Main Results

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


Ablation Study

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

References

  • Fan, Angela, Edouard Grave, and Armand Joulin. “Reducing transformer depth on demand with structured dropout.” (ICLR, 2020).
  • code: https://github.com/facebookresearch/fairseq/tree/main/examples/layerdrop

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

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

相关文章

FastDFS集群搭建

简介 FastDFS是什么?我们这里可以看一下度娘的解释。FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量…

Python base64模块加密解密

一、为何使用base64加密解密 为了安全机制的系统,在用户登录的时候,会采用一系列措施保护用户信息,防止程序被攻击,比如:将用户输入的密码加密处理,在控制台看请求接口看到的密码是加密过的密码&#xff0c…

前端 Chrome 插件推荐

1.Ajax Interceptor 场景: 1.前端本地在开发,后端接口还没好,可以提前mock数据,并且真实的模拟网络请求。可以对代码不侵入的方式,提高编码效率。后面真实联调速度就会快很多。 2.当你参与项目的一部分开发的时候&a…

WPF实现PasswordBox切换明密功能

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

生产mysql遇到kill不掉的sql的解决方法

一、问题描述 今天上线,生产mysql有个2700万数据的大表lt_integral_detail_info,准备给这个表加字段、加索引; 执行加字段加索引的命令比较费时,结果这时有人对这个表执行了多个select count(*)操作,导致直接把Navic…

SQL优化(5):limit优化

在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。 我们一起来看看执行limit分页查询耗时对比: 找一个有1000W数据量的表进行测试分析 查询前10条数据分页,耗时0.03秒 查询100…

【力扣】二叉树的分层遍历1和2

二叉树的分层遍历1 链接:二叉树的分层遍历1: 首先,我们需要知道什么是二叉树的层序遍历。二叉树的层序遍历是一种按照树的层次从上到下,从左到右访问每个节点的方法。例如,对于下面这棵二叉树: 1/ \2 3…

Linux_红帽8学习笔记分享_7(Crontab计划任务+NTP时间同步服务器)

Linux_红帽8学习笔记分享_7(Crontab计划任务NTP时间同步服务器) 文章目录 Linux_红帽8学习笔记分享_7(Crontab计划任务NTP时间同步服务器)1. 系统时间1.1查看系统时间1.2设置系统时间 2.周期性计划任务2.1认识周期性任务服务2.2寻找定时文件的配置文件2.3用户定时任务的格式2.4…

行业方案|智能网联汽车数据安全治理框架

近年来,信息技术的快速发展,加快了汽车产业的变革。与此同时,随着智能化、网联化的推进,汽车的数据安全问题也日益凸显。当下,如何保障数据安全,成为影响智能汽车产业健康发展的关键问题。 4月18日&#x…

Linux Ansible创建任务并执行

目录 通过add-hoc执行anbise任务 通过Playbook剧本方式执行任务 Playbook包含的常用对象 Yaml语法 对Yaml格式自动对齐 Playbook语法检测与执行 Playbook任务实施 Playbook特权升级 Playbook常用模块 软件包管理模块 用户管理模块 存储模块管理 文件操作相关模块 …

GPT-3 论文阅读笔记

GPT-3模型出自论文《Language Models are Few-Shot Learners》是OpenAI在2020年5月发布的。 论文摘要翻译:最近的工作表明,通过对大量文本进行预训练,然后对特定任务进行微调(fine-tuning),在许多NLP任务和基准测试上…

TYPE-C口是怎么样的接口?它有什么功能强大的地方?

C口指的是USBType-C接口。USBType-C,又称USB-C,是一种通用串行总线(USB)的硬件接口形式,外观上最大特点在于其上下端完全一致与Micro-USB相比不再区分USB正反面。 认识了Type-C的外观之后,我们来一起看一下它是怎么产生的。早在20…

QT with OpenGL(IBL-镜面反射)

文章目录 预滤波generate Mipmap获取每一层级的预滤波图prefilterMap Shader重要性采样效果展示 预过滤卷积的亮点解决方法代码解析首先得确保我们被采样的环境贴图有mipmap贴图通过计算决定使用那一层mipmap值 效果 预计算BRFD生成LUT图 IBL Shading渲染结果与教材的不同最终结…

(C语言版)力扣(LeetCode)189. 轮转数组官方3种解法分析

轮转数组 题目第一种解法:额外数组第二种解法:环状替换第三种解法:翻转数组结语 题目 题目链接:轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: num…

实战项目:手把手带你实现一个高并发内存池

项目介绍 1.这个项目做的是什么? 当前项目是实现一个高并发的内存池,他的原型是google的一个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替…

Java——字符串的排列

题目链接 牛客网在线oj题——字符串的排列 题目描述 输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 数…

【SpringMVC】| SpringMVC 入门

目录 一:SpringMVC 入门 1. SpringMVC简介 2. SpringMVC的优点 3. SpringMVC的优化 4. SpringMVC执行的流程 5. 基于注解的SpringMVC程序 图书推荐 一:《Spring Boot进阶:原理、实战与面试题分析》 二:《深入理解Java虚拟…

19.网络爬虫—照片管道

网络爬虫—照片管道 Scrapy基础Scrapy运行流程原理Scrapy的工作流程 scrapy照片管道实战演示设置图片路径配置爬虫解析数据运行爬虫查看文件 后记 前言: 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Python领域…

C++ Primer笔记——排列算法(next_permutation、prev_permutation、is_permutation)

目录 概述 ①next_permutation ②prev_permutation ③is_permutation 概述 页数&#xff1a;P778 &#xff08;A.2.7 排列算法&#xff09; 头文件&#xff1a;<algorithm> 函数名&#xff1a;next_permutation & prev_permutation & is_permutation C为…

信息安全复习七:报文鉴别与哈希函数

一、章节梗概 1.安全服务与安全需求 2.报文鉴别的安全需求 3.对报文加密来实现报文鉴别 4.报文鉴别码 5.哈希函数 6.生日攻击 二、安全服务与安全需求 2.1 引入 通信保密可以概况所有的安全需求吗? 不能&#xff0c;信息安全需求有很多种&#xff0c;通信保密只是一种安全…