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