Optimum 文档

多节点训练

您正在查看 main 版本,该版本需要从源代码安装。如果您想要常规 pip 安装,请查看最新的稳定版本 (v1.24.0)。
Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

多节点训练

使用多个 Gaudi 服务器执行多节点训练可以很容易地完成。本指南将展示如何

  • 设置多个 Gaudi 实例
  • 设置您的计算环境
  • 启动多节点运行

设置多个 Gaudi 实例

可能存在两种类型的配置

  • 使用 Gaudi NIC 或主机 NIC 进行横向扩展(本地部署)
  • 使用 Intel® Tiber™ AI Cloud 实例进行横向扩展

本地部署

要在本地部署服务器,请查看 Intel® Gaudi® AI 加速器文档的安装分布式训练页面。

Intel Tiber AI Cloud 实例

按照 Intel® Gaudi® AI 加速器文档的创建帐户并获取实例页面上的步骤操作。

启动多节点运行

一旦您的 Intel Gaudi 实例准备就绪,请按照 Intel® Gaudi® AI 加速器文档的设置多服务器环境页面上的步骤操作。

最后,有两种可能的方式在多个节点上运行您的训练脚本

  1. 使用gaudi_spawn.py脚本,您可以运行以下命令
python gaudi_spawn.py \
    --hostfile path_to_my_hostfile --use_deepspeed \
    path_to_my_script.py --args1 --args2 ... --argsN \
    --deepspeed path_to_my_deepspeed_config

其中 --argX 是要运行的脚本的参数。

  1. 使用 DistributedRunner,您可以将此代码片段添加到脚本中
from optimum.habana.distributed import DistributedRunner

distributed_runner = DistributedRunner(
    command_list=["path_to_my_script.py --args1 --args2 ... --argsN"],
    hostfile=path_to_my_hostfile,
    use_deepspeed=True,
)

环境变量

如果您需要为所有节点设置环境变量,您可以在 .deepspeed_env 文件中指定它们,该文件应位于您执行的本地路径或您的主目录中。格式如下

env_variable_1_name=value
env_variable_2_name=value
...

建议

  • 强烈建议对多节点运行使用梯度检查点以获得最高的加速。您可以使用 这些示例 中的 --gradient_checkpointingGaudiTrainingArguments 中的 gradient_checkpointing=True 来启用它。
  • 更大的批量大小应带来更高的加速。
  • 不建议进行多节点推理,并且可能会提供不一致的结果。
  • 在 Intel Tiber AI Cloud 实例上,使用 --privileged 标志运行您的 Docker 容器,以便 EFA 设备可见。

示例

在此示例中,我们微调了在 WikiText 数据集上预训练的 GPT2-XL 模型。我们将使用 Github 存储库中给出的因果语言建模示例

第一步是在多个节点上使用以下命令训练模型

python ../gaudi_spawn.py \
    --hostfile path_to_hostfile --use_deepspeed run_clm.py \
    --model_name_or_path gpt2-xl \
    --gaudi_config_name Habana/gpt2 \
    --dataset_name wikitext \
    --dataset_config_name wikitext-2-raw-v1 \
    --do_train \
    --output_dir /tmp/gpt2_xl_multi_node \
    --learning_rate 4e-04 \
    --per_device_train_batch_size 16 \
    --gradient_checkpointing \
    --num_train_epochs 1 \
    --use_habana \
    --use_lazy_mode \
    --throughput_warmup_steps 3 \
    --deepspeed path_to_deepspeed_config

评估不在同一命令中执行,因为我们目前不建议执行多节点推理。

模型训练完成后,我们可以使用以下命令对其进行评估。参数 --model_name_or_path 应等于上一个命令的参数 --output_dir

python run_clm.py \
    --model_name_or_path /tmp/gpt2_xl_multi_node \
    --gaudi_config_name Habana/gpt2 \
    --dataset_name wikitext \
    --dataset_config_name wikitext-2-raw-v1 \
    --do_eval \
    --output_dir /tmp/gpt2_xl_multi_node \
    --per_device_eval_batch_size 8 \
    --use_habana \
    --use_lazy_mode
< > 在 GitHub 上更新