使用 PyTorch FSDP 微调 Llama 2 70B

小夏 汽车 更新 2024-01-29

在本文中,您将学习如何使用 Pytorch FSDP 微调 LLAMA 2 70B 以及相关的最佳实践。 在此过程中,我们将主要使用 Hugging Face Transformers、Accelerate 和 TRL 库。 我们还将向您展示如何在 Slurm 中使用 Accelerate。

完全分片数据并行性 (FSDP) 是一种训练范式,其中优化器状态、梯度和模型参数都跨设备分片。 向前传播时,每个 FSDP 单元执行 All Gather 以获取完整权重,然后使用它们进行计算,并在计算后丢弃其他设备的分片。 接下来是反向传播,然后是损耗计算。 反向传播时,每个 FSDP 单元执行 All Gather 操作以获取完整权重,并执行计算以获取本地批次的梯度。 这些梯度通过减少散点在设备上进行平均和分片,以便每个设备都可以更新其相应分片的参数。 有关 PyTorch FSDP 的详细信息,请参阅此博客文章:使用 PyTorch 完全分片数据并行加速大型模型训练。

FSDP 工作流。

节点数:2个,至少1个节点。

每个节点的 GPU 数:8

GPU类型:A100

GPU显存:80GB

节点内互联:nvlink

每个节点的内存:1TB

每个节点的 CPU 核心数:96

节点之间的互连:AWS 的 Elastic Fabric Adapter (EFA)。

在尝试使用 FSDP 微调 LLAMA 2 70B 时,我们遇到了三个主要挑战:

FSDP 在对模型进行分片之前加载整个预训练模型。 这意味着节点内的每个进程(即 Rank)都会加载整个 LLAMA-70B 模型,因此需要 7048 GB 的 2TB CPU 内存,其中 4 是每个参数的字节数,8 是每个节点的 GPU 数。 这会导致 CPU 内存不足,进而导致进程终止。 用full_state_dict保存完整的中间检查点并将其卸载到秩为 0 的 CPU 内存需要花费大量时间,并且通常会导致 NCCL 超时错误,因为通信库需要无限期挂起才能完成保存。 但是,完全关闭此选项并不是一个好主意,因为在训练结束时,我们需要保存完整的模型状态字典,而不是 fsdp 样式分片的状态字典。 我们需要提高速度并减少内存使用,以加快训练速度并节省计算成本。 在下文中,我们将讨论如何解决这些挑战,并最终微调 70b 模型!

首先列出重现结果所需的所有资源:

库:包含启用 Flash Attention v2 的热补丁。

FSDP 配置文件:

slurm 启动脚本 -launch.slurm

型:meta-llama/llama-2-70b-chat-hf

数据集:Smangrul code-chat-assistant-v1(Lima 和 Guanaco 数据集的混合,已转换为训练所需的格式)。

首先按照以下步骤安装 Flash Attention v2。 然后,安装最新的 PyTorch Nightly (cuda 11)。8)。接下来,根据此文件安装其余的相关软件。 在本文中,我们将从 main 分支安装

相似文章

    时事微观调查丨这是一个安心的地方

    日下午,闵行区总书记一行到闵行区新时代城市建设者 管理者之家参观。对地方加大保障性租赁住房融资建设力度和 一床一房一套房 多层次租赁住房体系建设的出台给予充分肯定。上海作为人口净流入的大都市,近年来已成为保障性租赁住房建设的典范。这到底是怎么回事?具体实施方案有哪些?总站时事组在位于上海市中心的徐汇...

    通过对 QLORA 技术的深入分析,开启大型语言模型微调的新篇章

    你有没有梦想过在你的家用电脑上运行那些通常只在顶级实验室中看到的巨大人工智能模型...

    棉花价格已经反弹,未来可能会发生什么变化

    棉布 微调 未来可能会有什么变化。市场调查和分析。棉花的变化一直受到业内人士的高度重视。在过去的一段时间里,棉花价格已经下跌,一度走低。不过,近期棉价小幅反弹,令市场预期回暖。造成这种现象的原因有很多,必须从多个角度进行分析。首先,世界经济的复苏至关重要。随着全球经济状况逐渐得到控制,疫苗的推出,世...

    燃气器具逾期使用或使用不当的严重危害

    天然气和法律。作者 刘金平.燃气燃烧器具是重要的燃气燃烧设备,是一种特殊的商品,与人们的生活息息相关。国家燃气燃烧器具实行强制性认证,严格规范产品的质量和使用寿命。人们每天都要做饭,还要与燃气器具打交道,这些都是人们生活中不可缺少的用品。燃气燃烧器具能否正常使用,关系到燃气的安全运行和人民群众的生命...

    使用 scikit learn 实现 TF IDF

    词频 逆文档频率 TF IDF 是一种流行的统计方法,它量化了文档中和整个语料库中单词的重要性,为信息检索 文档聚类和文本等任务提供了有价值的见解。它使用户能够轻松地将原始文本数据转换为有意义的数字表示,机器 习 模型可用于情感分析 主题建模 文档相似性检测等。开发人员可以在他们的项目中利用 TF ...