MosaicML-面向生成式AI的机器学习平台

news2024/12/23 17:17:45

前段时间,大数据巨头 Databricks 宣布已签署最终协议,将以13亿美元的价格,收购位于旧金山的人工智能初创公司MosaicML 。这篇文章来自 MosaicML官方的技术博客,是对 MosaicML 大模型训练平台的一个简单介绍。
AIGC领域最大收购:Databricks 13亿美元买下MosaicML,成立仅2年员工60人-36氪
​36kr.com/p/2319199142134407

https://www.mosaicml.com/blog/train-custom-gpt-diffusion-models
​www.mosaicml.com/blog/train-custom-gpt-diffusion-models
MosaicML 平台旨在应对训练 ChatGPT、LaMDA 和 Stable Diffusion 等大模型的挑战。这篇文章详细分析了训练这些模型的困难,并展示了 MosaicML 平台如何使 AI 大模型的训练变得更加轻松。

如今,像 ChatGPT、LaMDA 和 Stable Diffusion 这样的 AI 大模型为初创企业和成熟企业提供了新的发展或者腾飞机会。

然而,对于许多公司和机构来说,训练这些模型过于复杂和昂贵,需要特定的专业知识和工具。因此,只有少数几家公司拥有训练这些模型的能力。我们建立了 MosaicML 平台,以使大规模的模型训练更加容易。现在,各种规模的公司和机构都可以训练自己行业的特定大模型,拥有完整的模型所有权,并且不用担心数据隐私问题。

  1. AI大模型训练面临的挑战

基础设施方面的挑战:如GPU可用性不足、软件工具栈的复杂性、数百个GPU的扩展以及容错能力,使得训练大模型变得困难
什么使得训练大模型如此困难?

  1. GPU 的可用性

训练大模型需要大量先进的 GPU。举例来说,Meta 公司的拥有 1750 亿参数的 OPT-175 模型在 1024 个 NVIDIA A100 GPU 上进行了为期 33 天的训练。类似地,谷歌的拥有 1370 亿参数的 LaMDA 模型在 1024 个 TPU 上进行了长达 57 天的训练。

GPU 往往一卡难求。并且,一旦选择了某家云服务商并最终获得所需的 GPU 访问权限,专有工具如 AWS SageMaker Model Parallel Library 会使您难以将模型训练迁移到另一家云服务商(微软云或者谷歌云)。

  1. 工具栈的复杂性

一旦有了 GPU 集群,就需要一个工具栈来协调数千个 GPU 的分布式训练任务。以下是一个大模型工具栈的简介(为简单起见,省略了与 ML 训练无关的部分)。

一个大模型工具栈的简介
配置这种技术工具栈中每一部分的组件都是棘手且容易出错的。比如,错误配置 InfiniBand 驱动程序,可能会导致训练速度减慢 5 倍!

  1. 横向扩展

训练拥有数十亿参数的大模型往往需要在至少数百个 GPU 上进行操作,以使大模型能够放进 GPU 显存并在合理的时间内完成训练。

在如此多的 GPU 上进行分布式训练是一项具有挑战性的任务,它涉及到需要选择合适的并行策略(数据并行、张量并行和流水线并行),并集成实现对应并行策略的工具库(DeepSpped 或者 Megatron),调整训练的超参数如 global batch size 等,并确保不会因为 GPU 显存不足或其他错误导致训练崩溃。

大模型分布式训练是非常脆弱的,一个错误的选择可能导致运行失败或生成无用的模型。

  1. 容错性

部署软件工具栈和配置分布式训练只是个开始。在庞大的计算基础设施上运行如此复杂的软件工具栈涉及许多操作上的挑战,需要处理各种奇怪的故障。

在 Meta AI 的 OPT-175B 训练日志中,他们描述了训练过程中发生的 100 多次重启。他们的日志揭示了训练过程中遇到的运维挑战:

2021年5月12日…从 checkpoint_15_45000 恢复训练需要 50 分钟! 2021年11月18日…无法连续训练超过 1-2 天… 许多故障需要手动检测和修复,浪费了计算资源和研究人员的时间…"
清华大学 KEG 团队负责训练大语言模型 GLM-130B,也分享了类似的经验:

2022年1月…频繁的随机硬件故障… 2022年3月…无法启动超过 2,000 个计算节点 => 通过调整 Linux 内核 TCP 参数克服这一问题并支持 6,000 个节点的训练…
正如上文所示(以及我们自己的经验所学),训练大语言模型极易出现诸如 GPU 或网络故障、软件工具中的错误和错误配置、影响模型收敛的loss波动等错误。这些错误会导致显著的延迟,并消耗大量宝贵的时间和金钱进行调试和故障排除。

  1. MosaicML Platform: 为 AI 大模型训练而生
    为了解决这些挑战,我们建立了 MosaicML 平台,该平台已被斯坦福大学 CRFM 和 StabilityAI 等组织使用,用于在各自安全环境中使用自己的数据训练 LLMs。

2.1 一个稳定可靠的大模型工具栈
我们从头开始设计了 MosaicML 平台,以解决训练工具栈内各个部分的问题:从驱动程序和工具包一直到 K8S 作业编排和分布式训练。
在这里插入图片描述

MosaicML 平台提供了一系列大模型工具栈
我们的平台提供了必要的基础设施,可以部署和编排跨任意数量 GPU 的训练作业,同时处理故障检测和自动恢复,实现快速恢复。它还包括一个 Runtime,提供经过性能测试的 Docker 镜像,配置了最新的 GPU 驱动程序,一个分布式训练框架(Composer)和一个流式数据加载器(StreamingDataset),可与多种数据格式和云存储配合使用。

我们不断更新和测试 MosaicML 平台,以确保提供的工具栈内所有部分都经过优化,并能无缝协同工作。

2.2 在多云上进行训练
MosaicML 平台通过使训练作业能够在任何主要云服务商上运行而无需更改代码,从而使客户摆脱了对特定云服务商的依赖。我们使客户能够在他们自己的云环境中训练模型,以确保我们永远不会看到他们的训练数据。

为了实现在多个云上的无缝使用和部署,我们设计了具有三部分架构的平台:客户端界面、控制平面和计算平面。

The MosaicML platform has three parts: the client interfaces, the control plane, and the compute plane.
客户端界面
在这里插入图片描述

包括用于启动和管理训练作业的 Python API 和命令行界面。
提供 Web 控制台以管理访问、用户和团队,以及进行使用账户、配额管理和计费。
控制界面

托管 MosaicML 多节点编排、故障检测和恢复逻辑。
编排跨本地集群或云服务商(如 AWS、OCI、GCP、Azure 和 CoreWeave)的训练。
管理应用逻辑和元数据,如运行配置、日志等。
计算界面

支持分布式训练。
与云服务商无关:可部署到任何 Kubernetes 集群,包括本地。
保护数据隐私:客户的训练数据永远不会离开他们的虚拟私有云(VPC)。
无状态且无需在不同集群之间同步数据集和代码。数据集在流式传输的同时,用户代码、Docker 镜像和其他对象会在运行时动态加载。
借助 MosaicML平台,在不同云服务商间进行训练就像在运行提交中更改一个参数一样简单。以下是使用MosaicML CLI(MCLI)的示例:

动图封面
Change cloud providers with a single parameter in your run submission.
2.3 无缝扩展训练模型的规模
跨多个节点和更大模型规模的训练扩展不仅仅是生成一堆作业。为了使扩展“正常运作”,我们解决了整个工具栈中的一系列挑战,包括编排、优化的并行配置和稳定的数据加载模块。我们使客户能够在少数几个 GPU 上运行实验,然后扩展到数百个GPU进行完整的模型训练,无需进行代码更改!

动图
Scale from 1B to 30B parameters with our optimized configurations.
我们使用 Kubernetes 构建了 MosaicML 编排工具,因为它使我们能够实现多云操作,并且非常适合管理大量计算工作负载。然而,Kubernetes 缺乏 LLM 训练所需的功能,如跨节点(“gang-scheduling”)和跨集群调度。为解决此问题,我们实现了自己的调度程序,以优化大规模训练作业的编排。

在 MosaicML 调度到作业后,MosaicML 训练运行时会进行以下操作:

通过配置优化网络和设置多进程来处理在多个节点间分配作业。
自动确定如何将模型和数据批次(data batch)适应 GPU 显存,并实现自动梯度累积,无需调整 batch size 以避免 CUDA 内存溢出错误。
使用我们的流式数据集处理大规模的流式训练数据 - 只需指向您的云存储桶并开始训练。

Auto-gradient accumulation figures out how much of the data batch can fit in memory at once.
2.4 运行监控:自动故障检测与快速恢复
训练大模型容易出现错误,经常会遇到从硬件崩溃到 NCCL 超时再到 loss 激增等各种失败。我们在整个工具栈上进行全面的监控,快速检测问题并使用自动优雅恢复从最新的 Checkpoint 重新开始训练,让用户无需盯着监视并手动重新运行失败的作业。

重新启动作业涉及几个耗时(和浪费金钱!)的步骤,比如重新拉取 Docke r镜像、下载最新的 Checkpoint 和重新运行数据加载器。为了最大程度减少 GPU 空闲时间并在从故障中恢复时为客户节省成本,我们采用了几种加速作业恢复的技术,比如 Docker 镜像预取和缓存以及数据加载器的 fast-forwarding。

MosaicML 平台会自动处理 LLM 训练的所涉及到的所有方面,让我们的客户可以专注于训练他们的模型。

  1. 使用 MosaicML
    使用MosaicML平台,训练大语言模型就像将我们的平台指向一个 S3 存储桶并启动一个“训练运行”一样简单。

  2. 首先,安装一些SDK工具。

$ pip install mosaicml-cli
Collecting mosaicml-cli

Successfully installed mosaicml-cli-0.2.36
2. 安装 SDK 包到本地后,从 MosaicML 控制台获取您的 API 密钥,然后使用 Python SDK 在本地环境中设置您的 API 密钥。

import mcli.sdk as msdk
msdk.initialize(api_key=‘your-api-key’)
3. 接下来,您需要配置用于训练所需的集成。这些集成包括 GitHub 用于将代码拉取到训练集群;对象存储,比如 AWS S3 用于训练数据、访问和 Checkpoint 的存储;容器注册表,比如 Docker Hub 用于拉取容器镜像;以及实验跟踪工具,比如 CometML 或 Weights & Biases。了解更多支持的集成和如何在我们的文档中设置它们。

We integrate with all of your favorite tools.
4. 添加了所有配置后,现在是时候使用 MCLI 或者 Python SDK 启动训练任务了。下面的代码片段使用 Python SDK 和这个示例配置。

from mcli.api.runs import RunConfig, create_run

Load your run configuration

See https://github.com/mosaicml/examples for examples

run_config = RunConfig.from_file(‘mcli-1b.yaml’)

Configure the number of GPUs and cluster to train on

run_config.gpus = 32
run_config.cluster = ‘aws-us-east-1’

Launch!

created_run = create_run(run_config)
要了解更多关于使用 MosaicML 进行训练的信息和资料,可以访问 MosaicML 官网获得更多资料。

https://www.mosaicml.com/
​www.mosaicml.com/

来源https://zhuanlan.zhihu.com/p/660840489
发布于 2023-10-12 11:24・IP 属地浙江

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

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

相关文章

三防平板:定制化服务的趋势——以智慧医疗为例

随着科技的飞速发展,三防平板产品凭借其坚固耐用、适应复杂环境的特性,在众多行业领域中崭露头角。而在AI迅速增长的今天,AI智慧医疗成为了一个备受关注的热点,它不仅推动了医疗行业的数字化转型,也为三防平板产品的定…

OS向量测试方法-PPMU

1.OS向量测试方法 详细步骤: 检查工作: ①检查每根pin连接到指定的PPMU资源是否正确 ②继电器资源是否一一对应 代码编写步骤: 1、 ①设计者设计的测试电路继电器重置初始化 ②close应该闭合的继电器 2、 ①DPS pin电压置0V,同时考虑电流量…

1500万“黑悟空”,打醒一线大厂了吗?

《黑神话:悟空》“霸占”热搜以来,几乎每天都在创造新纪录。 近日,有机构称全平台已售1500万份,仅以268标准版计算,已然拿下40亿元人民币收入,这下10万天兵天将,每人要打150只猴子了。 发售之…

私有云仓库Harbor,docker-compose容器编排

一、私有云仓库 1.pip工具 是python的包管理工具,和yum对rehat的关系是一样的 pip install --upgrade pip 升级版本,会报错,需要指定源 pip install --upgrade pip20.3 -i https://mirrors.aliyun.com/pypi/simple pip …

本地部署一个WordPress博客结合内网穿透实现异地远程访问本地站点

文章目录 前言1. 安装WordPress2. 创建WordPress数据库3. 安装相对URL插件4. 安装内网穿透发布网站4.1 命令行方式:4.2. 配置wordpress公网地址 5. 配置WordPress固定公网地址 前言 本文主要介绍如何在Linux Ubuntu系统上使用WordPress搭建一个本地网站&#xff0c…

React学习day04-useEffect、自定义Hook函数

11、useEffect(一个React Hook函数) (1)作用:用于在React组件中创建不是由事件引起而是由渲染本身引起的操作,比如发送AJAX请求,更改DOM等(即:视图渲染完后会触发一些事…

网络游戏服务器如何有效防护DDoS与CC攻击

随着网络游戏行业的蓬勃发展,其背后的服务器架构日益复杂,同时也面临着前所未有的网络安全威胁。其中,分布式拒绝服务(DDoS)和CC(Challenge Collapsar)攻击尤为突出,它们通过大量伪造…

90.游戏安全项目-项目搭建与解析

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:易道云信息技术研究院 上一个内容:89.游戏安全项目-htdSdk安装 79.游戏分析工具闪屏问题优化与数据被修改高亮 这里面有注…

权力迷宫:皇权、律法与人性的深度博弈

权力迷宫:皇权、律法与人性的深度博弈 - 孔乙己大叔在人类社会的复杂织锦中,权力与律法的关系往往呈现出一种微妙而深刻的悖论。律法,这一社会秩序的基石,常被视作维护公正、约束行为的利器,然而,在金字塔的…

深度理解指针(5)----指针完结

hello,各位小伙伴们我们现在已经对指针有了深刻的理解,指针来到了收尾环节!让我们来做几题例题来复习之前学习的内容吧! 最近爆火的黑神话悟空不知道小伙伴们体验了没有,小编对八戒还有蜘蛛精的凄惨爱情深深打动特意找…

Springboot使用Mongo数据库实现文件的上传下载预览等服务接口

MongoDB GridFS 简介 MongoDB GridFS是一个用于存储和检索大型文件的规范,它允许在MongoDB数据库中存储超过16MB的文件,如图片、音频、视频等。GridFS通过将文件分割成多个小的chunk(文件片段),每个chunk通常为255KB&…

记URL重定向漏洞骚技巧

0x1 前言 这几天跟着我那几个师傅们在学习URL重定向漏洞,学习了比较多的对于这个漏洞的骚技巧,以及在挖掘edusrc漏洞和企业src相关的URL重定向漏洞时的一些技巧和不错的思路。 最近在跟我那几个师傅们研究学习URL重定向漏洞,然后在一些厂商…

EHS综合管理解决方案落地:管理效率飞升70%!

所有制造企业都面临着一个问题:如何保证EHS制度高质、高效执行?——上海斯歌EHS综合管理解决方案应运而生。 前不久,上海斯歌EHS综合管理解决方案(企业安环综合管理解决方案)在某全球领先的汽配公司成功落地&#xff0…

安灯系统在汽车电子工厂应用案例汇总

在汽车电子工厂中,高效的生产管理和及时的问题解决至关重要。安灯系统作为精益制造执行中的核心工具也是 MES 制造执行系统的重要组成部分,为汽车电子工厂带来了显著的效益。安灯系统是一个面向制造业生产现场,快速联络生产、物料、维修、主管…

VSCode中TypeScript调试配置

一、背景 最近想用TypeScript编译项目,在创建完项目后,我发现VSCode只有在调试TypeScript的单个文件时生效,如果存在引用,再进行断点调试,则调试功能不生效了。 随后,我让Chatgpt 生成一个一套配置&#…

C语言基础(二十五)

栈排序不是最高效的方法,因为栈是一种后进先出(LIFO, Last In First Out)的数据结构,而排序要求根据元素的顺序(如升序或降序)重新排列。但是,可以利用栈的特性,结合其他排序算法的思…

group by 中一定要包含 select 中的 除聚合函数以外 的 所有字段

今天在项目过程中报错: ### SQL: SELECT UNIT_NAME,dc.CAPTION as area,ifnull(a.bgSum,0) AS bgSum,ifnull(concat(FORMAT(a.bgSum/k.m*100,1),%),0.0%) as bgRatio FROM inspection_station_info isi left join dic_content dc on dc.CODE_VALUE…

K 线图快速绘制教程:使用 KLineChart 展示 DolphinDB K 线

KLineChart 是一款开源、简单易用、适用场景丰富的 Web 前端金融图表,基于 html5 canvas 构建,零依赖压缩包仅 40K,非常轻量。它可以用于渲染金融 K 线图,同时支持多种数据源,提供了丰富的交互功能以及指标计算接口。由…

动物消消乐:Scratch消除类游戏作品

小虎鲸Scratch资源站-免费Scratch作品源码,素材,教程分享平台! 体验《动物消消乐》,开启欢乐消除之旅! 在这个快节奏的时代,放松心情、享受乐趣显得尤为重要。小虎鲸Scratch资源站为您带来了全新的游戏体验——《动物消消乐》。这款游戏不仅…

【CTF Web】BUUCTF Upload-Labs-Linux Pass-01 Writeup(JS分析+代码审计+文件上传)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的…