0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

只需添加几行代码,就能实现大模型的低成本训练和微调

iotmag 来源:物联网技术 作者:物联网技术 2022-07-14 14:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

不得不说,为了让更多人能用上大模型,技术圈真是各出奇招!

模型不够开放?有人自己上手搞免费开源版。

比如最近风靡全网的DALL·E Mini,Meta开放的OPT-175B(Open Pretrained Transformer)

都是通过复刻的方式,让原本不够open的大模型,变成人人可用

2bd08cd0-033c-11ed-ba43-dac502259ad0.png

还有人觉得模型太大,个人玩家很难承受起天价成本。

所以提出异构内存、并行计算等方法,让大模型训练加速又降本。

比如开源项目Colossal-AI,前不久刚实现了让一块英伟达3090就能单挑180亿参数大模型

2be23674-033c-11ed-ba43-dac502259ad0.png

而在这两天,他们又来了一波上新:

无缝支持Hugging Face社区模型,只需添加几行代码,就能实现大模型的低成本训练和微调。

2bf8b2aa-033c-11ed-ba43-dac502259ad0.png

要知道,Hugging Face作为当下最流行的AI库之一,提供了超过5万个AI模型的实现,是许多AI玩家训练大模型的首选。

而Colossal-AI这波操作,是让公开模型的训练微调变得更加切实可行。

并且在训练效果上也有提升。

单张GPU上,相比于微软的DeepSpeed,使用Colossal-AI的自动优化策略,最快能实现40%的加速。

而PyTorch等传统深度学习框架,在单张GPU上已经无法运行如此大的模型。

对于使用8张GPU的并行训练,仅需在启动命令中添加-nprocs 8就能实现。

2c08a782-033c-11ed-ba43-dac502259ad0.jpg

这波下来,可以说是把个人AI玩家需要考虑的成本、效率、实操问题,都拿捏住了~

无需修改代码逻辑

光说不练假把式。

下面就以OPT为例,详细展开看看Colossal-AI的新功能到底怎么用。

OPT,全称为Open Pretrained Transformer。

它由Meta AI发布,对标GPT-3,最大参数量可达1750亿。

最大特点就是,GPT-3没有公开模型权重,而OPT开源了所有代码及权重。

因此,每一位开发者都能在此基础上开发个性化的下游任务。

下面的举例,就是根据OPT提供的预训练权重,进行因果语言模型(Casual Language Modelling)的微调。

主要分为两个步骤:

  • 添加配置文件

  • 运行启动

第一步,是根据想进行的任务添加配置文件。

比如在一张GPU上,以异构训练为例,只需在配置文件里加上相关配置项,并不需要更改代码的训练逻辑。

比如,tensor_placement_policy决定了异构训练的策略,参数可以为CUDA、CPU及auto。

每个策略的优点不同、适应的情况也不一样。

CUDA:将全部模型参数都放置于GPU上,适合不offload时仍然能进行训练的传统场景

CPU:将模型参数都放置在CPU内存中,仅在GPU显存中保留当前参与计算的权重,适合超大模型的训练。

auto:根据实时的内存信息,自动决定保留在GPU显存中的参数量,这样能最大化利用GPU显存,同时减少CPU-GPU之间的数据传输。

对于普通用户来说,使用auto策略是最便捷的。

这样可以由Colossal-AI自动化地实时动态选择最佳异构策略,最大化计算效率。

 
from colossalai.zero.shard_utils import TensorShardStrategy
zero = dict(model_config=dict(shard_strategy=TensorShardStrategy(),                              tensor_placement_policy="auto"),            optimizer_config=dict(gpu_margin_mem_ratio=0.8))            

第二步,是在配置文件准备好后,插入几行代码来启动新功能。

首先,通过一行代码,使用配置文件来启动Colossal-AI。

Colossal-AI会自动初始化分布式环境,读取相关配置,然后将配置里的功能自动注入到模型及优化器等组件中。


colossalai.launch_from_torch(config='./configs/colossalai_zero.py')

然后,还是像往常一样定义数据集、模型、优化器、损失函数等。

比如直接使用原生PyTorch代码,在定义模型时,只需将模型放置于ZeroInitContext下初始化即可。

在这里,使用的是Hugging Face提供的OPTForCausalLM模型以及预训练权重,在Wikitext数据集上进行微调。


with ZeroInitContext(target_device=torch.cuda.current_device(),                     shard_strategy=shard_strategy,                    shard_param=True):    model = OPTForCausalLM.from_pretrained(                'facebook/opt-1.3b'                config=config            )

接下来,只需要调用colossalai.initialize,便可将配置文件里定义的异构内存功能统一注入到训练引擎中,即可启动相应功能。


engine, train_dataloader, eval_dataloader, lr_scheduler = colossalai.initialize(model=model,                                                                               optimizer=optimizer,                                                                               criterion=criterion,                                                                               train_dataloader=train_dataloader,                                                                               test_dataloader=eval_dataloader,                                                                               lr_scheduler=lr_scheduler)

还是得靠GPU+CPU异构

而能够让用户实现如上“傻瓜式”操作的关键,还是AI系统本身要足够聪明。

发挥核心作用的是Colossal-AI系统的高效异构内存管理子系统Gemini

它就像是系统内的一个总管,在收集好计算所需的信息后,动态分配CPU、GPU的内存使用。

具体工作原理,就是在前面几个step进行预热,收集PyTorch动态计算图中的内存消耗信息。

在预热结束后,计算一个算子前,利用收集的内存使用记录,Gemini将预留出这个算子在计算设备上所需的峰值内存,并同时从GPU显存移动一些模型张量到CPU内存。

2c12ffac-033c-11ed-ba43-dac502259ad0.png

Gemini内置的内存管理器给每个张量都标记一个状态信息,包括HOLD、COMPUTE、FREE等。

然后,根据动态查询到的内存使用情况,不断动态转换张量状态、调整张量位置。

带来的直接好处,就是能在硬件非常有限的情况下,最大化模型容量和平衡训练速度。

要知道,业界主流方法ZeRO (Zero Reduency Optimizer),尽管也利用CPU+GPU异构内存的方法,但是由于是静态划分,还是会引起系统崩溃、不必要通信量等问题。

而且,使用动态异构CPU+GPU内存的办法,还能用加内存条的办法来扩充内存。

怎么也比买高端显卡划算多了。

目前,使用Colossal-AI的方法,RTX 2060 6GB普通游戏本能训练15亿参数模型;RTX 3090 24GB主机直接单挑180亿参数大模型;Tesla V100 32GB连240亿参数都能拿下。

除了最大化利用内存外,Colossal-AI还使用分布式并行的方法,让训练速度不断提升。

它提出同时使用数据并行、流水并行、2.5维张量并行等复杂并行策略

方法虽复杂,但上手却还是非常“傻瓜操作”,只需简单声明,就能自动实现。

无需像其他系统和框架侵入代码,手动处理复杂的底层逻辑。


parallel = dict(    pipeline=2,    tensor=dict(mode='2.5d', depth = 1, size=4))

Colossal-AI还能做什么?

实际上,自开源以来,Colossal-AI已经多次在GitHub及Papers With Code热榜位列世界第一,在技术圈小有名气。

除了如上提到的用单张GPU训练大模型外,Colossal-AI在扩展至数十张甚至数百张GPU的大规模并行场景时,相比于英伟达Megatron-LM等现有系统,性能可以翻倍,使用资源可以降低至其十分之一之下。

换算一下,在预训练GPT-3等超大AI模型上,节省的费用可以达到数百万元。

2c330bbc-033c-11ed-ba43-dac502259ad0.png

据透露,Colossal-AI相关的解决方案已经被自动驾驶云计算、零售、医药、芯片等行业的知名厂商用上了。

与此同时,他们也非常注重开源社区建设,提供中文教程、开放用户社群论坛,根据大家的需求反馈不断更新迭代。

比如我们发现,之前有粉丝留言询问,Colossal-AI能否直接加载Hugging Face上的一些模型?

好嘛,这次更新就来了。

2c3f0c46-033c-11ed-ba43-dac502259ad0.png

所以,对于大模型训练,你觉得现在还有哪些难点亟需解决呢?

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源
    +关注

    关注

    3

    文章

    4431

    浏览量

    46610
  • 模型
    +关注

    关注

    1

    文章

    3880

    浏览量

    52364
  • 代码
    +关注

    关注

    30

    文章

    4985

    浏览量

    74578
  • 大模型
    +关注

    关注

    2

    文章

    3879

    浏览量

    5303

原文标题:1块GPU+几行代码,大模型训练提速40%!无缝支持HuggingFace,来自国产开源项目​

文章出处:【微信号:iotmag,微信公众号:iotmag】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    完结9章 AI训练师 入门与实战 教程资料2026

    AI 分布式存储:我觉得这才是大模型真正的地基,但没人愿意聊 所有人都在聊大模型怎么训练、怎么微调、怎么部署,但很少有人聊一个更基础的问题:数据怎么存、怎么读、怎么在几百张卡之间不打架
    发表于 05-28 18:23

    科大讯飞星火X2-Flash模型正式发布

    采用MoE架构,总参数30B,最大支持256K上下文,星火X2-Flash在智能体、代码等能力上实现了大幅提升。基于华为昇腾910B集群训练完成,星火再次证明国产大模型在本土算力架构上
    的头像 发表于 05-09 09:20 748次阅读
    科大讯飞星火X2-Flash<b class='flag-5'>模型</b>正式发布

    零基础手写大模型资料2026

    代码,大模型的开发是理论创新与工程实践的深度融合。即使不依赖复杂框架,掌握注意力机制、残差连接等核心原理的开发者,也能通过基础代码实现模型
    发表于 05-01 17:44

    HM博学谷狂野AI大模型第四期

    (低秩适应)和 P-Tuning 的源码实现,揭示为何只需训练极少量的参数即可让模型习得特定领域的知识。这种对训练机制的深度掌控,让开发者能
    发表于 05-01 17:30

    AI大模型微调企业项目实战课

    业、守规矩、可完全掌控的专属 AI 底座,已经成为头部企业的隐性共识。 二、 核心破局:微调——用极低成本撬动专业能力 很多企业对“自主训练模型”存在误解,认为这需要像顶级科技巨头那
    发表于 04-16 18:48

    训练到推理:大模型算力需求的新拐点已至

    在大模型产业发展的早期阶段,行业焦点主要集中在大模型训练所需的算力投入。一个万亿参数大模型训练可能需要数千张GPU芯片连续运行数月,
    的头像 发表于 02-05 16:07 1129次阅读
    从<b class='flag-5'>训练</b>到推理:大<b class='flag-5'>模型</b>算力需求的新拐点已至

    低成本仪表放大器AD622:特性、应用与设计要点

    Devices公司的AD622低成本仪表放大器。这款放大器具有诸多优秀特性,能满足多种应用需求,下面我们就来深入了解一下。 文件下载: AD622.pdf 一、AD622的特性亮点 1. 易用性与低成本 AD622使用起来非常方便,
    的头像 发表于 01-16 09:20 771次阅读

    低成本AI边缘计算盒子DIY:基于迅为RK3568和开源模型,轻松玩转智能识别

    低成本AI边缘计算盒子DIY:基于迅为RK3568和开源模型,轻松玩转智能识别
    的头像 发表于 11-12 13:42 2202次阅读
    <b class='flag-5'>低成本</b>AI边缘计算盒子DIY:基于迅为RK3568和开源<b class='flag-5'>模型</b>,轻松玩转智能识别

    LLM安全新威胁:为什么几百个毒样本就能破坏整个模型

    本文转自:DeepHubIMBA作者:DhanushKumar数据投毒,也叫模型投毒或训练数据后门攻击,本质上是在LLM的训练微调或检索阶段偷偷塞入精心构造的恶意数据。一旦
    的头像 发表于 10-29 11:06 979次阅读
    LLM安全新威胁:为什么几百个毒样本<b class='flag-5'>就能</b>破坏整个<b class='flag-5'>模型</b>

    MEMS组合导航如何实现低成本

    低成本,同时保障核心性能的呢? 关键转变:从“硬件堆料”到“算法赋能” 传统方案依赖于本身价格极高的惯性器件来保证性能。而ER-GNSS/MINS-05的思路是: · 采用经过市场验证的低成本MEMS传感器作为基础。 · 通过强大的系统级温度补偿和智能算法,
    的头像 发表于 10-23 15:30 581次阅读
    MEMS组合导航如何<b class='flag-5'>实现</b>超<b class='flag-5'>低成本</b>?

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    本帖欲分享在Ubuntu20.04系统中训练神经网络模型的一些经验。我们采用jupyter notebook作为开发IDE,以TensorFlow2为训练框架,目标是训练一个手写数字识
    发表于 10-22 07:03

    AI智能大模型,你身边的最好用的办公提效小能手

    几十亿到数万亿; 任务广:一次训练可以支持多个任务,具备通用能力; 适应快:只需少量样例,就能迁移到新任务中(Few-shot、Zero-shot)。 讯维AI智能大模型
    的头像 发表于 09-30 10:59 425次阅读

    知乎开源“智能预渲染框架” 几行代码实现鸿蒙应用页面“秒开”

    ,交互延迟等核心痛点,通过智能预测用户浏览目标进行提前渲染,只需几行代码即可显著提升复杂页面的加载性能,实现“页面秒开”的高效体验,为鸿蒙开发者带来开发效率和用户体验的双重飞跃。 随着
    的头像 发表于 08-29 14:32 780次阅读
    知乎开源“智能预渲染框架” <b class='flag-5'>几行</b><b class='flag-5'>代码</b><b class='flag-5'>实现</b>鸿蒙应用页面“秒开”

    基于大规模人类操作数据预训练的VLA模型H-RDT

    /AR头显和3D视觉技术的显著进步,当前只需低成本即可采集大量带有精确人手关节标注的第一人称人类操作视频。
    的头像 发表于 08-21 09:56 1307次阅读
    基于大规模人类操作数据预<b class='flag-5'>训练</b>的VLA<b class='flag-5'>模型</b>H-RDT