Hugging Face 변환기 모델 지원 - Amazon SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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로 모델을 래핑하여 텐서 병렬 처리를 활성화할 수 있습니다. DistributedModel(). 를 사용하여 텐서 병렬 처리를 위한 후크를 수동으로 등록할 필요는 없습니다. 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_dictDistributedModel객체에서 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...