【Efficient AIGC】SiTo: Similarity-based Token Pruning (AAAI-2025)
文章目录
- SiTo: Training-Free and Hardware-Friendly Acceleration for Diffusion Models via Similarity-based Token Pruning
- 背景
- 介绍
- 方法
- 结果
- 消融


文章目录
- SiTo: Training-Free and Hardware-Friendly Acceleration for Diffusion Models via Similarity-based Token Pruning
- 背景
- 介绍
- 方法
- 结果
- 消融
SiTo: Training-Free and Hardware-Friendly Acceleration for Diffusion Models via Similarity-based Token Pruning
Paper: Training-Free and Hardware-Friendly Acceleration for Diffusion Models via Similarity-based Token Pruning
Code: https://github.com/EvelynZhang-epiclab/SiTo/tree/main
背景
随着生成式模型,尤其扩散模型(Diffusion Models)的飞速发展,它们在图像生成、艺术创作、超分辨率等领域展现了巨大的潜力。然而,这些模型通常伴随着极高的计算成本,导致在边缘设备和实时应用中的部署面临巨大挑战。针对这一问题, SiTo(Similarity-based Token Pruning)方法应运而生,它不仅大幅度加速了扩散模型的推理速度,还在不牺牲生成质量的情况下,显著降低了计算资源的消耗。
介绍
SiTo:加速扩散模型的创新解决方案
传统上,研究者们通过减少采样步数或压缩去噪网络等方式来降低扩散模型的计算开销。然而,这些方法往往在一定程度上牺牲了生成质量。SiTo提出了一种全新的思路,它通过引入基础令牌 (Base Token) 概念,自适应地剪去冗余的令牌,从而在保证高质量生成结果的同时实现显著加速。
SiTo的三大核心创新
(I) 最大相似性:基础令牌被选为一组与所有其他令牌具有最高相似性的令牌。此外,在选择基础令牌后,进一步选择与基础令牌相似度最高的令牌作为剪枝令牌。这个选择基础令牌和剪枝令牌的策略确保了高相似性,即基础令牌和剪枝令牌之间的差异较小,从而进一步最小化从基础令牌恢复剪枝令牌时的误差。
(II) 均匀空间分布:经典的图像分析研究表明,图像同一区域的图块携带相似的信息,这意味着在空间维度上相邻的令牌可能具有相似的表示,因此,用空间相邻的令牌来恢复剪枝令牌比使用远离的令牌更合适。因此,并不是直接从图像中的所有令牌中选择基础令牌,而是在图像的每个局部区域中选择一个基础令牌,以保证基础令牌在图像的不同空间位置上均匀分布。此外,由于基础令牌不会被剪枝,这种方案还确保了每个区域至少有一个令牌没有被剪枝,从而避免了令牌剪枝引入的误差过于集中。
(III) 带有随机性的选择:前两条原则有效地最小化了单个去噪步骤中令牌剪枝
带来的恢复误差。然而,扩散模型的采样过程包含多个去噪步骤,相邻的步骤具有相似的令牌表示。因此,基础令牌和剪枝令牌的选择在相邻时间步中可能非常相似,甚至是相同的。此外,如下图(b)所示,由于剪枝令牌是通过直接复制其最相似的基础令牌来恢复的,这些剪枝令牌往往会在所有后续的去噪步骤中保持较高的相似性,因此它们很可能在几乎所有的时间步中都被剪枝。这种极度不平衡的令牌剪枝可能会导致生成质量的显著下降。为了解决这个问题,提出在不同令牌的相似度上添加高斯噪声,在基础令牌选择过程中引入随机性。如下图(a)所示,这种方法将相邻两个时间步中剪去相同令牌的比例从97%降低到72%,有效避免了不平衡剪枝问题。

SiTo的显著优势
- 无损加速,内存压缩
SiTo的应用效果显著,尤其在COCO30K和ImageNet数据集上,展示了强大的加速效果和内存压缩能力。例如,在Stable Diffusion v1.5中,应用SiTo方法后,加速达1.9倍,同时实现了2.7倍的内存压缩,并且FID值降低了1.33,不仅加速了推理过程,还提升了生成质量。 - 硬件友好,低计算开销
SiTo方法采用的操作非常低成本,不会增加额外的内存占用,且计算复杂度极低,非常适合在GPU等硬件平台上并行计算。这使得SiTo在边缘设备和实时互动应用中的应用具有广泛的前景,尤其是对于需要快速响应的应用场景,SiTo无疑是一种理想的加速方案。 - 训练无关,数据无依赖
与传统的加速方法不同,SiTo完全不依赖训练数据或校准数据,它不需要额外的训练步骤和调整,因此具有极强的通用性和即插即用性。这一特点使得SiTo可以在不同的数据集、不同的模型以及不同的采样设置下自由应用,极大地拓展了其实际应用的范围。
方法

SiTo的方法流程:
- 基础令牌选择:
计算所有令牌之间的余弦相似度。对于每个令牌,将它与所有其他令牌的相似度求和,得到该令牌的相似度得分(SimScore)。接着,向相似度得分中添加高斯噪声,以引入随机性,防止在不同时间步中选择相同的基础令牌和剪枝令牌。最后,选择在图像区域中具有最高噪声相似度得分(Noise SimScore)的令牌作为基础令牌。 - 剪枝令牌选择:
选择与基础令牌最相似的令牌作为剪枝令牌。 - 剪枝令牌恢复:
将未剪枝的令牌输入到神经网络层,然后通过从最相似的基础令牌中复制来恢复剪枝令牌。
结果
-
视觉效果:SiTo 保留更多的图像细节,更加对齐文本提示,以及和原始模型生成的结果更吻合

-
数值结果
(1)在ImageNet数据集上的评估
将ToMeSD和SiTo应用于SD v1.5和SD v2。表1显示,SiTo在所有加速比设置下相比ToMeSD具有更低的FID得分、更高的加速比和更低的内存使用。在剪枝比率为0.7的情况下,SiTo在硬件上实现了1.9倍的加速和2.70倍的内存压缩,同时FID得分减少了1.33。
(2)在COCO30K数据集上的评估
为了进一步验证SiTo的有效性,在COCO30K数据集上进行了实验。如表1所示,SiTo在SD v1.5上实现了1.75倍的加速,并取得了11.17的FID得分;在SD v2上,SiTo实现了1.65倍的加速,FID得分为11.67,在加速和图像质量方面始终优于ToMeSD。

消融
剪枝令牌选择方法的消融实验
对以下六种基础令牌选择方法进行了消融实验:
- 始终选择 2 × 2 2 \times 2 2×2图块中的左上角令牌
- 在全局范围内随机选择25%的令牌
- 在全局范围内选择具有最高SimScore的令牌
- 在 2 × 2 2 \times 2 2×2图块中随机选择一个令牌
- 在 2 × 2 2 \times 2 2×2图块中选择具有最高SimScore的令牌
- 向SimScore添加高斯噪声后,选择 2 × 2 2 \times 2 2×2图块中具有最高分数的令牌(SiTo的默认设置)
如下表所示,实验得出了两个关键结论:

- 时间分布均匀性:
基础令牌应该在不同的去噪时间步之间保持均匀分布。策略I,即每个时间步始终选择相同的令牌,表现最差。策略VI优于策略V,因为在策略VI中引入的随机噪声使得不同时间步的基础令牌选择有所变化。类似的推理解释了为什么策略II优于策略III。
此外,还对策略V和策略VI进行了视觉分析。分析结果表明,引入噪声可以防止某些令牌在多个时间步中被反复剪枝,从而使得图像呈现出更丰富的细节。例如,下图a中显示,使用策略VI生成的图像草地纹理更为精细,花朵的数量也有所增加。

- 空间分布均匀性:
基础令牌还应保持空间上的均匀分布。策略IV、策略
V和策略VI的表现优于策略II和策略III,这表明在局部图块内选择基础令牌要比全局选择效果更好。这可能是因为全局选择会导致基础令牌集中在某些区域,从而在其他区域造成密集剪枝,导致信息损失难以恢复。
剪枝 vs. 合并
为了验证的剪枝操作,将剪枝操作替换为类似于ToMeSD的平均合并策略。如图5a所示,剪枝操作始终能够获得更低的FID得分。较高的令牌剪枝比率迫使基础令牌重建多个令牌,导致显著的误差和与真实分布的偏差,从而降低了图像质量。
不同图块大小的影响
在选择基础令牌的过程中,将特征划分为大小为 s × s s \times s s×s的图块,在每个图块内选择一个令牌作为基础令牌。随着图块大小的增大,基础令牌的比例相应减少。如图5b所示,尽管较大的图块大小仅能带来微小的加速提升,但它们会导致FID值的显著增加。

使用较少采样时间步的性能评估
评估了在较少采样时间步下,ToMeSD和SiTo的表现。如下图所示,SiTo在不同的时间步数下,始终在图像质量和加速效果上超过ToMeSD,这表明SiTo与DDIM等扩散加速方法是正交的。

SiTo在各模块中的应用
SiTo可以应用于所有模块,包括自注意力(Self-Attention)、交叉注意力(Cross-Attention)和前馈网络(Feed-Forward Network)。探讨了SiTo在各模块中的应用,以优化加速和图像质量之间的平衡。下表的结果显示,将SiTo应用于交叉注意力(CA)和前馈网络(MLP)仅带来了最小的加速收益,同时影响了图像生成质量。

此外,尽管SiTo和ToMeSD可以应用于更深的UNet块,下图显示,应用于更深的Unet层会导致生成质量的下降。

相关文章:
【Efficient AIGC】SiTo: Similarity-based Token Pruning (AAAI-2025)
文章目录 SiTo: Training-Free and Hardware-Friendly Acceleration for Diffusion Models via Similarity-based Token Pruning背景介绍方法结果消融 文章目录 SiTo: Training-Free and Hardware-Friendly Acceleration for Diffusion Models via Similarity-based Token Prun…...
数据标注开源框架 Label Studio
数据标注开源框架 Label Studio Label Studio 是一个开源的、灵活的数据标注平台,旨在帮助开发者和数据科学家轻松创建高质量的训练数据集。它支持多种类型的数据(如文本、图像、音频、视频等)以及复杂的标注任务(如分类、命名实体…...
MyBatis最佳实践:MyBatis 框架的缓存
缓存的概念: 在内存中临时存储数据,速度快,可以减少数据库的访问次数经常需要查询,不经常修改的数据,不是特别重要的数据都适合存储到缓存中 缓存的级别: 一级缓存(默认开启):SqlSession 级别 …...
基于LangGraph、Groq和Tavily打造可以调用外部搜索引擎工具的对话机器人(核心代码 万字详解)
一、python环境 & 相关库版本信息 代码运行在 conda 创建的python环境下,python和相关库的版本信息如下: $ python --version Python 3.12.3$ pip list | grep langchain langchain 0.3.15 langchain-community 0.3.15 lang…...
衡量算法性能的量级标准:算法复杂度
今天开始数据结构的学习!作为一大重点,拿出态度很重要,想要真实掌握,博客笔记自然少不了!重点全部上色!避免疏忽 下面我们从0基础开始学习今天的第一节!不用担心看不懂,拒绝枯燥的理…...
PHP校园助手系统小程序
🔑 校园助手系统 —— 智慧校园生活 📱一款基于ThinkPHPUniapp框架深度定制的校园助手系统,犹如一把智慧之钥,专为校园团队精心打造,解锁智慧校园生活的无限精彩。它独家适配微信小程序,无需繁琐的下载与安…...
如何在Spring Boot项目中高效集成Spring Security
1 Spring Security 介绍 Spring Security 是一个功能强大且高度可定制的安全框架,专为保护基于Java的应用程序而设计。它不仅提供了认证(Authentication)和授权(Authorization)的功能,还支持防止各种常见的安全攻击模式。本文将详细介绍Spring Security的主要特点、功能…...
【PostgreSQL内核学习 —— (WindowAgg(一))】
WindowAgg 窗口函数介绍WindowAgg理论层面源码层面WindowObjectData 结构体WindowStatePerFuncData 结构体WindowStatePerAggData 结构体eval_windowaggregates 函数update_frameheadpos 函数 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊…...
PAT甲级-1020 Tree Traversals
题目 题目大意 给出一棵树的后序遍历和中序遍历,要求输出该树的层序遍历。 思路 非常典型的树的构建与遍历问题。后序遍历和中序遍历可以得出一个树的结构,用递归锁定根节点,然后再遍历左右子树,我之前发过类似题目的博客&…...
LVGL+FreeRTOS实战项目:智能健康助手(Max30102篇)
MAX30102 心率血氧模块简介 功能:用于检测心率和血氧饱和度,集成了红外和红光 LED 以及光电二极管。 接口:支持 I2C 通信,默认 I2C 地址为 0x57。 应用:广泛用于健康监测设备中,如智能手环、手表等。 硬…...
人脸识别【python-基于OpenCV】
1. 导入并显示图片 #导入模块 import cv2 as cv#读取图片 imgcv.imread(img/wx(1).jpg) #路径名为全英文,出现中文 图片加载失败,"D:\picture\wx.jpg" #显示图片 (显示标题,显示图片对象) cv.imshow(read_picture,im…...
redis常用命令和内部编码
文章目录 redis 为什么快redis中的Stringsetsetnxsetex getmsetmget计数操作incr、incrby、decr、decrby、incrbyfloatincrincrbyincrbyfloat 拼接(append)、获取(getrange)、修改字符串(setrange)、获取字符串长度(strlen)操作appendgetrangesetrangest…...
UI操作总结
该类 SolarWebx 继承自 Webx 和 IUixLikeMixin,主要用于扩展 giraffe.EasyUILibrary 的功能,提供了一系列与网页操作、元素定位、截图、图片处理等相关的方法。以下是对该类中每个方法的简要总结: __init__ 方法 作用:初始化 Sola…...
数据结构——实验八·学生管理系统
嗨~~欢迎来到Tubishu的博客🌸如果你也是一名在校大学生,正在寻找各种编程资源,那么你就来对地方啦🌟 Tubishu是一名计算机本科生,会不定期整理和分享学习中的优质资源,希望能为你的编程之路添砖加瓦⭐&…...
力扣hot100-->滑动窗口、贪心
你好呀,欢迎来到 Dong雨 的技术小栈 🌱 在这里,我们一同探索代码的奥秘,感受技术的魅力 ✨。 👉 我的小世界:Dong雨 📌 分享我的学习旅程 🛠️ 提供贴心的实用工具 💡 记…...
Linux 内核中的高效并发处理:深入理解 hlist_add_head_rcu 与 NAPI 接口
在 Linux 内核的开发中,高效处理并发任务和数据结构的管理是提升系统性能的关键。特别是在网络子系统中,处理大量数据包的任务对性能和并发性提出了极高的要求。本文将深入探讨 Linux 内核中的 hlist_add_head_rcu 函数及其在 NAPI(网络接收处理接口)中的应用,揭示这些机制…...
centos哪个版本建站好?centos最稳定好用的版本
在信息化飞速发展的今天,服务器操作系统作为构建网络架构的基石,其稳定性和易用性成为企业和个人用户关注的重点。CentOS作为一款广受欢迎的开源服务器操作系统,凭借其强大的性能、出色的稳定性和丰富的软件包资源,成为众多用户建…...
软件越跑越慢的原因分析
如果是qt软件,可以用Qt Creator Profiler 作性能监控如果是通过web请求,可以用JMeter监控。 软件运行过程中逐渐变慢的现象,通常是因为系统资源(如 CPU、内存、磁盘 I/O 等)逐渐被消耗或软件中存在性能瓶颈。这个问题…...
LeetCode 力扣热题100 二叉树的直径
class Solution { public:// 定义一个变量 maxd,用于存储当前二叉树的最大直径。int maxd 0; // 主函数,计算二叉树的直径。int diameterOfBinaryTree(TreeNode* root) {// 调用 maxDepth 函数进行递归计算,并更新 maxd。maxDepth(root);// …...
【图文详解】lnmp架构搭建Discuz论坛
安装部署LNMP 系统及软件版本信息 软件名称版本nginx1.24.0mysql5.7.41php5.6.27安装nginx 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 关闭防火墙 systemctl stop firewalld &&a…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
