Megatron-DeepSpeed github页面

威震天-DeepSpeed

NVIDIA Megatron-LM 的 DeepSpeed 版本增加了对 MoE 模型训练课程学习、3D 并行等多项功能的额外支持。该examples_deepspeed/文件夹包含有关 DeepSpeed 支持的功能的示例脚本。

最近与 NVIDIA/Megatron-LM 同步

2023 年 7 月,我们通过 git 合并 1100 多个提交与 NVIDIA/Megatron-LM 仓库(此仓库的分叉来源)进行了同步。详细信息可在文件examples_deepspeed/rebase中找到。考虑到合并提交的数量,在我们尚未测试的情况下可能会出现错误,我们非常欢迎您的贡献(错误报告、错误修复拉取请求)。我们还创建了一个备份分支,即此同步之前的版本。此备份分支仅用于比较测试和在您需要调试主分支时临时使用。我们不打算继续支持同步之前的版本。

在 Azure 和 AzureML 上运行

若要在 Azure 上试用 DeepSpeed,Megatron 的这个分支提供了易于使用的配方和 bash 脚本。我们强烈建议从文件examples_deepspeed/azureml夹中的 AzureML 配方开始。如果您有自定义基础架构(例如 HPC 集群)或基于 Azure VM 的环境,请参考examples_deepspeed/azure文件夹中的 bash 脚本。

以下是 Megatron-LM 的原始 README。请注意,下面提到的示例来自原始 NVIDIA/Megatron-LM 存储库。它们都没有集成 DeepSpeed 技术,其中一些可能由于此 Megatron-DeepSpeed 存储库中的更改而无法工作。因此,我们建议您转到../examples_deepspeed/包含集成 DeepSpeed 技术并由 DeepSpeed 团队测试的示例的文件夹。

Megatron(1、23 )是一款大型、功能强大的 Transformer ,由 NVIDIA 的应用深度学习研究团队开发。此存储库用于正在进行的大规模训练大型 Transformer 语言模型的研究。我们使用混合精度开发了高效、模型并行(序列管道)和多节点预训练基于 Transformer 的模型,例如GPTBERTT5

以下是我们直接使用Megatron的一些项目:

Megatron 还用于NeMo Megatron,这是一个帮助企业克服构建和训练具有数十亿和数万亿参数的复杂自然语言处理模型的挑战的框架。

我们的代码库能够有效地训练非常大(数千亿个参数)的语言模型,并且具有模型和数据并行性。为了演示代码如何随着多个 GPU 和模型大小而扩展,我们考虑从 10 亿个参数一直到 1 万亿个参数的 GPT 模型。所有模型都使用 51,200 个词汇表和 2048 个序列长度。我们改变隐藏大小、注意力头数量和层数以达到特定的模型大小。随着模型大小的增加,我们也会适度增加批量大小。我们利用NVIDIA 的 Selene 超级计算机进行扩展研究,并为最大的模型使用多达 3072 个A100 GPU。每个集群节点都有 8 个 NVIDIA 80GB A100 GPU。下图显示,我们几乎线性扩展到在 3072 个 GPU 上运行的 1 万亿个参数模型。请注意,这些结果来自基准运行,这些模型未经训练以达到收敛;然而,FLOP 是针对端到端训练进行测量的,即包括数据加载、优化甚至日志记录等所有操作。

缩放图

下表显示了模型 (MFU) 和硬件 (HFU) FLOP 利用率,适用于最多 1T 参数的选定配置(请参阅我们的论文以了解这些计算方法)。随着模型大小的增加,我们实现了更好的 GPU 利用率,对于一万亿参数模型,我们分别达到了 56.3% 和 57.0% 的 MFU 和 HFU。请注意,这些数字也是在基准测试运行中测量的,在这种情况下,使用数据并行大小 1 进行测量。由于数据并行组之间需要梯度全归约,数据并行性会带来一些开销。但是,对于大型 Transformer 模型,这种开销并不大,并且几乎可以通过将梯度全归约与反向传播重叠而完全消除。

模型尺寸 模型 FLOP 利用率 硬件 FLOP 利用率
22B 41.5% 43.7%
175B 51.4% 52.8%
530B 56.0% 57.0%
1吨 56.3% 57.0%

内容

DeepSpeed命令参数是指在启动容器时使用的命令参数,用于配置DeepSpeed库和Megatron-Deepspeed的相关设置。根据引用的内容,以下是DeepSpeed命令参数的解释: - -d: 启用后台模式 (detached mode),容器将在后台运行。 - -t: 分配一个伪终端 (pseudo-TTY),使得用户可以与容器进行交互。 - --network=host: 使用主机网络模式,容器将共享主机的网络命名空间。 - --gpus all: 分配所有可用的GPU给容器使用。 - --privileged: 赋予容器完全的特权,使其可以访问主机的设备。 - --ipc=host: 使用与主机共享的IPC命名空间,用于进程间通信。 - --ulimit memlock=-1: 设置内存锁定的限制为无限制,以防止内存被交换出去。 - --ulimit stack=67108864: 设置栈的限制为67108864字节,用于控制进程的栈空间。 - --name megatron-deepspeed: 为容器指定一个名称。 - -v /etc/localtime:/etc/localtime: 将主机的时区信息挂载到容器内部,以保持时间同步。 - -v /root/.ssh:/root/.ssh: 将主机的SSH配置目录挂载到容器内部,以便容器可以访问SSH密钥。 - nvcr.io/nvidia/pytorch:21.10-py3: 指定使用的Docker镜像,这里使用了nvcr.io/nvidia/pytorch的21.10-py3版本。 综上所述,以上是DeepSpeed命令参数的解释。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [阿里云AIGC- 使用Megatron-Deepspeed训练GPT-2并生成文本](https://blog.csdn.net/qq_39970492/article/details/131090026)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

强化学习曾小健

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值