Diff-Instruct:指导任意生成模型训练的通用框架,无需额外训练数据即可提升生成质量

本文涉及的产品
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,视频资源包5000点
简介: Diff-Instruct 是一种从预训练扩散模型中迁移知识的通用框架,通过最小化积分Kullback-Leibler散度,指导其他生成模型的训练,提升生成性能。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

原文链接:https://mp.weixin.qq.com/s/faeBUXbDsc-ZhIxmdTWOcw


🚀 快速阅读

  1. 功能:Diff-Instruct 能从预训练扩散模型中提取知识,指导其他生成模型的训练。
  2. 原理:基于积分Kullback-Leibler散度,通过计算扩散过程中的KL散度积分来比较分布。
  3. 应用:适用于预训练扩散模型的蒸馏和改进现有GAN模型,提升生成性能。

正文(附运行示例)

Diff-Instruct 是什么

公众号: 蚝油菜花 - diff_instruct

Diff-Instruct 是一种先进的知识转移方法,专门用于从预训练的扩散模型中提取知识,并指导其他生成模型的训练。它基于一种新的散度度量——积分Kullback-Leibler (IKL) 散度,通过计算沿扩散过程的KL散度积分来比较分布。这种方法能够在不需要额外数据的情况下,通过最小化IKL散度,实现对任意生成模型的训练指导。

Diff-Instruct 的通用性和有效性在学术界受到广泛关注。它不仅可以显著提升生成模型的性能,还能在多种应用场景中发挥作用,如预训练扩散模型的蒸馏和改进现有的GAN模型。

Diff-Instruct 的主要功能

  • 知识转移:Diff-Instruct 能够从预训练的扩散模型中提取知识,并将其转移到其他生成模型中,无需额外数据。
  • 指导生成模型训练:作为一个通用框架,Diff-Instruct 可以指导任意生成模型的训练,只要生成的样本对模型参数是可微分的。
  • 最小化新型散度:Diff-Instruct 通过最小化积分Kullback-Leibler (IKL) 散度来实现知识转移,这种散度专为扩散模型设计,具有更高的鲁棒性。
  • 提升生成模型性能:Diff-Instruct 在多个实验中展示了其有效性,能够显著提升生成模型的性能,特别是在单步扩散模型和GAN模型的改进上。

Diff-Instruct 的技术原理

  • 通用框架:Diff-Instruct 提出了一个通用框架,可以指导任意生成模型的训练,只要生成的样本对模型参数是可微分的。
  • 积分Kullback-Leibler (IKL) 散度:Diff-Instruct 基于IKL散度,通过计算沿扩散过程的KL散度积分来比较分布,这种散度在比较具有不对齐支持的分布时更具鲁棒性。
  • 数据自由学习:Diff-Instruct 支持使用预训练的扩散模型作为教师来指导各种生成模型,无需额外数据。
  • 灵活性:Diff-Instruct 为生成器提供了非常高的灵活性,生成器可以是基于卷积神经网络(CNN)或基于Transformer的图像生成器,如StyleGAN,或者是从预训练扩散模型适应的基于UNet的生成器。

如何运行 Diff-Instruct

首先,克隆 Diff-Instruct 的 GitHub 仓库并设置 conda 环境:

git clone https://github.com/pkulwj1994/diff_instruct.git
cd diff_instruct

source activate
conda create -n di_v100 python=3.8
conda activate di_v100
pip install torch==1.12.1 torchvision==0.13.1 tqdm click psutil scipy

接下来,准备数据集并运行蒸馏过程。例如,对于 CIFAR-10 数据集的无条件生成,可以使用以下命令:

CUDA_VISIBLE_DEVICES=0 torchrun --standalone --nproc_per_node=1 --master_port=25678 di_train.py --outdir=/logs/di/ci10-uncond --data=/data/datasets/cifar10-32x32.zip --arch=ddpmpp --batch 128 --edm_model cifar10-uncond --cond=0 --metrics fid50k_full --tick 10 --snap 50 --lr 0.00001 --glr 0.00001 --init_sigma 1.0 --fp16=0 --lr_warmup_kimg -1 --ls 1.0 --sgls 1.0

在实验中,FID 值将自动计算并在每个“snap”轮次中显示。

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

相关文章
|
6天前
|
机器学习/深度学习 数据采集 JSON
Pandas数据应用:机器学习预处理
本文介绍如何使用Pandas进行机器学习数据预处理,涵盖数据加载、缺失值处理、类型转换、标准化与归一化及分类变量编码等内容。常见问题包括文件路径错误、编码不正确、数据类型不符、缺失值处理不当等。通过代码案例详细解释每一步骤,并提供解决方案,确保数据质量,提升模型性能。
123 88
|
11天前
|
机器学习/深度学习 数据采集 算法
机器学习在生物信息学中的创新应用:解锁生物数据的奥秘
机器学习在生物信息学中的创新应用:解锁生物数据的奥秘
109 36
|
2天前
如何看PAI产品下训练(train)模型任务的费用细节
PAI产品下训练(train)模型任务的费用细节
17 4
|
12天前
|
人工智能 Kubernetes Cloud Native
跨越鸿沟:PAI-DSW 支持动态数据挂载新体验
本文讲述了如何在 PAI-DSW 中集成和利用 Fluid 框架,以及通过动态挂载技术实现 OSS 等存储介质上数据集的快速接入和管理。通过案例演示,进一步展示了动态挂载功能的实际应用效果和优势。
|
2月前
|
人工智能 JSON 算法
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
阿里云的人工智能平台 PAI,作为一站式、 AI Native 的大模型与 AIGC 工程平台,为开发者和企业客户提供了 Qwen2.5-Coder 系列模型的全链路最佳实践。本文以Qwen2.5-Coder-32B为例,详细介绍在 PAI-QuickStart 完成 Qwen2.5-Coder 的训练、评测和快速部署。
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
模型训练数据-MinerU一款Pdf转Markdown软件
MinerU是由上海人工智能实验室OpenDataLab团队开发的开源智能数据提取工具,专长于复杂PDF文档的高效解析与提取。它能够将含有图片、公式、表格等多模态内容的PDF文档转化为Markdown格式,同时支持从网页和电子书中提取内容,显著提升了AI语料准备的效率。MinerU具备高精度的PDF模型解析工具链,能自动识别乱码,保留文档结构,并将公式转换为LaTeX格式,广泛适用于学术、财务、法律等领域。
225 4
|
2月前
|
人工智能 边缘计算 JSON
DistilQwen2 蒸馏小模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
本文详细介绍在 PAI 平台使用 DistilQwen2 蒸馏小模型的全链路最佳实践。
|
2月前
|
机器学习/深度学习 数据采集 数据处理
谷歌提出视觉记忆方法,让大模型训练数据更灵活
谷歌研究人员提出了一种名为“视觉记忆”的方法,结合了深度神经网络的表示能力和数据库的灵活性。该方法将图像分类任务分为图像相似性和搜索两部分,支持灵活添加和删除数据、可解释的决策机制以及大规模数据处理能力。实验结果显示,该方法在多个数据集上取得了优异的性能,如在ImageNet上实现88.5%的top-1准确率。尽管有依赖预训练模型等限制,但视觉记忆为深度学习提供了新的思路。
43 2
|
2月前
|
机器学习/深度学习 数据采集 人工智能
浅谈机器学习,聊聊训练过程,就酱!
本故事讲的是关于机器学习的基本概念和训练过程。通过这个故事,你将对机器学习有一个直观的了解。随后,当你翻阅关于机器学习的书籍时,也许会有不同的感受。如果你有感觉到任督二脉被打通了,那我真是太高兴了。如果没有,我再努努力 ヘ(・_|
54 0
浅谈机器学习,聊聊训练过程,就酱!
|
2月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
160 4

热门文章

最新文章