Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Support für Hugging Face Transformator-Modelle
Die Tensorparallelität der SageMaker Modellparallelitätsbibliothek bietet out-of-the-box Unterstützung für die folgenden Hugging Face Transformer-Modelle:
-
GPT-2,BERT, und R oBERTa (verfügbar in der SageMaker Modellparallelismusbibliothek v1.7.0 und höher)
-
GPT-J (Verfügbar in der SageMaker Modellparallelismus-Bibliothek v1.8.0 und höher)
-
GPT-Neo (Verfügbar in der SageMaker Modellparallelismus-Bibliothek v1.10.0 und höher)
Anmerkung
Für alle anderen Transformer-Modelle müssen Sie smdistributed.modelparallel.torch.tp_register_with_module () verwenden, um Tensorparallelität anzuwenden.
Anmerkung
Um Tensorparallelität für das Training von Hugging Face Transformer-Modellen zu verwenden, stellen Sie sicher, dass Sie Hugging Face Deep Learning Containers verwenden, für die die Modellparallelismusbibliothek v1.7.0 und PyTorch höher verfügbar ist. SageMaker Weitere Informationen finden Sie in den Versionshinweisen zur Modellparallelismus-Bibliothek. SageMaker
Ab Werk unterstützte Modelle
Für die Hugging Face Face-Transformer-Modelle, die von der Bibliothek standardmäßig unterstützt werden, müssen Sie Hooks nicht manuell implementieren, um Transformer in Transformer-Ebenen APIs zu smdistributed
übersetzen. Sie können die Tensorparallelität aktivieren, indem Sie den Kontextmanager smdistributed.modelparallel.torch.tensor_parallelism () verwenden und das Modell mit smdistributed.modelparallel.torchsmp.tp_register
API
Die state_dict
Übersetzung funktioniert zwischen Hugging Face Transformers und smdistributed.modelparallel
kann wie folgt aufgerufen werden.
-
smdistributed.modelparallel.torch.nn.huggingface.gpt2.translate_state_dict_to_hf_gpt2(state_dict, max_seq_len=None)
-
smdistributed.modelparallel.torch.nn.huggingface.gpt2.translate_hf_state_dict_to_smdistributed_gpt2(state_dict)
-
smdistributed.modelparallel.torch.nn.huggingface.bert.translate_state_dict_to_hf_bert(state_dict, max_seq_len=None)
-
smdistributed.modelparallel.torch.nn.huggingface.bert.translate_hf_state_dict_to_smdistributed_bert(state_dict)
-
smdistributed.modelparallel.torch.nn.huggingface.roberta.translate_state_dict_to_hf_roberta(state_dict, max_seq_len=None)
-
smdistributed.modelparallel.torch.nn.huggingface.roberta.translate_hf_state_dict_to_smdistributed_roberta(state_dict)
-
smdistributed.modelparallel.torch.nn.huggingface.gptj.translate_state_dict_to_hf_gptj(state_dict, max_seq_len=None)
(Verfügbar in der SageMaker Modellparallelismus-Bibliothek v1.8.0 und höher) -
smdistributed.modelparallel.torch.nn.huggingface.gptj.translate_hf_gptj_state_dict_to_smdistributed_gptj
(Verfügbar in der SageMaker Modellparallelismus-Bibliothek v1.8.0 und höher) -
smdistributed.modelparallel.torch.nn.huggingface.gptneo.translate_state_dict_to_hf_gptneo(state_dict, max_seq_len=None)
(Verfügbar in der SageMaker Modellparallelismus-Bibliothek v1.10.0 und höher) -
smdistributed.modelparallel.torch.nn.huggingface.gptneo.translate_hf_state_dict_to_smdistributed_gptneo(state_dict)
(Verfügbar in der SageMaker Modellparallelismus-Bibliothek v1.10.0 und höher)
Beispiel für die Verwendung der Übersetzungsfunktion -2 GPT
Beginnen Sie damit, das Modell wie im folgenden Code gezeigt zu umschließen:
from transformers import AutoModelForCausalLM with smp.tensor_parallelism(): model = AutoModelForCausalLM.from_config(hf_gpt2_config) model = smp.DistributedModel(model)
Ausgehend state_dict
von einem DistributedModel
Objekt können Sie die Gewichte mithilfe der translate_state_dict_to_hf_gpt2
Funktion, wie im folgenden Code gezeigt, in das ursprüngliche Hugging Face GPT Face-2-Modell laden.
from smdistributed.modelparallel.torch.nn.huggingface.gpt2 \ import translate_state_dict_to_hf_gpt2 max_seq_len = 1024 # [... code block for training ...] if smp.rdp_rank() == 0: state_dict = dist_model.state_dict() hf_state_dict = translate_state_dict_to_hf_gpt2(state_dict, max_seq_len) # can now call model.load_state_dict(hf_state_dict) to the original HF model
Beispiel für die Verwendung der oBERTa R-Übersetzungsfunktion
In ähnlicher Weise können Sie bei einem unterstützten HuggingFace Modell die translate_hf_state_dict_to_smdistributed
Funktion verwendenstate_dict
, um es in ein von lesbares Format zu konvertierensmp.DistributedModel
. Dies kann bei Anwendungsfällen für Transfer Learning nützlich sein, wo ein vortrainiertes Modell zur parallelen Feinabstimmung des Modells in ein smp.DistributedModel
geladen wird:
from smdistributed.modelparallel.torch.nn.huggingface.roberta \ import translate_state_dict_to_smdistributed model = AutoModelForMaskedLM.from_config(roberta_config) model = smp.DistributedModel(model) pretrained_model = AutoModelForMaskedLM.from_pretrained("roberta-large") translated_state_dict = translate_state_dict_to_smdistributed(pretrained_model.state_dict()) # load the translated pretrained weights into the smp.DistributedModel model.load_state_dict(translated_state_dict) # start fine-tuning...