❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- 线性复杂度:通过局部注意力机制将预训练DiTs的复杂度从二次降低到线性。
- 效率提升:显著减少计算量和时间延迟,加速高分辨率图像生成。
- 跨模型泛化:CLEAR支持零样本泛化到其他模型和插件,无需额外适配。
正文(附运行示例)
CLEAR 是什么
CLEAR是新加坡国立大学推出的一种新型线性注意力机制,旨在提升预训练扩散变换器(DiTs)生成高分辨率图像的效率。通过将每个查询的注意力限制在局部窗口内,CLEAR实现了对图像分辨率的线性复杂度,从而降低了计算成本。实验表明,CLEAR在10K次迭代微调后,能在保持与原始模型相似性能的同时,减少99.5%的注意力计算,并在生成8K图像时提速6.3倍。
CLEAR不仅支持跨模型和插件的零样本泛化,还支持多GPU并行推理,增强了模型的适用性和扩展性。
CLEAR 的主要功能
- 线性复杂度:通过局部注意力机制将预训练DiTs的复杂度从二次降低到线性,适用于高分辨率图像生成。
- 效率提升:在生成高分辨率图像时,显著减少计算量和时间延迟,加速图像生成过程。
- 知识转移:通过少量的微调,能有效地从预训练模型转移知识到学生模型,保持生成质量。
- 跨分辨率泛化:CLEAR展现出良好的跨分辨率泛化能力,能处理不同尺寸的图像生成任务。
- 跨模型/插件泛化:CLEAR训练得到的注意力层能零样本泛化到其他模型和插件,无需额外适配。
- 多GPU并行推理:CLEAR支持多GPU并行推理,优化大规模图像生成的效率和扩展性。
CLEAR 的技术原理
- 局部注意力窗口:将每个查询(query)的限制在局部窗口内,仅与窗口内的键值(key-value)进行交互,实现线性复杂度。
- 圆形窗口设计:与传统的正方形滑动窗口不同,CLEAR采用圆形窗口,考虑每个查询的欧几里得距离内的所有键值。
- 知识蒸馏:在微调过程中,CLEAR用知识蒸馏目标,基于流匹配损失和预测/注意力输出一致性损失,减少线性化模型与原始模型之间的差异。
- 多GPU并行推理优化:CLEAR基于局部注意力的局部性,减少多GPU并行推理时的通信开销,提高大规模图像生成的效率。
- 保持原始功能:尽管每个查询仅访问局部信息,但通过堆叠多个Transformer块,每个令牌(token)能逐步捕获整体信息,类似于卷积神经网络的操作。
- 稀疏注意力实现:作为一种稀疏注意力机制,能在GPU上高效实现,并利用底层优化。
如何运行 CLEAR
安装环境
CLEAR需要torch>=2.5.0
和diffusers>=0.31.0
,以及其他依赖包。可以通过以下命令设置环境:
conda create -n CLEAR python=3.12
conda activate CLEAR
pip install -r requirements.txt
克隆仓库
git clone https://github.com/Huage001/CLEAR.git
下载模型
CLEAR提供了多个版本的模型,支持不同的局部窗口大小。可以通过以下命令下载模型:
mkdir ckpt
wget https://huggingface.co/Huage001/CLEAR/resolve/main/clear_local_8_down_4.safetensors
运行推理
如果想要比较线性化的FLUX模型与原始模型,可以运行inference_t2i.ipynb
。如果需要高分辨率加速,可以运行inference_t2i_highres.ipynb
。
资源
- 项目官网:https://github.com/Huage001/CLEAR
- GitHub 仓库:https://github.com/Huage001/CLEAR
- arXiv 技术论文:https://arxiv.org/pdf/2412.16112
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦