기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Hugging Face 변환기 모델 지원
SageMaker 모델 병렬 처리 라이브러리의 텐서 병렬 처리는 다음과 같은 Hugging Face Transformer 모델을 out-of-the-box 지원합니다.
-
GPT-2BERT, 및 R oBERTa ( SageMaker 모델 병렬화 라이브러리 v1.7.0 이상에서 사용 가능)
-
GPT-J ( SageMaker 모델 병렬화 라이브러리 v1.8.0 이상에서 사용 가능)
-
GPT-Neo (모델 병렬화 라이브러리 v1.10.0 이상에서 사용 가능) SageMaker
참고
Hugging Face Transformer 모델 학습에 텐서 병렬 처리를 사용하려면 모델 병렬 처리 라이브러리 v1.7.0 이상이 있는 SageMaker Hugging Face Deep Learning PyTorch Containers를 사용해야 합니다. 자세한 내용은 모델 병렬 처리 라이브러리 릴리스 노트를 참조하십시오. SageMaker
즉시 지원 모델
라이브러리가 기본적으로 지원하는 Hugging Face 트랜스포머 모델의 경우 Transformer를 APIs 트랜스포머 smdistributed
레이어로 변환하기 위한 후크를 수동으로 구현할 필요가 없습니다. 컨텍스트 관리자 smdistributed.modelparallel.torch.tensor_parallel lism () 을 사용하고 smdistributed.modelparallel.torch로smp.tp_register
API
Hugging Face Transformer와 smdistributed.modelparallel
간의 state_dict
번역 기능은 다음과 같이 액세스할 수 있습니다.
-
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)
( SageMaker 모델 병렬화 라이브러리 v1.8.0 이상에서 사용 가능) -
smdistributed.modelparallel.torch.nn.huggingface.gptj.translate_hf_gptj_state_dict_to_smdistributed_gptj
( SageMaker 모델 병렬화 라이브러리 v1.8.0 이상에서 사용 가능) -
smdistributed.modelparallel.torch.nn.huggingface.gptneo.translate_state_dict_to_hf_gptneo(state_dict, max_seq_len=None)
( SageMaker 모델 병렬화 라이브러리 v1.10.0 이상에서 사용 가능) -
smdistributed.modelparallel.torch.nn.huggingface.gptneo.translate_hf_state_dict_to_smdistributed_gptneo(state_dict)
( SageMaker 모델 병렬화 라이브러리 v1.10.0 이상에서 사용 가능)
-2 번역 함수 사용 예제 GPT
다음 코드에 나와 있는 것처럼 모델을 래핑하며 시작합니다.
from transformers import AutoModelForCausalLM with smp.tensor_parallelism(): model = AutoModelForCausalLM.from_config(hf_gpt2_config) model = smp.DistributedModel(model)
state_dict
DistributedModel
객체에서 a가 주어지면 다음 코드와 같이 translate_state_dict_to_hf_gpt2
함수를 사용하여 원래 Hugging Face GPT -2 모델에 가중치를 로드할 수 있습니다.
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
R oBERTa 번역 함수 사용 예제
마찬가지로, 지원되는 HuggingFace 모델이 있으면 translate_hf_state_dict_to_smdistributed
함수를 사용하여 모델을 state_dict
에서 읽을 수 있는 형식으로 변환할 수 있습니다. smp.DistributedModel
이는 사전 훈련된 모델을 smp.DistributedModel
에 로드하여 모델 병렬을 미세 조정하는 전이 학습 사용 사례에 유용합니다.
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...