导致大模型使用成本增高的核心原因是显存限制。GPU 计算虽快,但显存容量有限,无法容纳大模型。Colossal-AI 针对这一痛点,通过异构内存系统,高效地同时使用 GPU 显存以及价格低廉的 CPU 内存,在仅有一块 GPU 的个人 PC 上便能训练高达 180 亿参数 GPT,可提升模型容量十余倍,大幅度降低了 AI 大模型微调和推理等下游任务和应用部署的门槛,还能便捷扩展至大规模分布式。 Hugging Face 为深度学习社区提供了超过 5 万个 AI 模型的实现,最其中也不乏像 GPT, OPT 这样的大模型,现已成为最流行的 AI 库之一。
Colossal-AI 无缝支持 Hugging Face 社区模型,让大模型对每一位开发者都变得触手可及。接下来,我们将以 Meta 发布的大模型 OPT 为例,展现如何使用 Colossal-AI,仅需添加几行代码,便可实现大模型的低成本训练和微调。 开源地址:https://github.com/hpcaitech/ColossalAI 低成本加速大模型 OPT OPT 模型 OPT 的全称为 Open Pretrained Transformer,是 Meta(Facebook) AI 实验室发布的对标 GPT-3 的大规模 Transformer 模型。与 OpenAI 尚未公开模型权重的 GPT-3 相比,Meta AI 慷慨地开源了所有的代码以及模型权重,极大推动了 AI 大模型的民主化,每一位开发者都能以此为基础开发个性化的下游任务。接下来,我们将用 Hugging Face 提供的 OPT 模型的预训练权重进行 Casual Language Modelling 的微调。 添加配置文件 想要使用 Colossal-AI 中各个强大功能,用户无需更改代码训练逻辑,只用添加一个简单的配置文件,即可赋予模型所期望的功能,比如混合精度、梯度累积、多维并行训练、冗余内存优化等。 在一张 GPU 上,以异构训练为例,我们只需在配置文件里加上相关配置项。其中 tensor_placement_policy 决定了我们异构训练的策略,这个参数可以为 cuda、cpu 以及 auto。各个策略有不同的优点: cuda: 将全部模型参数都放置于 GPU 上,适合不 offload 时仍然能进行训练的传统场景;cpu 则会将模型参数都放置在 CPU 内存中,仅在 GPU 显存中保留当前参与计算的权重,适合超大模型的训练;auto 则会根据实时的内存信息,自动决定保留在 GPU 显存中的参数量,这样能最大化利用 GPU 显存,同时减少 CPU-GPU 之间的数据传输。 对于一般用户而言,仅需选择 auto 策略,由 Colossal-AI 自动化地实时动态选择最佳异构策略,最大化计算效率。
fromcolossalai.zero.shard_utilsimportTensorShardStrategy zero = dict(model_config=dict(shard_strategy=TensorShardStrategy(), tensor_placement_policy="auto"), optimizer_config=dict(gpu_margin_mem_ratio=0.8)