新智元报道
编辑:alan
【新智元导读】 近日,来自加州大学尔湾分校等机构的研究人员,利用延迟掩蔽、MoE、分层扩展等策略,将扩散模型的训练成本降到了1890美元。
训练一个扩散模型要多少钱?
之前最便宜的方法(Wuerstchen)用了28400美元,而像Stable Diffusion这样的模型还要再贵一个数量级。
大模型时代,一般人根本玩不起。想要各种文生小姐姐,还得靠厂商们负重前行
为了降低这庞大的开销,研究者们尝试了各种方案。
比如,原始的扩散模型从噪声到图像大约需要1000步,目前已经被减少到20步左右,甚至更少。
当扩散模型中的基础模块逐渐由Unet(CNN)替换为DiT(Transformer)之后,一些根据Transformer特性来做的优化也跟了上来。
比如量化,比如跳过Attention中的一些冗余计算,比如pipeline。
而近日,来自加州大学尔湾分校等机构的研究人员,把「省钱」这个目标直接向前推进了一大步:
论文地址:https://arxiv.org/abs/2407.15811
——从头开始训练一个11.6亿参数的扩散模型,只需要1890美元!
对比SOTA有了一个数量级的提升,让普通人也看到了能摸一摸预训练的希望。
更重要的是,降低成本的技术并没有影响模型的性能,11.6亿个参数给出了下面这样非常不错的效果。
除了观感,模型的数据指标也很优秀,比如下表给出的FID分数,非常接近Stable Diffusion 1.5和DALL·E 2。
相比之下,Wuerstchen的降成本方案则导致自己的考试分数不甚理想。
省钱的秘诀
抱着「Stretching Each Dollar」的目标,研究人员从扩散模型的基础模块DiT入手。
首先,序列长度是Transformer计算成本的大敌,需要除掉。
对于图像来说,就需要在不影响性能的情况下,尽量减少参加计算的patch数量(同时也减少了内存开销)。
减少图像切块数可以有两种方式,一是增大每块的尺寸,二是干掉一部分patch(mask)。
因为前者会显著降低模型性能,所以我们考虑进行mask的方式。
最朴素的mask(Naive token masking)类似于卷积UNet中随机裁剪的训练,但允许对图像的非连续区域进行训练。
而之前最先进的方法(MaskDiT),在输出之前增加了一个恢复重建的结构,通过额外的损失函数来训练,希望通过学习弥补丢掉的信息。
这两种mask都为了降低计算成本,在一开始就丢弃了大部分patch,信息的损失显著降低了Transformer的整体性能,即使MaskDiT试图弥补,也只是获得了不太多的改进。
——丢掉信息不可取,那么怎样才能减小输入又不丢信息呢?
延迟掩蔽
本文提出了一种延迟掩蔽策略(deferred masking strategy),在mask之前使用混合器(patch-mixer)进行预处理,把被丢弃patch的信息嵌入到幸存的patch中,从而显著减少高mask带来的性能下降。
在本架构中,patch-mixer是通过注意力层和前馈层的组合来实现的,使用二进制掩码进行mask,整个模型的损失函数为:
与MaskDiT相比,这里不需要额外的损失函数,整体设计和训练更加简单。
而混合器本身是个非常轻量的结构,符合省钱的标准。
微调
由于非常高的掩蔽比(masking ratio)会显著降低扩散模型学习图像中全局结构的能力,并引入训练到测试的分布偏移,所以作者在预训练(mask)后进行了小幅度的微调(unmask)。
另外,微调还可以减轻由于使用mask而产生的任何不良生成伪影。
MoE和分层扩展
MoE能够增加模型的参数和表达能力,而不会显著增加训练成本。
作者使用基于专家选择路由的简化MoE层,每个专家确定路由到它的token,而不需要任何额外的辅助损失函数来平衡专家之间的负载。
此外,作者还考虑了分层缩放方法,线性增加Transformer块的宽度(即注意力层和前馈层中的隐藏层尺寸)。
由于视觉模型中的更深层倾向于学习更复杂的特征,因此在更深层中使用更多的参数将带来更好的性能。
实验设置
作者使用两种DiT的变体:DiT-Tiny/2和DiT-Xl/2,patch大小为2。
使用具有余弦学习率衰减和高权重衰减的AdamW优化器训练所有模型。
模型前端使用Stable-Diffusion-XL模型中的四通道变分自动编码器(VAE)来提取图像特征,另外还测试了最新的16通道VAE在大规模训练(省钱版)中的性能。
作者使用EDM框架作为所有扩散模型的统一训练设置,使用FID以及CLIP分数来衡量图像生成模型的性能。
文本编码器选择了最常用的CLIP模型,尽管T5-xxl这种较大的模型在文本合成等具有挑战性的任务上表现更好,但为了省钱的目标,这里没有采用。
训练数据集
使用三个真实图像数据集(Conceptual Captions、Segment Anything、TextCaps),包含2200万个图像文本对。
由于SA1B不提供真实的字幕,这里使用LLaVA模型生成的合成字幕。作者还在大规模训练中添加了两个包含1500万个图像文本对的合成图像数据集:JourneyDB和DiffusionDB。
对于小规模消融,研究人员通过从较大的COYO-700M数据集中对10个CIFAR-10类的图像进行二次采样,构建了一个名为cifar-captions的文本到图像数据集。
评估
使用DiT-Tiny/2模型和cifar-captions数据集(256×256分辨率)进行所有评估实验。
对每个模型进行60K优化步骤的训练,并使用AdamW优化器和指数移动平均值(最后10K步平滑系数为0.995)。
延迟掩蔽
实验的基线选择我们上面提到的Naive masking,而本文的延迟掩蔽则加入一个轻量的patch-mixer,参数量小于主干网络的10%。
一般来说,丢掉的patch越多(高masking ratio),模型的性能会越差,比如MaskDiT在超过50%后表现大幅下降。
这里的对比实验采用默认的超参数(学习率1.6×10e-4、0.01的权重衰减和余弦学习率)来训练两个模型。
上图的结果显示了延迟屏蔽方法在FID、Clip-FID和Clip score三个指标上都获得了提升。
并且,与基线的性能差距随着掩蔽率的增加而扩大。在掩蔽率为75%的情况下,朴素掩蔽会将FID分数降低至 16.5,而本文的方法则达到5.03,更接近于无掩蔽时的FID分数(3.79)。
超参数
沿着训练LLM的一般思路,这里比较两个任务的超参数选择。
首先,在前馈层中,SwiGLU激活函数优于GELU。其次,较高的权重衰减会带来更好的图像生成性能。
另外,与LLM训练不同的是,当对AdamW二阶矩 (β) 使用更高的运行平均系数时,本文的扩散模型可以达到更好的性能。
最后,作者发现使用少量的训练步骤,而将学习率增加到最大可能值(直到训练不稳定)也显著提高了图像生成性能。
混合器的设计
大力出奇迹一般都是对的,作者也观察到使用更大的patch-mixer后,模型性能得到持续改善。
然而,本着省钱的目的,这里还是选择使用小型的混合器。
作者将噪声分布修改为 (−0.6, 1.2),这改善了字幕和生成图像之间的对齐。
如下图所示,在75% masking ratio下,作者还研究了采用不同patch大小所带来的影响。
当连续区域变多(patch变大)时,模型的性能会下降,因此保留随机屏蔽每个patch的原始策略。
分层缩放
这个实验训练了DiT-Tiny架构的两种变体,一种具有恒定宽度,另一种采用分层缩放的结构。
两种方法都使用Naive masking,并调整Transformer的尺寸,保证两种情况下的模型算力相同,同时执行相同的训练步骤和训练时间。
由上表结果可知发现,在所有三个性能指标上,分层缩放方法都优于基线的恒定宽度方法,这表明分层缩放方法更适合DiT的掩蔽训练。
参考资料:
https://arxiv.org/abs/2407.15811
StableDiffusion教程AI绘画原理
Stable DIffusion原理卜原理
让每个人都看懂
AI绘画基本原理
01Stable Diffusion原理介绍
1.什么是扩散?
首先, 大家要明确(Stable Diffusion) 是一个算法, 我们说的StableD if uusi on webUI是基于这个算法的一个工具。
我们不妨先来学习一下英语:Stable Diffusion中的Stable是稳定的(adj.) , Diffusion是扩散(n.) , 所以Stable
Diffusion的简单理解就是一种稳定的扩散的算法。
在图像领域中,扩散算法是通过一定规则去噪(反向扩散)或加噪(正向扩散)的过程。
如下图展示的就是以prompt为**a red flower**做扩散的过程,从最开始的灰色噪点块、逐渐去噪到最终的清晰的过程:
2.扩散(Diffusion) 是怎么能被稳定(Stable) 控制的?
我们以文生图为例, 给大家看一下Stable Diffusion的原理:
这里的过程, 大家可以把它抽象理解为一个大函数Fsd
(prompt) , 即:我们输入一段自然语义prompt, 经过一系列函数运算和变化,最终输出一张图的过程。
:我们输入的文字prompt是如何起作用的?
我们先来看第一个部分,我们输入了一段咒语,这段咒语是如何起作用的?
让我们咒语起作用的是一段叫做CLIP的算法, CLIP是Text
Encoder算法的一种, Text Encoder大家从字面意思也能够理解,是把文字转化为代码的一种算法,他的主要功能是把自然
语义prompt转变为词特性向量(Embedding) 。
如下图所示, 我们举个例子, 比如我们输入了一个prompt:**可爱的女孩**, CLIP算法作自然语义处理的时候会根据之前被程序员调教的经验,大概感知到可爱的女孩可能具有哪些特征?
比如他们可能有”大大圆圆的眼睛“,可能有”白皙的肌肤“,可能有”可爱的神态“等等,然后这些可能得特征被转化为77个等长的token词向量(每个向量包含768个维度) , 这就是我们说的Embedding。
这里需要注意的是, UNET去噪的时候, 原理比上图描述的复杂很多,它其实并不是一步一步去噪就能得到对应效果的,如果仅仅是一步一步的去噪,效果往往很差,并不能精确得到描述文本的图片。
所以在这里我会稍微讲得深入一些, 介绍一下Classifier Free Guidance引导方法:
为了保证我们的prompt最终的精确性, 在UNET分步去噪的时候,比如我设置的去噪步长为20,他会在每一步都生成一个有prompt特征引导的图和一个没有prompt特征引导的图, 然后把两者相减,就得到了每一个去噪步骤中单纯由文字引导的特征信号,然后将这个特征信号大很多倍,这就加强了文本引导。
同时,在第N+1步去噪结束后,它还会用第N+1步去噪的信息特征减去第N部的特征,然后继续方法很多倍,这样保证
prompt在每一步都能有足够权重比参与运算。
上面那一段大家看不懂也没关系,用通俗的大白话来说,就是这个方法加强了prompt的权重。 这个方法在Stable Diffusion webUI中被直译为提示词相关性, 是一个常用参数, 他的数值决定了生成的图与提示词的相关程度。
讲到这里你们会说,诶,不对啊,你看同样是关键词,你的为啥就这么好看,我的生成出来就很丑?那是因为,当我们输入同一个prompt, 我们的text encoder过程是一样, 也就是你得到的词向量是一致的,但是后面的去噪算法依赖模型不同,生成的效果千差万别。
那么接下来我们来讲一下SD里最重要的UNET算法。
:扩散模型的工作原理
UNET他是一种根据词向量的扩散算法, 他的工作原理如下图所示, 在上面说到的Clip算法会根据我们输入的prompt输出对应机器能识别的词向量(Embedding) , 这个Embedding大家也只需要粗浅理解为他是一个函数,包含(Q、K、V)三个参数就好了。
这三个参数会根据我们输入的对应扩散步长, 作用于UNET去噪算法的每一步,比如下图中,我设置了去噪步长为20步,大家能看到这张图逐渐扩散生成的效果。
说完了文生图, 我们大概也说一下图生图, 咱们在使用Stable Diffusion webUI的时候用图生图的功能, 往往是给一张图,然后再输入一段prompt, 比如我们还是设置扩散步数N=20,这时候,它的原理是先把我们提供的图进行逐步加噪,逐步提取图片信息, 使它变成一张完全的噪点图, 再让prompt起作用, 结合上面的UNET算法逐步去噪, 得到既有素材图片特征也有prompt特征的最终效果图。
5.理解VAE的编解码过程
最后我们简单来理解一下CAE编解码的过程, VAE全称变分自编码器,这里大家不需要做太多理解,只需要知道他是一个先压缩后解压的算法就好了。
需要注意的是, 我们上面写的UNET算法不是直接在图片上进行的,而是在”负空间“进行的,大家理解为在代码层面即可。
VAE他的原理如下图所示, 假如我们要生成的图是512x 512的,VAE算法在一开始的时候, 会把它压缩到八分之一, 变成
64x 64, 然后走UNET算法的时候, 会把图形数据带在噪点图中, 这个过程叫Encoder, 然后再走完UNET算法后, 我们得到了一个带有所有图片特征的噪点图, 此时VAE再进行
Decoder过程, 把这张图解析并放大成512x 512, 知道到这里即可,不要深究。
1.机器是如何认识图片的?
首先,我们先来看看机器是如何认识图片的。 相信大家都听说过,最初计算机视觉训练认识物体的时候,采用的是成对训练的方法,通过“图”+“对应描述”成对训练。 运用图像识别、自然语义处理与卷积神经网络等一系列技术让计算机能够识别这个图形。
如上图所示,我们不停的给计算机喂成千上亿张狗的图,然后告诉他,你看这是狗,这也是狗,这还是狗,然后机器会不断归纳狗的特征,重复学习亿遍后,它就认识狗了。
2.可供调用的模型是如何训练的?
好了,假设这时候,机器已经能识别万物了,这时候机器由于学习的图片风格都不同,生成的图片有可能不满足我们的期望,举个例子:
假设程序员经过十年的努力后,让机器正确认识了小女孩的特征,不会出现三个眼睛两个嘴巴。
当我们输入一个**acute girl**, 生成的是图A, 这时候假如A 的风格与我们想要的完全不同,比如我们想要的是B这种,这时候程序员们就会不断调整函数中的各种算法和参数,使得产出的图形A无限接近图像B, 然后停止训练, 此时整个Fsd(x)函数的所有调整的参数, 就被保存为一个 pt的文件, 这个叫checkpoint的文件就是程序员训练好的可供调用的A I绘图大模型,他能保证我们每次生成的图偏向于某种特征集合。
整个过程如下图所示:
训练出属于自己的AI模型
手把手带你两个步骤训练出属于自己的AI模型
关键词:手把手带你两个步骤
训练出属于
自己的AI模型
学习收藏
苏
Stable Diffusion
步骤二:上传8张以上希望训练的风格图片,最好是风格接近的图片,这样训练效果会更佳
Vega Al 创作平台
邀好友体验高级版
首页
团文生图
机甲少女
囚 图生图
条件生
骨 姿势生
智能编转
风格定制
宇 风格广场
我的风格
训练中,预计 15分钟
探索更多玩法>>
开始训练
我的作品
+ 上传图片
教程
国 关于
单纯的未来
*上传时间会稍微慢点,具体和网络速度相关,等待过程中页面上无响应,可耐心稍后即可
*上传完成后在右侧给模型起个名字,点击开始训练即可。 训练时间预计为15分钟,可先作休息晚点回来查看结果。
*训练完成后需要收藏以及应用模型
继续滑动查看步骤 》》》
步骤一:首先我们登录Vega,然后在左侧菜单栏选择“风格定制”
Vega Al 创作平台
命 首页
团文生图
囚 图生图
条件生图
骨 姿势生图
智能编
邀好友体验高级版
工作区
历史记录
风格名称
基础模型 @
虚拟建模
高级设置
选代步数
学习率 @
风定制
宇 风格广场
我的风格
将文件拖动到此处,或点击上传 Q
开始训练
回我的作品
口教程
日 关于
AI小
*可以通过访问进行注册,使用邀请码注册可获得额外福利赠送
邀请码:AQXY7JTF
继续滑动查看步骤 》》》
至此,我们就完成了模型的训练,进入下一步,就是测试模型的阶段
步骤三:测试模型,在左侧菜单栏点击“图生图”,然后上传一张希望变为自己模型风格的图片
Vega Al 创作平台
档网
工作
团文生图
国生图
条件生国
骨 姿势生
智能编辅
风格定伟
排队 生成中,预计 32秒
风格强月
风格广场
我的风
我的作品
+ 上传图片
程
日 关于
A1小甜
一个蓝色头发的女人和一件蓝色头发的白村衫和一个蓝色尾巴的蓝色假发
一个仙女腾云驾雾的奔赴月亮,裙摆飘飘
,背景是色彩斑调的星
图片模式@
高级设
普通
高清 超清
*在这里我们课可以先使用默认的参数跑一边,记得右边的模型需要选择自己刚刚训练出来并收藏的模型,示例里我们的模型取名为“机甲少女
*同时在页面下方也需要加入对图片的基本描述
继续滑动查看步骤 》》》
看起来好像模型奏效了,但好像还是比较草图,不要紧,我们可以调整参数再来一遍就好了
Vega Al 创作平台
当内
介
工作区
团 文生
图生图
件生
骨 姿势生
智能编转
风格定伟
宇
风格广场
我的风格
我的作品
+ 上传图片
教程
日 关于
A小甜播
一个蓝色头发的女人和一件蓝色头发的白衬衫和一个蓝色尾巴的蓝色假发
一个仙女腾云驾雾的奔赴月亮,裙摆飘霸
背景是色彩斑斓的星
生成
片模式
普通 高清 超清
高级设置
*我们可以使用生成出来的图片重新上传回去,使用图生图的功能再次生成一张新图,但生成之前应该对参数配置和下方的图片描述进行一些优化,具体操作步骤可以翻看我们前几天的帖子
继续滑动查看步骤 》》》
步骤四: 调整参数后再次测试模型,具体参数可以参考图片右边的侧边栏,最终成图效果还不错
Vega Al 创作平台
省页
工作区
团 文生
囚 图生图
条件生
骨姿势生
智能编
风格定串
风格广
命我的风榨
图片模式
普通 O高清 超清
我的作品
十 上传图片
高级设置
步数@
教程
国 关
A小甜
一个穿着网络服装和一些科技设备的女人在城市的街道上
一个仙女腾云驾雾的奔赴月亮,裙摆飘飘,背景是色彩斑斓的星空
生成
文本强度
采样器
机种子@
DPM++ SDE Karras
*好了,来到这里,我们通过训练自己的AI模型,并对模型进行了测试,最终根据我们的草图生成了一张很不错的风格图,但图片的脸部细节好像还有一点点小缺陷,没关系,我们下一期会介绍一个工具专内解决脸部细节问题
查看最终效果图 》》》
有什么ai作画的软件?
目前文生图的主流AI绘画平台主要有三种:Midjourney、Stable Diffusion、DALL-E。
Disco Diffusion
仅仅通过文字输入,就能让AI产生相应的输出相应的图片。 功能强大,图像生成前需要设置参数,更为灵活。 虽然出图比较慢不过图片质量效果惊艳。
Midjourney
Midjourney 是一款输入文字就可以生成高质量图像的 AI 画画软件,速度达到1分钟出4张图,因为 Midjourney 搭载在 Discord 频道上,所以有非常良好的社区讨论环境。
Stable Diffusion
Stable Diffusion是一种基于潜在扩散的机器学习模型,能够将文本描述转化为高质量的图像。 该模型是由CompVis、Stability AI和LAION联合开发的,利用来自LAION-5B数据库子集的512x512分辨率的图像进行训练。 Stable Diffusion是一种潜在扩散模型,通过逐步去除随机高斯噪声来生成感兴趣的图像样本,如人脸等。
DALL-E是一种基于深度学习的AI模型,它能够将短语或描述的要求转换为图片,它可以使用自然语言编写图片,并且有快速处理大量数据、端到端技术以及具体控制生成图像外观等特点,这种技术可以为人类的图像处理和信息传播带来很大的便利。
AI绘图软件必备云平台--赞奇云工作站
AI设计工具虽然为设计行业带来诸多便利节省了很多设计师的时间提高了工作效率,但是现在的ai生成作图都对电脑配置要求很高,如果本地电脑带不动,再好用的工具也用不了,这时候设计师和设计公司都选择赞奇云工作站,助力高效设计,一键申请即可获得高配云电脑,轻松运行ai软件。
赞奇云工作站还能整合打通设计者前端生态应用和设计业务全流程,全面调用云计算资源运用于AI(人工智能)的应用场景。 高性能算力机器按需使用,灵活租赁,稳定性强。 基于域控的安全策略,还可以免受病毒攻击,并且提供自动多副本可靠性机制。