Transformers documentation
음성 인코더 디코더 모델
이 모델은 2021-04-14에 HF papers에 게시되었으며, 2021-09-01에 Hugging Face Transformers에 기여되었습니다.
음성 인코더 디코더 모델
SpeechEncoderDecoderModel은 인코더로 사전 학습된 음성 자동 인코딩 모델(예: Wav2Vec2, Hubert)을, 디코더로 사전 학습된 자기 회귀 모델을 사용하여 음성-텍스트 모델을 초기화하는 데 사용할 수 있습니다.
음성 인식 및 음성 번역을 위해 사전 학습된 체크포인트로 음성 시퀀스-텍스트 시퀀스 모델을 초기화하는 효과는 Changhan Wang, Anne Wu, Juan Pino, Alexei Baevski, Michael Auli, Alexis Conneau의 Large-Scale Self- and Semi-Supervised Learning for Speech Translation 논문에서 예를 들어 입증되었습니다.
SpeechEncoderDecoderModel을 추론에 사용하는 예시는 Speech2Text2 디코더에서 확인할 수 있습니다.
SpeechEncoderDecoderModel을 모델 구성에서 무작위로 초기화
SpeechEncoderDecoderModel은 인코더와 디코더의 config를 기반으로 무작위로 초기화할 수 있습니다. 아래 예시에서는 인코더에 Wav2Vec2Model의 기본 구성, 디코더에 BertForCausalLM의 기본 구성을 사용하여 이를 수행하는 방법을 보여줍니다.
from transformers import BertConfig, SpeechEncoderDecoderConfig, SpeechEncoderDecoderModel, Wav2Vec2Config
config_encoder = Wav2Vec2Config()
config_decoder = BertConfig()
config = SpeechEncoderDecoderConfig.from_encoder_decoder_configs(config_encoder, config_decoder)
model = SpeechEncoderDecoderModel(config=config)SpeechEncoderDecoderModel을 사전 학습된 인코더와 사전 학습된 디코더로 초기화
SpeechEncoderDecoderModel은 사전 학습된 인코더 체크포인트와 사전 학습된 디코더 체크포인트로부터 초기화할 수 있습니다. 사전 학습된 Transformer 기반 음성 모델, 예를 들어 Wav2Vec2, Hubert는 인코더로 사용할 수 있으며, 사전 학습된 오토인코딩 모델, 예를 들어 BERT, 사전 학습된 인과 언어 모델, 예를 들어 GPT2, 그리고 시퀀스-투-시퀀스 모델의 사전 학습된 디코더 부분, 예를 들어 BART의 디코더는 모두 디코더로 사용할 수 있습니다.
디코더로 선택하는 아키텍처에 따라 크로스 어텐션 레이어가 무작위로 초기화될 수 있습니다.
사전 학습된 인코더와 디코더 체크포인트로부터 SpeechEncoderDecoderModel을 초기화하려면 Warm-starting-encoder-decoder 블로그 게시물에서 보여준 바와 같이 다운스트림 작업으로 모델이 파인튜닝되어야 합니다.
이를 위해 SpeechEncoderDecoderModel 클래스는 SpeechEncoderDecoderModel.from_encoder_decoder_pretrained() 메서드를 제공합니다.
from transformers import SpeechEncoderDecoderModel
model = SpeechEncoderDecoderModel.from_encoder_decoder_pretrained(
"facebook/hubert-large-ll60k", "google-bert/bert-base-uncased"
)기존 SpeechEncoderDecoderModel 체크포인트를 로드하고 추론을 수행
SpeechEncoderDecoderModel 클래스의 파인튜닝된 체크포인트를 로드하려면, SpeechEncoderDecoderModel은 Transformers의 다른 모델 아키텍처와 마찬가지로 from_pretrained(...) 메서드를 제공합니다.
추론을 수행하려면 generate 메서드를 사용합니다. 이 메서드를 사용하면 자기회귀적으로 텍스트를 생성할 수 있습니다. 이 메서드는 greedy, beam search, multinomial sampling 등 다양한 형태의 디코딩을 지원합니다.
from transformers import Wav2Vec2Processor, SpeechEncoderDecoderModel
from datasets import load_dataset
import torch
# load a fine-tuned speech translation model and corresponding processor
model = SpeechEncoderDecoderModel.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15", device_map="auto")
processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15")
# let's perform inference on a piece of English speech (which we'll translate to German)
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
input_values = processor(ds[0]["audio"]["array"], return_tensors="pt").to(model.device).input_values
# autoregressively generate transcription (uses greedy decoding by default)
generated_ids = model.generate(input_values)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(generated_text)
Mr. Quilter ist der Apostel der Mittelschicht und wir freuen uns, sein Evangelium willkommen heißen zu können.학습
모델이 생성되면, (음성, 텍스트) 쌍으로 구성된 데이터셋에서 BART, T5 또는 기타 인코더-디코더 모델과 유사하게 파인튜닝할 수 있습니다.
확인할 수 있듯이, 손실을 계산하기 위해 모델에는 두 개의 입력만 필요합니다: input_values(음성 입력)와 labels(인코딩된 대상 시퀀스의 input_ids).
from datasets import load_dataset
from transformers import AutoFeatureExtractor, AutoTokenizer, SpeechEncoderDecoderModel
encoder_id = "facebook/wav2vec2-base-960h" # acoustic model encoder
decoder_id = "google-bert/bert-base-uncased" # text decoder
feature_extractor = AutoFeatureExtractor.from_pretrained(encoder_id)
tokenizer = AutoTokenizer.from_pretrained(decoder_id)
# Combine pre-trained encoder and pre-trained decoder to form a Seq2Seq model
model = SpeechEncoderDecoderModel.from_encoder_decoder_pretrained(encoder_id, decoder_id)
model.config.decoder_start_token_id = tokenizer.cls_token_id
model.config.pad_token_id = tokenizer.pad_token_id
# load an audio input and pre-process (normalise mean/std to 0/1)
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
input_values = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt").to(model.device).input_values
# load its corresponding transcription and tokenize to generate labels
labels = tokenizer(ds[0]["text"], return_tensors="pt").to(model.device).input_ids
# the forward function automatically creates the correct decoder_input_ids
loss = model(input_values=input_values, labels=labels).loss
loss.backward()SpeechEncoderDecoderConfig
class transformers.SpeechEncoderDecoderConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool | None = Trueencoder: transformers.configuration_utils.PreTrainedConfig | dict | None = Nonedecoder: transformers.configuration_utils.PreTrainedConfig | dict | None = None )
이것은 Speech Encoder DecoderModel의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Speech Encoder Decoder 모델을 인스턴스화하고 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 와 유사한 설정이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
예:
>>> from transformers import BertConfig, Wav2Vec2Config, SpeechEncoderDecoderConfig, SpeechEncoderDecoderModel
>>> # Initializing a Wav2Vec2 & BERT style configuration
>>> config_encoder = Wav2Vec2Config()
>>> config_decoder = BertConfig()
>>> config = SpeechEncoderDecoderConfig(encoder=config_encoder, decoder=config_decoder)
>>> # Initializing a Wav2Vec2Bert model from a Wav2Vec2 & google-bert/bert-base-uncased style configurations
>>> model = SpeechEncoderDecoderModel(config=config)
>>> # Accessing the model configuration
>>> config_encoder = model.config.encoder
>>> config_decoder = model.config.decoder
>>> # set decoder config to causal lm
>>> config_decoder.is_decoder = True
>>> config_decoder.add_cross_attention = True
>>> # Saving the model, including its configuration
>>> model.save_pretrained("my-model")
>>> # loading model and config from pretrained folder
>>> encoder_decoder_config = SpeechEncoderDecoderConfig.from_pretrained("my-model")
>>> model = SpeechEncoderDecoderModel.from_pretrained("my-model", config=encoder_decoder_config)from_encoder_decoder_configs
< source >( encoder_config: PreTrainedConfigdecoder_config: PreTrainedConfig**kwargs ) → SpeechEncoderDecoderConfig
설정 객체의 인스턴스
SpeechEncoderDecoderConfig(또는 파생 클래스)를 사전 학습된 인코더 모델 구성과 디코더 모델 구성에서 초기화합니다.
SpeechEncoderDecoderModel
클래스 transformers.SpeechEncoderDecoderModel
< source >( config: transformers.configuration_utils.PreTrainedConfig | None = Noneencoder: transformers.modeling_utils.PreTrainedModel | None = Nonedecoder: transformers.modeling_utils.PreTrainedModel | None = None )
매개변수
- config (PreTrainedConfig, 선택) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하면 모델에 연결된 가중치는 로드되지 않으며 구성만 로드됩니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
- encoder (
PreTrainedModel, 선택 사항) — 사용할 인코더 모델입니다. - decoder (
PreTrainedModel, 선택 사항) — 사용할 decoder 모델입니다.
특정 헤드가 위에 없는 상태에서 원시 hidden-states를 출력하는 기본 Speech Encoder Decoder Model입니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( inputs: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: tuple[torch.Tensor] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Noneinput_values: typing.Optional[torch.Tensor] = Noneinput_features: typing.Optional[torch.Tensor] = Nonereturn_dict: bool | None = None**kwargs ) → Seq2SeqLMOutput or tuple(torch.Tensor)
매개변수
- inputs (
torch.Tensor, shape(batch_size, sequence_length)또는(batch_size, sequence_length, feature_dim), 선택 사항) — 입력 원시 음성 웨이브폼 또는 음성 특징의 부동소수점 값입니다..flac또는.wav오디오 파일을list[float],numpy.ndarray또는torch.Tensor타입의 배열로 로드하여 값을 얻을 수 있으며, 예를 들어 torchcodec 라이브러리(pip install torchcodec)나 soundfile 라이브러리(pip install soundfile)를 통해 수행할 수 있습니다.inputs으로 배열을 준비하려면 패딩 및torch.Tensor타입의 텐서 변환을 위해 Wav2Vec2Processor 또는 Speech2TextProcessor를 사용해야 합니다. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- decoder_input_ids (
torch.LongTensor형상(batch_size, target_sequence_length), 선택 사항) — 어휘(decoder input sequence) 토큰의 인덱스입니다. 인덱스는 PreTrainedTokenizer를 사용하여 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요. input ID란 무엇인가요? past_key_values를 사용하는 경우, 선택적으로 마지막 decoder_input_ids만 입력하면 됩니다(past_key_values 참조). 학습 시에는 decoder_input_ids가 모델에 의해 자동으로 생성되며, labels를 오른쪽으로 이동시키고 -100을 pad_token_id로 대체한 뒤, 앞에 decoder_start_token_id를 붙여 생성됩니다.PreTrainedTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참고하세요.
past_key_values를 사용하는 경우, 선택적으로 마지막decoder_input_ids만 입력하면 됩니다(past_key_values참조).학습 시
decoder_input_ids는 모델이labels을 오른쪽으로 이동시키고, -100을pad_token_id로 대체한 뒤decoder_start_token_id를 앞에 붙여 자동으로 생성합니다. - decoder_attention_mask (
torch.BoolTensor, shape(batch_size, target_sequence_length), 선택) — 기본 동작:decoder_input_ids의 pad 토큰을 무시하는 텐서를 생성합니다. 기본적으로 causal mask도 사용됩니다. - encoder_outputs (
tuple[torch.Tensor], 선택 사항) — (last_hidden_state, 선택 사항:hidden_states, 선택 사항:attentions)으로 구성된 튜플입니다.last_hidden_state의 모양은(batch_size, sequence_length, hidden_size), 선택 사항)이며, 인코더의 마지막 레이어 출력에서 생성된 hidden-states의 시퀀스입니다. 디코더의 cross-attention에 사용됩니다. - past_key_values (
~cache_utils.Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(self-attention 블록과 cross-attention 블록의 key 및 value). 일반적으로 이는past_key_values디코딩의 이전 단계에서 모델이 반환한use_cache=True또는config.use_cache=True.입력으로 Cache 인스턴스만 허용되며, kv cache 가이드를 참고하세요.
past_key_values가 전달되지 않으면 기본적으로 DynamicCache가 초기화됩니다.모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다.
past_key_values를 사용하는 경우, 이 모델에 과거 키 값 상태가 제공되지 않은input_ids만 입력해야 하며, 이때의 shape은(batch_size, unprocessed_length)입니다. shape이(batch_size, sequence_length)인 전체input_ids를 입력하지 않습니다. - decoder_inputs_embeds (
torch.Tensor, shape(batch_size, target_sequence_length, hidden_size), 선택 사항) —decoder_input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부 임베딩 조회 행렬보다decoder_input_ids인덱스를 관련 벡터로 변환하는 방식에 대한 더 세밀한 제어가 필요한 경우 유용합니다. - labels (
torch.LongTensor, shape(batch_size, sequence_length), 선택 사항) — 디코더의 masked language modeling loss를 계산하는 데 사용되는 라벨입니다. 인덱스는[-100, 0, ..., config.vocab_size]범위여야 합니다(input_idsdocstring 참조). 인덱스가-100으로 설정된 토큰은 무시(마스크)되며, loss는 라벨이[0, ..., config.vocab_size]범위에 있는 토큰에 대해서만 계산됩니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조). - output_attentions (
bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의attentions항목을 참조하세요. - output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중hidden_states항목을 참고하세요. - input_values (
torch.Tensor, shape(batch_size, sequence_length), 선택 사항) — 입력 원시 음성 파형의 부동 소수점 값. .flac 또는 .wav 오디오 파일을 list[float] 또는 numpy.ndarray 형식의 배열로 로드하여 값을 얻을 수 있으며, 예를 들어 torchcodec 라이브러리(pip install torchcodec) 또는 soundfile 라이브러리(pip install soundfile)를 사용할 수 있습니다. 배열을 input_values로 준비하려면 패딩 및 torch.Tensor 형식의 텐서 변환을 위해 Wav2Vec2Processor를 사용해야 합니다. 자세한 내용은 Wav2Vec2Processor.call()를 참조하세요. - input_features (
torch.Tensor, shape(batch_size, sequence_length, feature_dim), 선택 사항) — 입력 오디오 특징에 해당하는 텐서입니다. 오디오 특징은feature_extractor_class를 사용하여 얻을 수 있습니다. 자세한 내용은feature_extractor_class.__call__를 참조하세요 (processor_class는 오디오 처리에feature_extractor_class를 사용합니다). - return_dict (
bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부.
반환값
Seq2SeqLMOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 Seq2SeqLMOutput입니다. return_dict=False가 전달되거나 config.return_dict=False인 경우, 구성(SpeechEncoderDecoderConfig)과 입력에 따라 다양한 요소로 구성됩니다.
SpeechEncoderDecoderModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — 언어 모델링 손실.logits (
torch.Tensor, shape(batch_size, sequence_length, config.vocab_size)) — 언어 모델링 헤드에서 생성된 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수).past_key_values (
EncoderDecoderCache, 선택 사항,use_cache=True가 전달되었거나config.use_cache=True인 경우 반환됨) — EncoderDecoderCache 인스턴스입니다. 자세한 내용은 kv 캐시 가이드를 참고하세요.순차적 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록과 크로스 어텐션 블록의 key 및 value)를 포함합니다(입력
past_key_values참조).decoder_hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 디코더의 Hidden-states와 초기 임베딩 출력을 더한 값.
decoder_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는, attention softmax 이후의 decoder의 attention 가중치입니다.
cross_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
encoder_last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택 사항) — 모델 인코더의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.encoder_hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되었거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 인코더의 Hidden-states와 초기 임베딩 출력을 더한 값.
encoder_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는, attention softmax 이후의 인코더 attention 가중치입니다.
예:
>>> from transformers import SpeechEncoderDecoderModel, AutoProcessor
>>> from datasets import load_dataset
>>> import torch
>>> processor = AutoProcessor.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15")
>>> model = SpeechEncoderDecoderModel.from_pretrained("facebook/wav2vec2-xls-r-300m-en-to-15")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> input_values = processor(ds[0]["audio"]["array"], return_tensors="pt").input_values
>>> # Inference: Translate English speech to German
>>> generated = model.generate(input_values)
>>> decoded = processor.batch_decode(generated, skip_special_tokens=True)[0]
>>> decoded
'Mr. Quilter ist der Apostel der Mittelschicht und wir freuen uns, sein Evangelium willkommen heißen zu können.'
>>> # Training: Train model on English transcription
>>> labels = processor(text=ds[0]["text"], return_tensors="pt").input_ids
>>> loss = model(input_values, labels=labels).loss
>>> loss.backward()from_encoder_decoder_pretrained
< source >( encoder_pretrained_model_name_or_path: str | None = Nonedecoder_pretrained_model_name_or_path: str | None = None*model_args**kwargs )
매개변수
- encoder_pretrained_model_name_or_path (
str, 선택 사항) — 인코더를 초기화하는 데 필요한 정보입니다. 다음 중 하나일 수 있습니다:- huggingface.co의 모델 저장소에 호스팅된 사전 학습 모델의 model id를 나타내는 문자열입니다.
- save_pretrained()를 사용하여 저장된 모델 가중치가 포함된 디렉터리의 경로입니다. 예:
./my_model_directory/.
- decoder_pretrained_model_name_or_path (
str, 선택 사항, 기본값은None) — 디코더를 초기화하는 데 필요한 정보입니다. 다음 중 하나일 수 있습니다:- huggingface.co의 모델 저장소에 호스팅된 사전 학습 모델의 model id를 나타내는 문자열입니다.
- save_pretrained()를 사용하여 저장된 모델 가중치가 포함된 디렉터리의 경로입니다. 예:
./my_model_directory/.
- model_args (나머지 위치 인자, 선택 사항) —
나머지 위치 인자는 모두 기본 모델의
__init__메서드에 전달됩니다. - kwargs (나머지 키워드 인자 사전, 선택 사항) —
설정 객체를 업데이트(로드된 후)하고 모델을 초기화하는 데 사용할 수 있습니다(예:
output_attentions=True).- 인코더 구성을 업데이트하려면 각 구성 매개변수에 접두사 encoder_를 사용하세요.
- 디코더 구성을 업데이트하려면 각 구성 매개변수에 접두사 decoder_를 사용하세요.
- parent 모델의 구성을 업데이트하려면 각 구성 매개변수에 접두사를 사용하지 마세요.
config이 제공되었는지 자동으로 로드되었는지에 따라 동작이 달라집니다.
library의 하나 또는 두 개의 베이스 클래스에서 사전 학습된 모델 체크포인트를 사용하여 인코더와 디코더를 초기화합니다.
model.eval()을 사용하여 기본적으로 모델이 평가 모드로 설정됩니다(Dropout 모듈은 비활성화됨). 모델을 학습하려면 먼저 model.train()을 사용하여 모델을 학습 모드로 되돌려야 합니다.
예:
>>> from transformers import SpeechEncoderDecoderModel
>>> # initialize a wav2vec2bert from a pretrained Wav2Vec2 and a pretrained BERT model. Note that the cross-attention layers will be randomly initialized
>>> model = SpeechEncoderDecoderModel.from_encoder_decoder_pretrained(
... "facebook/wav2vec2-base-960h", "google-bert/bert-base-uncased"
... )
>>> # saving model after fine-tuning
>>> model.save_pretrained("./wav2vec2bert")
>>> # load fine-tuned model
>>> model = SpeechEncoderDecoderModel.from_pretrained("./wav2vec2bert")