当前位置: 首页 > 科技观察

Diffusion预训练成本降低6.5倍,硬件微调成本降低7倍!Colossal-AI完整开源解决方案低成本加速AIGC产业落地

时间:2023-03-14 08:25:46 科技观察

如何更好、更快、更便宜地实现AIGC模型的训练和微调,成为AIGC商业化和应用爆发的最大痛点。Colossal-AI基于大模型民主化的专业积累,开源完整的StableDiffusion预训练和个性化微调解决方案,加快预训练时间并降低6.5倍的经济成本,减少硬件个性化微调成本提升7倍!微调工作流程可以在个人电脑的RTX2070/3050上快速完成,让StableDiffusion等AIGC模型触手可及。开源地址:https://github.com/hpcaitech/ColossalAI火爆的AIGC赛道成本高AIGC(AI-GeneratedContent人工智能生成内容)是AI领域最热门的话题之一,尤其是StableDiffusion,Midjourney、NovelAI、DALL-E等代表了文本生成图像的跨模态应用的出现,而AIGC则更为火爆,受到广泛关注。StableDiffusion生成图像由于AIGC激发了大量行业需求,被视为下一波AI浪潮的重要方向之一。新技术革命和杀手级应用。AIGC在相关场景的成功商业化和潜在的万亿级市场,让相关创业公司成为资本的宠儿。比如StabilityAI、Jasper等,成立仅一两年就获得了数亿美元的融资,并晋升为独角兽。野兽的行列。AI模型规模和性能的同步增长,但高昂的硬件要求和训练成本仍然严重阻碍了AIGC产业的快速发展。AIGC应用的卓越性能通常建立在GPT-3或StableDiffusion等大型模型之上,并针对特定的下游任务和应用进行微调。以流行的StableDiffusion为例。其背后的StabilityAI虽然成立不久,但已经维护了超过4000个NVIDIAA100GPU集群,并为此花费了超过5000万美元的运营成本。只有模型表的StableDiffusionv1版本一次训练需要150,000A100GPU小时。扩散模型扩散模型(DiffusionModel)的思想最早是在2015年的论文DeepUnsupervisedLearningusingNonequilibriumThermodynamics中提出的,2020年的论文DenoisingDiffusionProbabilisticModels(DDPM)将其推向了一个新的高度,随后扩散模型-basedDALL-E2,Imagen,StableDiffusion在生成任务方面取得了远超生成对抗网络(GAN)、可变差分自编码器(VAE)、自回归模型(AR)等传统生成模型的效果。扩散模型由两个过程组成:正向扩散过程和反向生成过程。正向扩散过程是对图像逐渐加入高斯噪声,直到变成随机噪声,而反向生成过程是去噪过程。Arandomnoise使用多个U-Nets逐渐去噪直到生成图像,这也是扩散模型训练的一部分。与传统的端到端深度学习模型相比,LatentDiffusion模型的训练过程无疑更加复杂。以StableDiffusion为例,除了扩散模型本身,还有一个FrozenCLIPTextcoder来输入文本提示,以及一个Autoencoder来实现将高分辨率图像压缩到潜在空间(LatentSpace)中,而在每个时间步计算损失。这对训练程序的内存开销和计算速度提出了更大的挑战。更低的成本——预训练加速和更少的资源微调预训练优化对于预训练,batchsize越大,训练速度越快,与Diffusion模型类似。Colossal-AI通过ZeRO、Gemini、Chunk-based内存管理、FlashAttention模块等策略优化Cross-attention计算,大幅降低Diffusion模型训练的内存开销,让用户在消费级显卡上使用10G内存卡(如RTX3080)Diffusion模型可以在A100等专用显卡上进行训练,可直接支持单卡BatchSize256的训练。与stable-diffusion的FP32DistributedDataParallel(DDP)训练相比-v1-1,训练速度可提升6.5倍。这意味着数百万的培训成本可以降低6.5倍,大大降低了AIGC行业的培训成本和准入门槛!Colossal-AI加速到StableDiffusion个性化微调优化由于StableDiffusion预训练使用的LAION-5B数据集总共有5850亿个图文对,需要240TB的存储空间,结合复杂度从模型中可以看出,完整的预训练成本很高:StableDiffusion的稳定性团队花费超过5000万美元部署了4,000个A100GPU。对于大多数AIGC玩家来说,更现实的选择是使用开源的预训练模型权重来微调个性化下游任务。但是现有的其他开源finetune解决方案采用的并行训练方式主要是DDP,导致训练过程内存占用较大。即使是微调也至少需要RTX3090或4090这样最高端的消费级显卡才能入手。同时,现阶段很多开源训练框架并没有提供完整的训练配置和脚本,需要用户花费额外的时间进行繁琐的补全和调试。与其他解决方案不同,Colossal-AI是第一个同时开源完整的训练配置参数和训练脚本的解决方案,允许用户随时为新的下游任务训练最新版本的分割模型,更灵活,应用范围更广。并且由于Colossal-AI引入了显存优化等技术,仅在普通个人电脑的单块消费级显卡(如GeForceRTX2070/30508GB)上即可快速完成微调任务过程,可硬件成本降低约7倍,大大降低了StableDiffusion等AIGC模型的使用门槛和成本,让用户不再局限于现有的权重推理,可以方便快捷地完成个性化定制服务。对于速度不敏感的任务,可以进一步使用Colossal-AINVMe,即使用低成本的硬盘空间来减少显存消耗。Colossal-AI的MemoryReductiontoStableDiffusionZeRO+GeminiColossal-AI背后的优化技术,支持使用零冗余优化器(ZeRO)的方式来消除内存冗余,可以在不牺牲计算粒度和通信效率的情况下,大幅提升内存使用效率。Colossal-AI引入了Chunk机制,我们可以进一步提升ZeRO的性能。一组按运算顺序连续的参数存储在一个Chunk中(一个Chunk是一个连续的内存空间),每个Chunk的大小相同。Chunk方式组织内存可以保证PCI-e和GPU-GPU之间网络带宽的高效利用,减少通信次数,避免潜在的内存碎片。Chunk机制此外,Colossal-AI的异构内存空间管理器Gemini支持将优化器状态从GPU卸载到CPU,以节省GPU内存占用。GPU内存和CPU内存(由CPUDRAM或NVMeSSD内存组成)可以同时使用,突破单个GPU内存墙的限制,进一步扩大可训练模型的规模。通过ZeRO+GeminiFlash提高硬件的模型容量AttentionLDM(LatentDiffusionModels)通过在模型架构中引入cross-attention(交叉注意力层)实现多模态训练,使Diffusion模型更灵活的实现class-条件,文本到图像,布局到图像支持。但是,交叉注意力层相对于原始扩散模型的CNN层增加了额外的计算开销,这大大增加了训练成本。Colossal-AI通过引入Flashattention机制,成功将attention速度提高104%,并将端到端训练的峰值显存降低23%。Flashattention是long-sequenceattention的加速版本。它使用Flatten来减少GPU高带宽内存(HBM)之间的内存读/写次数。Flashattention还针对blocksparseattention设计了一种近似的attention算法。比任何现有的近似注意力方法都快。其他优化Colossal-AI还集成了常见的优化技术,例如FP16和激活检查点。例如,通过用计算换取内存来激活检查点。它避免了存储整个计算图的所有中间激活用于反向计算,并且不在检查点部分保存中间激活,而是在反向传递中重新计算它们,进一步减少显存。而FP16在不影响精度的情况下,将原来的32位浮点计算转换为16位,减少了显存的使用,提高了计算效率。快速上手与常见的PyTorch开源项目不同,目前火热稳定的diffusion是基于PyTorchLightning构建的。PyTorchLightning为流行的深度学习框架PyTorch提供了简单易用、灵活高效的高层接口,为广大AI研究人员提供了简洁易用的高层抽象,使深度学习成为可能。学习实验更容易阅读和重现。已发布在GitHub上,已收获20.5kStars。受PyTorchLightning邀请,Colossal-AI已经集成为PyTorchLightning官方大模型解决方案。由于两者的强大结合,人工智能研究人员现在可以更有效地训练和使用扩散模型。以稳定扩散模型的训练为例,只需少量代码即可快速上手。fromcolossalai.nn.optimizerimportHybridAdamfromlightning.pytorchimporttrainerclassMyDiffuser(LightningModule):...defconfigure_sharded_model(self)->None:#createyourmodelhereself.model=construct_diffuser_model(...)...defconfigure_optimizers(self):#使用指定的优化器optimizer=HybridAdam(self.model.parameters(),self.lr)...model=MyDiffuser()trainer=Trainer(accelerator="gpu",devices=1,precision=16、strategy="colossalai")trainer.fit(model)Colossal-AI和PyTorchLightning也为OPT和HuggingFace等热门模型和社区提供了很好的支持和优化。低成本微调Colossal-AI在HuggingFace上提供了基于开源StableDiffusion模型权重微调的功能,以满足用户在短时间内训练出自己风格的模型的需求用更少的资源。用户只需简单修改Dataloader即可加载自己的微调数据集和读取预训练权重,只需修改参数配置yaml文件并运行训练脚本即可在个人电脑上微调自己的个性化模型。模型:目标:ldm.models.diffusion.ddpm.LatentDiffusionparams:your_sub_module_config:target:your.model.import.pathparams:from_pretrained:'your_file_path/unet/diffusion_pytorch_model.bin'...lightning:trainer:strategy:target:pytorch_lightning。strategies.ColossalAIStrategyparams:...pythonmain.py--logdir/your_log_dir-t-bconfig/train_colossalai.yaml快速推理Colossal-AI也支持原生的StableDiffusion推理管道,训练或微调后直接调用扩散器即可library和加载自己保存的模型参数,可以直接进行推理,不需要做其他改动,方便新用户熟悉推理过程,也可以让习惯使用原有框架的用户快速上手。fromdiffusersimportStableDiffusionPipelinepipe=StableDiffusionPipeline.from_pretrained("your_ColoDiffusion_checkpoint_path").to("cuda")image=pipe('你的提示',num_inference_steps=50)["sample"][0]image.save('文件路径')上述推理过程的生成工作OneMoreThing是基于以Diffusion为代表的AIGC训练优化突破,基于大模型时代的通用深度学习系统Colossal-AI。自适应任务调度等,实现AI大模型训练和推理的高效快速部署,降低AI大模型应用成本。自开源以来,Colossal-AI多次荣登GitHub和PapersWithCode热榜全球第一,与众多拥有数万star的明星开源项目一起受到国内外关注!经过国际专家的严格评审,Colossal-AI已成功入选SC、AAAI、PPoPP等国际顶级AI和HPC会议的官方教程。Colossal-AI应用:更好的蛋白质结构预测方案Colossal-AI相关方案已成功应用于自动驾驶、云计算、零售、医药、芯片等领域的知名厂商,获得广泛好评。例如,针对生物医药行业的蛋白质结构预测模型AlphaFold,基于Colossal-AI的优化方案FastFold成功突破单GPU可推断的最大氨基酸序列长度为10000,覆盖99.9999%的蛋白质。90%的蛋白质可以用消费级显卡解决。可以进一步加速并行训练和推理的全过程,帮助众多新药研发企业缩短研发流程,降低研发成本。开源地址:https://github.com/hpcaitech/ColossalAI