AI画画模型成本被打下来了!预训练成本直降85%,微调只需单张RTX20

2022-11-10 08:43:22 IT之家阅读量:19810   
imgad2

全球热稳定扩散,前期培训和微调费用,已经正式制定!

现在,前期训练速度提升至6.5倍,成本下降85%,

微调只需要RTX 2070/3050就可以了,硬件成本下降了近90%。

这是国内项目panolo—AI最新的开源加速方案。

今年稳定扩散可谓圈内圈外热,最近又以免费开源,效果好的特点进一步走出圈外,让人看到了AIGC的巨大潜力和前景。

艺术圈和AI圈大神们争相打造GitHub star的数量已经达到了33.5k,背后的公司估值甚至飙升到了10亿美元

因此,稳定扩散成为扩散模型中最受欢迎的一项。

但是,它唯一的缺点是培训费用很高!

仅稳定扩散v1模型就需要15万A100 GPU小时,对于单次训练,

微调至少需要RTX 3090/4090等高端消费级显卡。

背后的公司Stability AI为了维持其运行和计算能力需求,拥有由4000个A100组成的GPU集群,仅成本就超过5000万美元。

实际上,由于扩散模型本身特殊的原理和机理,对硬件内存和运算速度要求很高,使用的数据库也在千亿量级。

所以,提高训练速度,降低成本,真的不容易。

那么,究竟是如何实现庞氏人工智能的呢。

从视频内存开始

首先解释一下为什么扩散模型对硬件要求高。

扩散模型主要包括两个过程:正向扩散和反向生成。

前向扩散是将高斯噪声逐渐加入到一幅图像中,直到它变成随机噪声。

逆向生成是一个去噪过程,利用多个U网将一个随机噪声逐步去噪,直到生成一幅图像,这也是扩散模型的训练过程。

与传统的端到端深度学习模型相比,扩散模型的训练过程显然更加复杂。

除了扩散模型本身,稳定扩散还包括一个用于输入文本提示的冻结剪辑Textcoder,一个用于将高分辨率图像压缩到潜在空间的自动编码器,以及在每个时间步长计算损失。

因此,训练方案对存储成本和计算速度提出了巨大的挑战。

针对上述问题,从预训练和微调两个步骤对庞氏人工智能进行优化。

在预训练阶段,主要做的是减少内存开销。

一般来说,批量越大,训练速度越快,扩散模型也是如此。

通过ZeRO,Gemini,基于Chunk的内存管理等策略,以及优化交叉注意计算的Flash Attention模块,panol—AI允许用户在8GB内存的普通消费级显卡上训练扩散模型。

在A100上,单卡批量可以直接扩展到256张。

与Stable—diffusion—v1 FP32的分布式数据并行相比,训练速度可以提高6.5倍。

因此,培训时间可以大大缩短,从而减少数百万美元的培训费用。

在微调方面,对于大多数AIGC玩家来说,他们倾向于选择使用开源的预训练模型权重来微调个性化的下游任务。

可是,在现有的许多开源微调方案中,DDP是主要的训练并行方式,这导致了训练过程中大量的视频内存。

即使是微调也至少需要最高端的消费级显卡,比如RTX 3090/4090。

另外,目前很多开源的训练框架都没有给出完整的训练配置和脚本,需要自己做一些补全和调试工作。

基于这种现状,庞氏人工智能提出了第一个同时开源训练配置参数和训练脚本的方案。

该方案一方面可以使用户不再局限于现有的权重推理,更灵活地为新的下游任务训练最新的细分模型,扩大应用范围,

另一方面,由于引入了显存优化等技术,该方案支持在普通个人电脑的单块显卡上快速完成微调任务。

要知道,RTX 2070现在比3090/4090便宜了将近90%。

此外,对于对速度不敏感的任务,还可以进一步使用pool—AI NVMe,即可以使用低成本的硬盘空间来减少视频内存消耗。

有哪些优化秘籍。

那么,用什么技术来降低内存开销呢。

主要基于三个方面:

零度+双子座

闪光注意

FP16,活动检查点和其他常见优化技术

先来看零+双子座。

ZeRO是一个零冗余优化器。

这种方法主要是对优化器状态,梯度和模型参数进行剪切,使GPU只保存当前计算需要的部分,从而消除了数据并行和模型并行中存在的内存冗余。

与经典的数据并行策略相比,在不牺牲计算粒度和通信效率的情况下,可以大大提高存储效率。

同时,庞—AI还引入了Chunk机制,进一步提升零性能。

将一组操作顺序连续的参数保存到一个组块中,每个组块大小相同。

区块内存组织可以确保PCI—e和GPU—GPU之间网络带宽的高效利用,减少通信次数,避免潜在的内存碎片。

组块机制

Gemini是庞氏人工智能的异构内存空间管理器。

它支持将优化器从GPU卸载到CPU,以节省GPU内存。

打破GPU内存墙的限制,可以实现GPU内存和CPU内存的同时利用,从而进一步扩大可训练模型的规模。

通过ZeRO+Gemini提高硬件的模型容量

第二个方面是闪光注意机制。

LDM是一种提高扩散模型效率的方法通过在模型框架中引入交叉注意机制,实现了多模态训练,使得扩散模型更加灵活,能够支持类别—条件,文本—图像,布局—图像

但交叉注意层相对于原扩散模型的CNN层,增加了额外的计算成本,大大增加了训练成本。

相比之下,闪光注意力是长序列注意力的加速版本。

它使用Flatten来减少GPU高带宽内存之间的内存读/写次数Flash Attention还为块状稀疏注意力设计了近似注意力算法,比现有的任何注意力方法都要快

可以提高104%的注意速度,降低23%的端到端训练峰值视频记忆。

闪光注意

除了以上两个方面,庞—AI还集成了FP16,激活检查点等常用优化技术。

例如,激活检查点通过用计算换取内存来工作。

它避免了存储整个计算图的所有中间激活用于逆向计算,并在逆向传输中重新计算它们,而不是将中间激活保存在检查点中,进一步减少了视频内存。

FP16在基本不影响精度的前提下,将原来的32位浮点运算转换为16位运算,减少了显存的使用,提高了计算效率。

也超级容易上手

在实践中,庞—AI只需要少量代码就可以快速启动扩散模型训练。

与常见的PyTorch开源项目不同,稳定的扩散是基于PyTorch照明构建的。

PyTorch Lightning为流行的深度学习框架PyTorch提供了一个简洁易用,灵活高效的高级接口,为AI研究人员提供了一个简洁易用的高级抽象,从而使深度学习实验更容易阅读和重现。

应PyTorch Lightning之邀,庞—AI作为PyTorch Lightning官方大模型解决方案进行了整合。

以稳定扩散为例,启动代码如下:

from colossalai . nn . optimizer importhybridadamfromlightning . pytorchimporttrainerclassmydiffuser:...def configure _ sharded _ model—gt,无:# createyourmodelhereself . model = construct _ diffuser _ model...def configure _ optimizer:# usethespecifiedpromizer = HybridAdam,self.lr)...model = my diffuser()Trainer = Trainer(accelerator = " GPU ",devices=1,precision=16,strategy = " colossalai ")Trainer . fit(模型)

此外,庞—AI和PyTorch Lightning也为OPT和HuggingFace等热门机型和社区提供了良好的支持和优化。

低成本微调

在微调方面,庞—AI在HuggingFace上提供了基于开源稳定扩散模型权重的微调功能。

用户可以在他们的个人计算机上微调他们自己的个性化模型,只需修改Dataloader以加载他们自己的微调数据集并读取预训练权重,然后修改参数配置yaml文件并运行训练脚本。

model:target:LDM . models . diffusion . ddpm . latentdiffusionparams:your _ sub _ module _ config:target:your . model . import . path params:from _ pre trained: ' your _ file _ path/unet/diffusion _ py torch _ model . bin ...闪电:训练者:策略:目标:py torch _ lightning . strategies . Colossalai strategy params:...python main . py—logdir/your _ log _ dir—t—bconfig/train _ colossalai . YAML快速推理

庞氏人工智能还支持原生的稳定扩散推理管道。

经过训练或微调后,只需要直接调用扩压器库,加载自己保存的模型参数,就可以直接推理,不需要做任何其他改动。

这样可以让新用户更容易熟悉推理过程,让习惯使用原框架的用户快速上手。

from diffusersimportstablediffusionpipeline pipe = stablediffusionpipeline . from _ pre trained . to( " cuda ")image = pipe( ' your prompt ',num _ inference _ steps = 50)( " sample ")(0)image . save( ' file path ')

上述推理过程产生的作品

还有一点

实际上,上面提到的庞氏人工智能不仅可以用于加速扩散模型的训练,还可以用于各种大型模型。

spool—AI可以高效快速地部署AI大模型训练和推理,并通过多维自动并行,异构内存管理,库的大规模优化,自适应任务调度等手段降低应用成本。

自开源以来,pancol—AI多次在GitHub和Paper上以代码热榜排名全球第一。

经过国际专家的严格评审,庞氏AI已成功入选SC,AAAI,PPoPP等国际顶级AI和HPC会议的官方课程。

目前,其相关解决方案已被自动驾驶,云计算,零售,医药,芯片等行业的知名厂商成功应用。

例如,针对生物医药行业的蛋白质结构预测模型AlphaFold,FastFold基于pool—AI的优化方案,成功将单个GPU推导的氨基酸序列长度扩展到10000,覆盖了99.9999%的蛋白质。

90%的蛋白质只能靠笔记本上的消费级显卡来分析。

还可以并行加速整个训练和推理过程目前已帮助多家新药研发企业缩短研发流程,降低研发成本

入口

开放源地址:

参考链接: