00:00:00这是 DeepSpeed,微软的开源库。它可以直接接入 PyTorch,专门解决内存的核心痛点。
00:00:07它能让你在单张 GPU 上运行那些本会瞬间崩溃的模型,而不会导致显存溢出。大模型失败通常不是因为跑得慢,
00:00:14而是因为优化器状态、梯度和参数撑爆了显存。DeepSpeed 的秘诀在于 ZeRO,它采用了切片技术来处理训练状态。
00:00:23这样你就不用在每个地方都存储相同的数据。我们会持续更新视频,记得订阅关注。
00:00:30现在让我们直接进入实操。由于我使用的是 Mac 且配有 M4 Pro 芯片,
00:00:40没有英伟达显卡会导致运行更困难,所以我会在 Google Colab 上运行这一切。
00:00:46首先,我会快速检查一下 GPU 情况,然后通过 pip 安装所有的依赖包。
00:00:51我要安装 PyTorch、Hugging Face 和 DeepSpeed,然后运行 ds_report 来检查 CUDA 和编译器的设置。
00:00:59再多装几个包,确保运行顺畅。
00:01:02接下来我们要创建 config.json 文件来配置 DeepSpeed。这个配置文件才是重头戏。
00:01:09我们将从 ZeRO 阶段二开始,它会将优化器状态和梯度分散到
00:01:14多个 GPU 上,从而显著减少内存使用,而模型参数仍保持副本同步。别想得太复杂,这步当初可把我折腾坏了。
00:01:22建议从官方文档开始,一次只改动一个地方,千万别乱加
00:01:28各种配置。你可以在 Hugging Face 和 DeepSpeed 的文档中找到相关的配置参考。
00:01:34我的 Python 脚本大部分也是从这些文档里直接拿来的。
00:01:37不过为了让我的 Mac 系统处理得更好,我做了一些细微的调整。
00:01:42如果这一步失败了,就先停下来,因为大多数 DeepSpeed 的问题都是 CUDA 匹配问题,而不是你的模型问题。
00:01:48现在我们运行一下,看看它的表现。
00:01:51为了让示例跑得更快,我会导入一个小型数据集。
00:01:58好了,几分钟后就能看到训练步数和 GPU 显存的使用峰值。
00:02:03没错,这次运行的训练损失值其实没怎么下降。
00:02:08但我们可以通过优化或使用更大数据集来改善损失。现在,
00:02:13来看看人们最容易踩的坑——即便用了它,有时还是会显存溢出。
00:02:16ZeRO 分为不同阶段,每个阶段都在回答一个问题:我可以停止在单张 GPU 上存储哪些内容?
00:02:24第一阶段对优化器状态进行分片;第二阶段在此基础上又对梯度进行了分片。
00:02:30现在你正在大幅削减那些悄悄吞噬内存的负载。然后我们还有 ZeRO 第三阶段。
00:02:36这是个大杀器。它对优化器状态、梯度和参数全部进行分片处理。
00:02:40这是对内存的最大程度优化,但即便如此,有时可能还是不够用。
00:02:45如果你还是跑不动模型,ZeRO-Infinity 可以将数据卸载到 CPU 甚至 NVMe 硬盘上。
00:02:50是的,虽然这是在用速度换规模,但有时首要任务是得先让模型跑起来。
00:02:56如果你觉得内存不是唯一的问题,那你说对了。DeepSpeed 还支持数据并行、
00:03:04流水线并行和张量并行的 3D 并行技术,并且内置了对混合专家模型(MoE)的支持。
00:03:09这样稀疏模型就不会耗尽你的算力了。
00:03:12现在我们有了真正的选择。DeepSpeed 与 Hugging Face 和 Accelerate 集成得非常好,
00:03:19所以你不需要从零开始构建所有东西。
00:03:21基本上只需按需取用即可。至于基准测试,它很大程度上取决于你的硬件配置,
00:03:27所以不要盲目相信那些漂亮的数据。我自己尝试跑了几次,
00:03:30但重申一遍,由于我用的是 M4 Pro,在这种基础模型上很难再进行进一步优化了。
00:03:36虽然不好定论,但其他 DeepSpeed 项目已经展现出了巨大的吞吐量优势,
00:03:41尤其是在内存成为瓶颈的情况下。如果你使用的是 Windows 或 Linux,收益会非常明显。
00:03:46所以,最好的办法就是去尝试。先从官方配置开始,
00:03:51就像我在这里做的一样:针对 Mac 做点微调,然后解决 CUDA 问题。
00:03:56如果你启用了卸载功能,记得观察 CPU 内存。如果你之后决定使用多显卡并行,
00:04:01Accelerate 会帮到你。DeepSpeed 基本上就是那个“老子今天绝不内存溢出”的保底按钮。
00:04:07一旦你理解了 ZeRO 和卸载机制,在有限的硬件上运行超大模型就变得触手可及。
00:04:14虽然刚开始配置时确实会让人头大。
00:04:17如果这个工具帮到了你或者你喜欢这类开发工具,请订阅关注,我们下期视频见。