Optimum 文件
多節點訓練
加入 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 加速器文件中設定多伺服器環境頁面上的步驟操作。
最後,有兩種方法可以在多個節點上執行您的訓練指令碼
- 使用
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 是要執行指令碼的引數。
- 使用
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 checkpointing)以獲得最高的加速比。您可以在這些示例中使用
--gradient_checkpointing或在您的GaudiTrainingArguments中設定gradient_checkpointing=True來啟用它。 - 更大的批處理大小應能帶來更高的加速比。
- 不建議進行多節點推理,因為它可能產生不一致的結果。
- 在 Intel Tiber AI Cloud 例項上,請使用
--privileged標誌執行您的 Docker 容器,以確保 EFA 裝置可見。
示例
在本示例中,我們將在 WikiText 資料集上微調一個預訓練的 GPT2-XL 模型。我們將使用 Github 倉庫中提供的因果語言建模示例。
第一步是使用此命令在多個節點上訓練模型
PT_HPU_LAZY_MODE=1 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 引數。
PT_HPU_LAZY_MODE=1 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