硬件预算最高直降46倍!低成本上手AIGC和千亿大模型,一行代码自动并行,Colossal-AI再升级

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 硬件预算最高直降46倍!低成本上手AIGC和千亿大模型,一行代码自动并行,Colossal-AI再升级

最近,AI 大模型连续火爆出圈,人工智能生成模型(AIGC)的热度尚未褪去,聊天机器人 ChatGPT 便引发全网热议,两周吸引百万用户。还有卷趴一半程序员的 AlphaCode,生成全新蛋白质的 ESM2 等,不断探索 AI 大模型落地的新领域。面对大模型带来的技术革命,连谷歌都拉响 “红色警报”,担心 ChatGPT 砸掉自己搜索引擎的饭碗。


作为当下最火热的开源 AI 大模型解决方案,Colossal-AI 已收获 Github Star 七千多颗,此前在 Stable Diffusion、GPT-3、AlphaFold 等大模型上展现卓越性能优势。针对 AI 大模型落地成本高昂这一痛点,Colossal-AI 本次更新聚焦于降低大模型应用成本以及增强易用性,包括:


Stable Diffusion 2.0 低成本训练 / 微调 / 推理,最多可降低显存消耗 5.6 倍,使硬件成本直降 46 倍,一行代码即可使用;

1750 亿参数 BLOOM 模型单机推理,显存消耗降低 4 倍,使硬件成本降低 10 余倍;

一行代码实现自动搜索最佳并行策略,显著降低分布式训练上手门槛,原生支持 Hugging Face,Timm 等热门 AI 模型库。


开源地址:

https://github.com/hpcaitech/ColossalAI


1. Stable Diffusion 2.0 低成本训练 / 微调 / 推理


AIGC(人工智能生成内容)目前是 AI 领域最热门的话题之一,还被 Science 评为 2022 年度十大科学突破。短短数月,爆红 AI 圈的 Stable Diffusion 已升级到 2.0 版本,正如部分用户所言:“我从未见过任何技术发展如此之快。V1 还没整透彻,V2 就来了”。


然而,高昂的成本也一定程度上限制了 AIGC 产业的大规模普及。以 Stable Diffusion 为例,其背后的 Stability AI 维护超过 4000 个英伟达 A100 的 GPU 集群,并已为此支出超过 5000 万美元的运营成本。面对快速迭代的模型、算法和下游任务,如何降低应用成本成为 AIGC 真正走向落地的核心问题。


Stable Diffusion 2.0 基于简单易用的 PyTorch Lightning 框架搭建。作为 PyTorch Lightning 的官方大模型解决方案,Colossal-AI 在第一时间跟进,开源了更为高效,硬件门槛更低的全套训练 / 微调 / 推理方案:


可减少训练显存消耗 5.6 倍,硬件成本最高降低 46 倍;

支持 DreamBooth 单 GPU 快速个性化微调;

推理显存消耗降低 2.5 倍。


该方案也将于近期合并进入当下最火热的 AI 模型社区 Hugging Face,进一步方便用户使用。


1.1 训练


为了加快训练速度,降低训练成本,使用更大的 batch size 已成为被广泛使用的有效手段。但 GPU 有限的显存容量,严重限制了 batch size 大小,推高了训练硬件门槛。


Colossal-AI 通过一系列显存优化技术和支持 Stable Diffusion 2.0,使 Stable Diffusion 平均在每个 GPU 上使用大 batch size 16 训练的显存需求从 64.5GB 降低 5.6 倍至 11.6GB,还可扩展至单 GPU 或多 GPU 并行。相比使用最先进的 A100 80GB,目前仅需 3060 等消费级显卡即可满足需求,硬件成本最高直降 46 倍。更多用户可以在消费级 GPU 上,低成本地开展 Stable Diffusion 的相关研究与应用落地。




1.1.1 背后显存优化


Flash Attention:早在 Stable Diffusion 1.0 版本,Colossal-AI 就率先引入了 Flash Attention 技术,成功将 attention 的速度提升 104%,将端到端训练的峰值显存减少 23%。Flash Attention 是针对长序列 attention 的加速版本,使用 Flatten 来减少 GPU 高带宽内存(HBM)之间的内存读 / 写次数,Flash attention 同时针对块状稀疏的 attention,设计了一个近似的注意力算法,比任何现有的近似 attention 方法都要快。在 Stable Diffusion 1.0 版本,整个 Diffusion Model 只有少量 attention 层,Flash attention 还没有体现出其性能优势。在 Stable Diffusion 2.0 中,由于将大量卷积层替换为 attention 层,进一步发挥了 Flash Attention 的显存优化潜力。


ZeRO + Gemini:Colossal-AI 支持使用零冗余优化器 (ZeRO) 的方法来消除内存冗余,与经典的数据并行性策略相比,可极大提高内存使用效率,同时不牺牲计算粒度和通信效率。此外,Colossal-AI 还引入了 Chunk 机制进一步提升 ZeRO 的性能。运算顺序上连续的一组参数存入一个 Chunk 中(Chunk 即一段连续的内存空间),每个 Chunk 的大小相同。Chunk 方式组织内存可以保证 PCI-e 和 GPU-GPU 之间网络带宽的高效利用,减小了通信次数,同时避免潜在的内存碎片。



而 Colossal-AI 的异构内存空间管理器 Gemini 支持将优化器状态从 GPU 卸载到 CPU,以节省 GPU 内存占用。可以同时利用 GPU 内存、CPU 内存(由 CPU DRAM 或 NVMe SSD 内存组成)来突破单 GPU 内存墙的限制,进一步扩展了可训练模型规模。


1.1.2 一行代码快速上手


作为 PyTorch Lightning 的官方合作伙伴,仅需一行代码即可调用 ColossalAI 的上述显存优化。











from lightning.pytorch import trainer, LightningModulefrom lightning.pytorch.strategies import ColossalAIStrategy
Mystrategy = ColossalAIStrategy(use_chunk=True, enable_distributed_storage=True, placement_policy=auto)
trainer = Trainer(accelerator="gpu", devices=4, precision=16, strategy=Mystrategy)trainer.fit(model)


1.2 DreamBooth 微调


DreamBooth 是一种用于个性化文本到图像模型(例如 Stable Diffusion)的方法,只需要几张(3~5 张)期望主题的图像,即可生成指定主题的一系列图像。用户只需直接运行文件 train_dreambooth_colossalai.py,即可在该微调任务上充分发挥 Colossal-AI 的显存优化,个性化快速微调自己的图文模型,极大地降低了使用门槛。



1.3 推理


由于模型推理对数值精度不敏感,这为实现低精度的低成本推理提供了可能。对于 Stable Diffusion 2.0 模型,可以通过添加一行代码,支持模型的 Int8 量化推理,显存消耗降低 2.5 倍,仅需 3.1GB,且不造成显著性能损失。



model = replace_module(model)



2. 1750 亿 BLOOM 模型低成本推理


随着模型规模的不断增大,模型推理的显存及内存占用也变成了不可忽视的关键因素。以 Hugging Face 发布的 1750 亿参数开源模型 BLOOM 为例,如果直接使用常见的 FP32/FP16 进行推理,在单节点 8 张 GPU 使用模型并行,每张 GPU 需要消耗至少 87.5GB/43.8GB 的显存。如此大的显存占用,即使是最先进的 8 卡 A100(80GB/40GB)服务器,也无法直接部署推理服务,而多节点推理又会带来沉重的额外成本和通信开销。


Colossal-AI 实现了高效的 Int8 量化和模型并行推理,可以将 1750 亿参数的 BLOOM 等大模型的推理服务,部署到 3090/4090 等消费级显卡的 8 卡服务器,同时不产生显著的 CPU 内存占用提升及性能损耗。相比原有的 A100 方案,可降低硬件部署成本十余倍。



在 Colossal-AI 中,通过对模型进行了 Int8 量化,可将模型总体显存占用从 352.3GB(FP16)降低到 185.6GB, 同时使用 Colossal-AI 的模型并行技术,将每张显卡的占用减少到了 23.2GB。在模型并行中,为了不增加 CPU 内存占用,Colossal-AI 在主进程中进行模型的量化和切分工作,其余的每个进程中分别使用 lazy_init 获得几乎不占显存和内存的 meta model,再通过 gloo backend 在进程之间传递模型参数。通过上述方案,在没有分段加载模型参数的情况下,便可以使得 CPU 内存占用峰值,达到理论上的较优水平。相较于将模型按层切分的 “类流水线” 分布方式,模型并行可以提高非密集请求下的显存使用效率。


3. 一行代码自动并行


大模型的分布式混合部署是一个非常复杂的问题,目前常见的分布式大模型训练方案,都依赖用户人工反复尝试以及系统专家的经验来进行配置部署。然而这对绝大多数 AI 开发者来说十分不友好,因为不希望将时间精力花费在研究分布式系统和试错上。


Colossal-AI 提供了业界急需的一套高效易用自动并行系统。相比现有其他手动配置复杂并行策略和修改模型的解决方案,Colossal-AI 仅需增加一行代码,提供 cluster 信息以及单机训练模型即可获得分布式训练能力,并且原生支持包括 Hugging Face,Timm 等热门 AI 模型库。






# wrap the model using auto_enginemodel, optimizer = auto_engine(model, optimizer, cluster_info)# normal training loop...



因此,Colossal-AI 可以极大地降低 AI 开发者的使用分布式技术训练和微调大模型门槛。同时,自动并行系统可以从更细粒度搜索并行策略,找到更加高效的并行方案。


3.1 Graph Tracing


Colossal-AI 是首个基于 PyTorch 框架使用静态图分析的自动并行系统。PyTorch 作为一个动态图框架,获取其静态的执行计划是机器学习系统领域被长期研究的问题。Colossal-AI 使用基于 torch.FX Tracer 的 ColoTracer,在 tracing 过程中推导并记录了每个 tensor 的元信息,例如 tensor shape,dims,dtype 等,可以为后续的自动并行策略搜索提供帮助。因此 Colossal-AI 具有更好的模型泛化能力,而不是依靠模型名或手动修改来适配并行策略。


3.2 细粒度分布式训练策略搜索


Colossal-AI 会在满足内存预算的限制下,以最快运行时间为目标,为每个 op 进行策略搜索,最终得到真实训练时的策略,包括每个 tensor 的切分策略,不同计算节点间需要插入的通信算子类型,是否要进行算子替换等。现有系统中的张量并行,数据并行,NVIDIA 在 Megatron-LM 等并行系统中使用的 column 切分和 row 切分并行等混合并行,都是自动并行可以搜索到的策略的子集。除了这些可以手动指定的并行方式外,Colossal-AI 的自动并行系统有能力为每个 op 指定独特的并行方式,因此有可能找到比依赖专家经验和试错配置的手动切分更好的并行策略。


3.3 分布式 tensor 与 shape consistency 系统


与 PyTorch 最新发布的 DTensor 类似,Colossal-AI 也使用了 device mesh 对集群进行了抽象管理。具体来说,Colossal-AI 使用 sharding spec 对 tensor 的分布式存储状态进行标注,使用 shape consistency manager 自动地对同一 tensor 在不同 sharding spec 间进行转换。这让 Colossal-AI 的通用性和易用性极大地提升,借助 shape consistency manager 可以没有负担地切分 tensor,而不用担心上游 op 的 output 与下游的 input 在集群中的存储方式不同。



相较于 PyTorch DTensor,Colossal-AI 有以下 3 个优势:


Colossal-AI 的 device mesh 可以 profiling 到集群性能指标,对不同的通信算子进行耗时估算。

Colossal-AI 的 shape consistency 会贪心地搜索 sharding spec 间的转换方式,而不是朴素地逐 dimension 进行转换,这样能找到更高效的转换路径,进而使得 sharding spec 间的转换通信开销更小。

加入了 all_to_all 操作,使得 Colossal-AI 的扩展性更强,这在大规模集群上进行训练时,可以展现出很大的优势。


3.4 与 activation checkpoint 结合


作为大模型训练中必不可少的显存压缩技术,Colossal-AI 也提供了对于 activation checkpoint 的自动搜索功能。相比于大部分将最大显存压缩作为目标的技术方案,Colossal-AI 的搜索目标是在显存预算以内,找到最快的 activation checkpoint 方案。同时,为了避免将 activation checkpoint 的搜索一起建模到 SPMD solver 中导致搜索时间爆炸,Colossal-AI 做了 2-stage search 的设计,因此可以在合理的时间内搜索到有效可行的分布式训练方案。



4. 关于 Colossal-AI



面向大模型时代的通用深度学习系统 Colossal-AI,可实现高效快速部署 AI 大模型训练和推理,降低 AI 大模型应用成本。自开源以来,Colossal-AI 已经多次在 GitHub 热榜位列世界第一,获得 GitHub Star 超七千颗,并成功入选 SC、AAAI、PPoPP 等国际 AI 与 HPC 顶级会议的官方教程。


Colossal-AI 相关解决方案已成功在自动驾驶、云计算、零售、医药、芯片等行业知名厂商落地应用,广受好评。例如,近期火爆的 ChatGPT 尚未开源,且不具备联网功能。Colossal-AI 已成功帮助某世界 500 强企业,开发具备在线搜索引擎能力增强的聊天机器人模型。


开源地址:

https://github.com/hpcaitech/ColossalAI

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
13天前
|
人工智能 Java Serverless
阿里云函数计算助力AI大模型快速部署
随着人工智能技术的快速发展,AI大模型已经成为企业数字化转型的重要工具。然而,对于许多业务人员、开发者以及企业来说,探索和利用AI大模型仍然面临诸多挑战。业务人员可能缺乏编程技能,难以快速上手AI模型;开发者可能受限于GPU资源,无法高效构建和部署AI应用;企业则希望简化技术门槛,以更低的成本和更高的效率利用AI大模型。
71 12
|
12天前
|
人工智能 安全 数据安全/隐私保护
文档智能 & RAG让AI大模型更懂业务测评
文档智能 & RAG让AI大模型更懂业务
134 73
|
14天前
|
机器学习/深度学习 存储 人工智能
【AI系统】昇思MindSpore并行
本文介绍昇思MindSpore的并行训练技术,包括张量重排布、自动微分等,旨在简化并行策略搜索,提高大规模模型训练效率。文章探讨了大模型带来的挑战及现有框架的局限性,详细说明了MindSpore如何通过技术创新解决这些问题,实现高效的大模型训练。
67 20
【AI系统】昇思MindSpore并行
|
14天前
|
机器学习/深度学习 人工智能 分布式计算
【AI系统】混合并行
混合并行融合了数据并行、模型并行和流水线并行,旨在高效利用计算资源,尤其适合大规模深度学习模型训练。通过将模型和数据合理分配至多个设备,混合并行不仅提升了计算效率,还优化了内存使用,使得在有限的硬件条件下也能处理超大型模型。3D混合并行(DP+PP+TP)是最先进的形式,需至少8个GPU实现。此策略通过拓扑感知3D映射最大化计算效率,减少通信开销,是当前深度学习训练框架如Deepspeed和Colossal AI的核心技术之一。
59 15
【AI系统】混合并行
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
GLM-4V-Flash:智谱 AI 免费开放的图像理解大模型 API 接口
智谱AI推出的GLM-4V-Flash是一款专注于图像理解的免费开放大模型,提供API接口支持用户上传图片URL或Base64编码图片获取详细的图像描述。该模型通过深度学习和卷积神经网络技术,简化了图像分析流程,提高了开发效率,适用于内容审核、辅助视障人士、社交媒体、教育和电子商务等多个应用场景。
88 14
GLM-4V-Flash:智谱 AI 免费开放的图像理解大模型 API 接口
|
14天前
|
存储 人工智能 PyTorch
【AI系统】张量并行
在大模型训练中,单个设备难以满足需求,模型并行技术应运而生。其中,张量并行(Tensor Parallelism, TP)将模型内部的参数和计算任务拆分到不同设备上,特别适用于大规模模型。本文介绍了张量并行的基本概念、实现方法及其在矩阵乘法、Transformer、Embedding和Cross Entropy Loss等场景中的应用,以及通过PyTorch DeviceMesh实现TP的具体步骤。
49 11
【AI系统】张量并行
|
10天前
|
机器学习/深度学习 人工智能 并行计算
转载:【AI系统】AI轻量化与并行策略
本文探讨了AI计算模式对AI芯片设计的重要性,重点分析了轻量化网络模型和大模型分布式并行两大主题。轻量化网络模型通过减少模型参数量和计算量,实现在资源受限设备上的高效部署;大模型分布式并行则通过数据并行和模型并行技术,解决大模型训练中的算力和内存瓶颈,推动AI技术的进一步发展。
转载:【AI系统】AI轻量化与并行策略
|
11天前
|
机器学习/深度学习 人工智能 物联网
AI赋能大学计划·大模型技术与应用实战学生训练营——电子科技大学站圆满结营
12月05日,由中国软件行业校园招聘与实习公共服务平台携手阿里魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行AIGC项目实战营·电子科技大学站圆满结营。
AI赋能大学计划·大模型技术与应用实战学生训练营——电子科技大学站圆满结营
|
11天前
|
人工智能 数据挖掘
AI长脑子了?LLM惊现人类脑叶结构并有数学代码分区,MIT大牛新作震惊学界!
麻省理工学院的一项新研究揭示了大型语言模型(LLM)内部概念空间的几何结构,与人脑类似。研究通过分析稀疏自编码器生成的高维向量,发现了概念空间在原子、大脑和星系三个层次上的独特结构,为理解LLM的内部机制提供了新视角。论文地址:https://arxiv.org/abs/2410.19750
54 12
|
14天前
|
机器学习/深度学习 存储 人工智能
【AI系统】流水并行
在大模型训练中,单个设备难以满足计算和存储需求,分布式训练成为必要。模型并行是其中关键技术之一,通过将模型计算任务拆分至不同设备上执行,提高训练效率。模型并行主要包括朴素模型并行、张量并行和流水线并行。流水线并行通过将模型的不同层分配到不同设备上,采用微批次处理,提高设备利用率。Gpipe和PipeDream是两种流行的流水线并行方案,前者通过重叠前向和反向传播提升效率,后者则通过1F1B策略实现交错执行,最大化利用计算资源。
45 15

热门文章

最新文章