650亿参数,训练飙升38%!LLaMA基础大模型复刻最佳实践开源,GitHub已获30k星

news2024/11/27 12:14:21

开源LLaMA神话再次复现!首个开源650亿参数大模型高性能预训练方案,训练加速38%,低成本打造量身大模型。

「百模大战」正风起云涌,AIGC相关企业融资和并购金额也屡创新高,全球科技企业争相入局。

然而,AI大模型风光无限的背后是成本极其高昂,单次预训练成本或高达上千万元。基于LLaMA等现有开源大模型的微调,也难以满足企业打造核心竞争力和多样化商业使用等需求。

因此,如何低成本量身打造预训练基础大模型,已成为AI大模型浪潮的关键瓶颈。

Colossal-AI作为全球最大、最活跃的大模型开发工具与社区,以当前被最广泛使用的LLaMA为例,提供开箱即用的650亿参数预训练方案,可提升训练速度38%,为大模型企业节省大量成本。

图片

开源地址:https://github.com/hpcaitech/ColossalAI

LLaMA点燃开源热情

Meta开源的7B~65B LLaMA大模型进一步激发了打造类ChatGPT的热情,并由此衍生出Alpaca、Vicuna、ColossalChat等微调项目。

但LLaMA只开源了模型权重且限制商业使用,微调能够提升和注入的知识与能力也相对有限。对于真正投身大模型浪潮的企业来说,仍必须预训练自己的核心大模型。

为此,开源社区也做了诸多努力:

  • RedPajama:开源可商用类LLaMA数据集,无训练代码和模型

  • OpenLLaMA:开源可商用类LLaMA 7B, 13B模型,使用EasyLM基于JAX和TPU训练

  • Falcon:开源可商用类LLaMA 7B, 40B模型,无训练代码

但对于最主流的PyTorch + GPU生态,仍缺乏高效、可靠、易用的类LLaMA基础大模型预训练方案。

最佳大模型预训练方案提速38%

针对上述空白与需求,Colossal-AI首个开源了650亿参数LLaMA低成本预训练方案。

相比业界其他主流选择,该方案可提升预训练速度38%,仅需32张A100/A800即可使用,并且不限制商业使用。

图片

而像原生PyTorch、FSDP等,则因显存溢出无法运行该任务。Hugging Face accelerate、DeepSpeed、Megatron-LM也未对LLaMA预训练进行官方支持。

开箱即用

1. 安装Colossal-AI

git clone -b example/llama https://github.com/hpcaitech/ColossalAI.gitcd ColossalAI# install and enable CUDA kernel fusionCUDA_EXT=1 pip install .

2. 安装其他依赖

cd examples/language/llama# install other dependenciespip install -r requirements.txt# use flash attentionpip install xformers

3. 数据集

默认数据集togethercomputer/RedPajama-Data-1T-Sample将在首次运行时自动下载,也可通过-d或--dataset指定自定义数据集。

4. 运行命令

已提供7B和65B的测速脚本,仅需根据实际硬件环境设置所用多节点的host name即可运行性能测试。​​​​​

cd benchmark_65B/gemini_auto
bash batch12_seq2048_flash_attn.sh

对于实际的预训练任务,使用与速度测试一致,启动相应命令即可,如使用4节点*8卡训练65B的模型。

colossalai run --nproc_per_node 8 --hostfile YOUR_HOST_FILE --master_addr YOUR_MASTER_ADDR pretrain.py -c '65b' --plugin "gemini" -l 2048 -g -b 8 -a

例如,使用Colossal-AI gemini_auto并行策略,可便捷实现多机多卡并行训练,降低显存消耗的同时保持高速训练。还可根据硬件环境或实际需求,选择流水并行+张量并行+ZeRO1等复杂并行策略组合。

其中,通过Colossal-AI的Booster Plugins,用户可以便捷自定义并行训练,如选择Low Level ZeRO,Gemini,DDP等并行策略。

Gradient checkpointing通过在反向传播时重新计算模型的activation来减少内存使用。通过引入Flash attention机制加速计算并节省显存。

用户可以通过命令行参数便捷控制数十个类似的自定义参数,在保持高性能的同时为自定义开发保持了灵活性。

图片

ColossalAI最新的ShardFormer极大降低了使用多维并行训练LLM的上手成本。

现已支持包括LLaMA的多种等主流模型,且原生支持Huggingface/transformers模型库。

无需改造模型,即可支持多维并行(流水、张量、ZeRO、DDP等)的各种配置组合,能够在各种硬件配置上都发挥卓越的性能。

AI大模型系统基础设施 Colossal-AI

Colossal-AI为该方案提供了核心系统优化与加速能力支持,它由加州伯克利大学杰出教授James Demmel和新加坡国立大学校长青年教授尤洋领导开发。

Colossal-AI基于PyTorch,可通过高效多维并行、异构内存等,降低AI大模型训练/微调/推理的开发与应用成本,降低GPU需求等。

Colossal-AI上述解决方案已在某世界500强落地应用,在千卡集群性能优异,仅需数周即可完成千亿参数私有大模型预训练。上海AI Lab与商汤等新近发布的InternLM也基于Colossal-AI在千卡实现高效预训练。

自开源以来,Colossal-AI已经多次在GitHub热榜位列世界第一,获得GitHub Star超3万颗,并成功入选SC、AAAI、PPoPP、CVPR、ISC等国际AI与HPC顶级会议的官方教程,已有上百家企业参与共建Colossal-AI生态。

其背后的潞晨科技,近期获得数亿元A轮融资,已在成立18个月内已迅速连续完成三轮融资。

开源地址:

https://github.com/hpcaitech/ColossalAI

参考链接:

https://www.hpc-ai.tech/blog/large-model-pretraining

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/772462.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于allure和pycharm的运行模式

案例 新建一个项目allure_mode 新建一个python代码test_allure_001.py 代码如下 import pytest, os def test_001(): assert 1 1 if __name__ __main__: pytest.main([-sv, __file__, --alluredir, ./html, --clean-alluredir]) os.system(fallure se…

试玩python的web框架 flask、fastapi、tornado、django

文章目录 一、Flask入门案例 [官网](https://flask.net.cn/quickstart.html) [其它参考](https://zhuanlan.zhihu.com/p/104273184?utm_id0)二、FastAPI入门案例 [官网](https://fastapi.tiangolo.com/zh/) [w3cschool教程](https://www.w3cschool.cn/fastapi/fastapi-feature…

数据容器入门(dict 字典)

字典的定义: 字典的定义,同样使用{},不过存储的元素是一个个的:键值对,如下语法: # 定义字典字面量 {key:value, key:value, ........., key:value}# 定义字典变量 my_di…

JVM面试题总结

一.请简述对象的创建过程 对象的new字节码执行指令如下图 首先0指令new出一片内存空间,然后进行对象的初始化,初始化完成前变量都是初始值如m0 然后创建连接,t指向对象。 二.DCL单例要不要加volatile? DCL单例就是要懒汉式从创建…

广州市番禺区委领导一行莅临和鲸科技考察交流

7月18日下午,广州市番禺区区委常委、组织部部长、人才工作局局长唐力明,组织部副部长、两新工委书记罗翌洁及组织部其他相关领导一行莅临和鲸科技开展实地考察与调研,国投科创广州基地负责人、海创人才南方创业服务中心常务副秘书长徐斌&…

中小企业部署MES管理系统需要考虑哪些问题

随着制造业的快速发展,越来越多的中小企业开始意识到数字化管理的重要性。为了提高生产效率、降低成本、提升品质及满足客户需求,部署MES生产管理系统成为了中小企业实现数字化转型的关键一步。然而,在部署MES管理系统时,中小企业…

公开讲座笔记 | 雷达学报 雷达系统微课 - 第三讲 相控阵雷达 与 “1+1=2“

原文链接:https://mp.weixin.qq.com/s?__bizMzg4MjgxMjgyMg&mid2247486366&idx2&sn242bd062b6bcd1d32acba16a148f58c9&chksmcf51b967f8263071d912a178881c7ff3c4143b78201c30723a8c121cc53f47ade584a918648c#rd 第三讲 相控阵雷达 与 “112” 主讲…

JavaScript数组所有方法集合

##方法 1、concat 用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组 2、copyWithin 浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度 3、entries 返回一个新的 Array Iterator 对象&#xf…

最新版本的OpenLens,有两个隐藏技能

最新版本的OpenLens v6.4.15,有两个隐藏技能 1、需要添加扩展插件alebcay/openlens-node-pod-menu,查看pod时才会出现进入命令行的按钮 2、测试环境查看pod、node时可能会出现监控数据未显示,点击集群的Setting,在Metrics里选…

网页性能优化,各种指标检测,谷歌统计使用,pagespeed

每日鸡汤:每个你想要学习的瞬间都是未来的你像自己求救 前端性能优化是个很重要的模块,但是如何查看性能优化后的网页的效果也是很重要的,要从技术的层面总结,不能只靠用户的感受。 常用的评估网页应用性能的指标有 LCP, FID, CL…

TortoiseGit 入门指南13:拣选

对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。 这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用 合并(merge)。另一种情况是,你只需要部分代码变动&#xff0…

目标检测算法:FPN思想解读

目标检测算法:FPN思想解读 说明 ​ FPN算法一种方法/思想,在许多的模型架构中都经常采用,也是提高模型精度的重要方法。 免责申明 ​ 有误写/错写/错误观点/错误解读,或者大家有其它见解,都可以在评论区指出&#xff0…

Linux中常用的指令

ls ls [选项] [目录或文件] 功能:对于目录,列出该目录下所有的子目录和文件;对于文件,列出该文件的文件名和其他属性 常用选项: -a:列出目录下的所有文件,包括以.开头的隐藏文件 -l:列出文件的详细信息。…

想要在独立站上赚钱,需要考虑哪些关键点?

我们都知道,没有什么工作是简单的,但是做得好的话,独立站确实是非常赚钱的。现在建立一个网站非常容易,你需要的花费也不高。 刚好后台也收到很多小伙伴问我独立站的盈利模式?怎么做才能赚钱?要在独立站上…

Django中使用反向关系名称(related_name)解决由“多对多”关系引起的字段名字冲突问题引起的迁移命令报错。

当在模型中为关系字段添加了related_name参数后,您可以使用该参数指定的名称来引用反向关系。下面是一个简单的例子来说明如何引用反向关系。 假设您有以下两个模型: from django.db import modelsclass Author(models.Model):name models.CharField(…

Ceph 服务的运用

目录 一、资源池 pool 管理 1.创建一个 Pool 资源池 2.查看集群 Pool 信息 3.查看资源池副本的数量 4.查看 PG 和 PGP 数量 5.修改 pg_num 和 pgp_num 的数量为 128 6.修改 Pool 副本数量为 2 7.修改默认副本数为 2 8.删除 Pool 资源池 8.1修改配置文件 8.2推送 ceph…

10.1寸三防加固平板电脑Windows工业平板

当前,移动计算设备的需求日益增长,特别是在现场工作和移动任务中的应用。为了满足这一需求,三防加固平板电脑SP-Q19采用了整机一体成型的设计,无合成拼接,使得长侧边的直线条与短侧边的圆弧形巧妙融合。同时&#xff0…

【wxWidgets】使用布局控件进行窗口布局

使用布局控件进行窗口布局 窗口布局基础 为了在各种环境中都能使窗口拥有合适的位置和大小,可能需要在OnSize事件中计算每一个窗口的大小并设置新位置,当然使用窗口布局控件可以更方便地实现 如果选择使用布局控件,可以通过自己编写或者使用…

创新创业项目申报管理系统vue+nodejs+mysql

开发语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 本站是一个B/S模式系统,采用nodejs框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界…

详解UDP协议

在讲本篇文章之前,给读者介绍两个指令 1.netstat:用来查看网络状态的重要工具 语法:netstat [选项] n 拒绝显示别名,能显示数字的全部转化成数字l 仅列出有在 Listen (监听) 的服務状态p 显示建立相关链接的程序名t (tcp)仅显示tcp相关选项…