上下文平行 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

上下文平行

內容平行程度是一種模型平行處理原則,會沿著序列維度分割模型啟動。與其他序列平行處理原則技術不同,它只會分割LayerNormRMSNorm,內容平行處理原則會分割沿序列維度的網路輸入和所有中間啟動。

SMPv2 與變壓器引擎集成以實現上下文並行性,並且可以與 PyTorchFSDP和SMP張量平行處理一起使用。您可以同時啟用所有三個平行線以進行模型訓練。上下文平行性對於具有大型啟動大小和長序列長度的訓練模型很有幫助。它通過允許每個設備僅計算分數的一部分並沿著序列維度輸出的輸出,從而加速注意力分數和注意力輸出的計算。雖然張量平行處理原則也會透過沿著隱藏維度進行分割來加速運算,但是由於計算需求隨著序列維度而二次增加,因此上下文平行性的優勢更為顯著。

Hugging Face 變壓器型號與SMP專業平行性兼容

SMPv2 目前為以下 Hugging Face 變壓器型號提供上下文平行性支援。

  • GPT-尼歐克斯

  • 美洲駝 2 和駱駝 3

設定專家平行處理

將設定context_parallel_degree parameter為平均除以叢集GPUs中的數目的值。例如,如果您有 8 個GPU執行個體,請使用 2、4 或 8 做為context_parallel_degree。我們建議從較小的context_parallel_degree值開始,然後逐漸增加它,直到模型符合所需輸入序列長度的GPU記憶體。

下列程式碼片段說明如何將SMP初始化模組新增torch.sagemaker.init()至訓練指令碼,並在遵循中介紹的兩個步驟程序時,以訓練工作啟動器的JSON格式設定組SMP態字典。開始使用 SageMaker 模型平行程式庫 v2您不需要對 PyTorch 模型或PyTorch FSDP組態進行任何變更。如需 context_parallel_degree 參數的詳細資訊,請參閱 SMPv2 核心功能配置參數

在您的訓練指令碼中

作為步驟 1 的一部分,請使用啟動 SMP v2 torch.sagemaker.init() 來初始化您的指令碼,並使用 torch.sagemaker.transformAPI.

import torch.sagemaker as tsm tsm.init() from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_config(..) model = tsm.transform(model)

SMP配置

步驟 2 中,將下列參數新增至 SageMaker PyTorch 估算器的SMP組態字典中。

{ ..., # other SMP config parameters "context_parallel_degree": 2 }