Transformers documentation

Mô hình Encoder Decoder cho giọng nói

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Mô hình này được công bố trên HF papers vào ngày 14-04-2021 và được đóng góp cho Hugging Face Transformers vào ngày 01-09-2021.

Mô hình Encoder Decoder cho giọng nói

FlashAttention SDPA

SpeechEncoderDecoderModel có thể được sử dụng để khởi tạo một mô hình speech-to-text với bất kỳ mô hình speech autoencoding được huấn luyện trước nào làm encoder (ví dụ Wav2Vec2, Hubert) và bất kỳ mô hình autoregressive được huấn luyện trước nào làm decoder.

Hiệu quả của việc khởi tạo các mô hình từ chuỗi âm thanh sang chuỗi văn bản bằng các checkpoint được huấn luyện trước cho nhận dạng giọng nói và dịch thuật giọng nói đã được chẳng hạn chứng minh trong Large-Scale Self- and Semi-Supervised Learning for Speech Translation của Changhan Wang, Anne Wu, Juan Pino, Alexei Baevski, Michael Auli, Alexis Conneau.

Một ví dụ về cách sử dụng SpeechEncoderDecoderModel để suy luận có thể được xem với bộ giải mã Speech2Text2.

Khởi tạo ngẫu nhiên SpeechEncoderDecoderModel từ cấu hình mô hình

SpeechEncoderDecoderModel có thể được khởi tạo ngẫu nhiên từ cấu hình encoder và cấu hình decoder. Trong ví dụ dưới đây, chúng ta sẽ xem cách thực hiện điều này bằng cách sử dụng cấu hình Wav2Vec2Model mặc định cho encoder và cấu hình BertForCausalLM mặc định cho decoder.

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)

Khởi tạo SpeechEncoderDecoderModel từ một encoder được huấn luyện trước và một decoder được huấn luyện trước

SpeechEncoderDecoderModel có thể được khởi tạo từ một checkpoint encoder đã được huấn luyện trước và một checkpoint decoder đã được huấn luyện trước. Lưu ý rằng bất kỳ mô hình giọng nói nào dựa trên Transformer đã được huấn luyện trước, chẳng hạn Wav2Vec2, Hubert đều có thể đóng vai trò là encoder và cả các mô hình tự mã hóa đã được huấn luyện trước, chẳng hạn BERT, các mô hình ngôn ngữ nhân quả đã được huấn luyện trước, chẳng hạn GPT2, cũng như phần decoder đã được huấn luyện trước của các mô hình sequence-to-sequence, chẳng hạn decoder của BART, đều có thể được sử dụng làm decoder. Tùy thuộc vào kiến trúc bạn chọn làm decoder, các lớp cross-attention có thể được khởi tạo ngẫu nhiên. Việc khởi tạo SpeechEncoderDecoderModel từ một checkpoint encoder và decoder đã được huấn luyện trước đòi hỏi mô hình phải được tinh chỉnh trên một tác vụ downstream, như đã được minh họa trong bài đăng blog Warm-starting-encoder-decoder. Để làm điều này, lớp SpeechEncoderDecoderModel cung cấp phương thức SpeechEncoderDecoderModel.from_encoder_decoder_pretrained().

from transformers import SpeechEncoderDecoderModel


model = SpeechEncoderDecoderModel.from_encoder_decoder_pretrained(
    "facebook/hubert-large-ll60k", "google-bert/bert-base-uncased"
)

Tải checkpoint SpeechEncoderDecoderModel hiện có và thực hiện suy luận

Để nạp các checkpoint đã tinh chỉnh của lớp SpeechEncoderDecoderModel, SpeechEncoderDecoderModel cung cấp phương thức from_pretrained(...) giống như bất kỳ kiến trúc mô hình nào khác trong Transformers.

Để thực hiện suy luận, bạn sử dụng phương thức generate, cho phép tạo văn bản theo kiểu tự hồi quy. Phương thức này hỗ trợ nhiều dạng giải mã khác nhau, chẳng hạn như tham lam, tìm kiếm chùm và lấy mẫu đa thức.

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.

Huấn luyện

Sau khi mô hình được tạo, nó có thể được tinh chỉnh tương tự như BART, T5 hoặc bất kỳ mô hình encoder-decoder nào khác trên một tập dữ liệu gồm các cặp (âm thanh, văn bản). Như bạn có thể thấy, mô hình chỉ cần 2 đầu vào để tính toán loss: input_values (là các đầu vào âm thanh) và labels (là input_ids của chuỗi đích đã được mã hóa).

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

lớp transformers.SpeechEncoderDecoderConfig

< >

( 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 )

Tham số

  • is_encoder_decoder (bool, tùy chọn, mặc định là True) — Xác định xem mô hình có được sử dụng như một encoder/decoder hay không.
  • encoder (Union[~configuration_utils.PreTrainedConfig, dict], tùy chọn) — Đối tượng config hoặc từ điển của bộ khung encoder.
  • decoder (Union[~configuration_utils.PreTrainedConfig, dict], tùy chọn) — Đối tượng config hoặc từ điển của bộ khung (backbone) decoder.

Đây là lớp cấu hình để lưu trữ cấu hình của một Mô hình Encoder Decoder cho Âm thanh. Nó được sử dụng để khởi tạo một mô hình Encoder Decoder cho Âm thanh theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của

Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.

Ví dụ:

>>> 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

< >

( encoder_config: PreTrainedConfigdecoder_config: PreTrainedConfig**kwargs ) → SpeechEncoderDecoderConfig

Một đối tượng cấu hình

Tạo một SpeechEncoderDecoderConfig (hoặc một lớp kế thừa) từ cấu hình của mô hình encoder được huấn luyện trước và cấu hình của mô hình decoder.

SpeechEncoderDecoderModel

lớp transformers.SpeechEncoderDecoderModel

< >

( config: transformers.configuration_utils.PreTrainedConfig | None = Noneencoder: transformers.modeling_utils.PreTrainedModel | None = Nonedecoder: transformers.modeling_utils.PreTrainedModel | None = None )

Tham số

  • config (PreTrainedConfig, optional) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.
  • encoder (PreTrainedModel, tùy chọn) — Mô hình encoder cần sử dụng.
  • decoder (PreTrainedModel, tùy chọn) — Mô hình decoder cần sử dụng.

Mô hình Speech Encoder Decoder cơ bản, xuất ra các hidden-state thô mà không có bất kỳ head cụ thể nào ở phía trên.

Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)

Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

forward

< >

( 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)

Tham số

  • inputs (torch.Tensor có shape (batch_size, sequence_length) hoặc (batch_size, sequence_length, feature_dim), tùy chọn) — Các giá trị float của dạng sóng âm thanh thô đầu vào hoặc các đặc trưng âm thanh. Các giá trị này có thể được lấy bằng cách nạp tệp âm thanh .flac hoặc .wav vào một mảng có kiểu list[float], numpy.ndarray hoặc torch.Tensor, ví dụ thông qua thư viện torchcodec (pip install torchcodec) hoặc thư viện soundfile (pip install soundfile). Để chuẩn bị mảng thành inputs, hãy sử dụng Wav2Vec2Processor hoặc Speech2TextProcessor để đệm (padding) và chuyển đổi thành tensor có kiểu torch.Tensor.
  • attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các token không bị che,
    • 0 cho các token bị che.

    Mặt nạ chú ý là gì?

  • decoder_input_ids (torch.LongTensor có hình dạng (batch_size, target_sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào của decoder trong bảng từ vựng. Có thể lấy chỉ số bằng cách sử dụng PreTrainedTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết chi tiết. input IDs là gì? Nếu sử dụng past_key_values, tùy chọn chỉ cần nhập decoder_input_ids cuối cùng (xem past_key_values). Đối với huấn luyện, decoder_input_ids được tạo tự động bởi mô hình bằng cách dịch chuyển labels sang phải, thay thế -100 bằng pad_token_id và thêm decoder_start_token_id vào đầu.

    Các chỉ số có thể được lấy bằng cách sử dụng PreTrainedTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào là gì?

    Nếu past_key_values được sử dụng, tùy chọn chỉ cần nhập decoder_input_ids cuối cùng (xem past_key_values).

    Để huấn luyện, decoder_input_ids được mô hình tự động tạo ra bằng cách dịch chuyển labels sang phải, thay thế -100 bằng pad_token_id và thêm decoder_start_token_id vào đầu.

  • decoder_attention_mask (torch.BoolTensor có shape (batch_size, target_sequence_length), tùy chọn) — Hành vi mặc định: tạo một tensor bỏ qua các pad token trong decoder_input_ids. Causal mask cũng sẽ được sử dụng theo mặc định.
  • encoder_outputs (tuple[torch.Tensor], tùy chọn) — Tuple gồm (last_hidden_state, tùy chọn: hidden_states, tùy chọn: attentions) last_hidden_state có shape (batch_size, sequence_length, hidden_size), tùy chọn) là một chuỗi các hidden-states tại đầu ra của lớp cuối cùng của encoder. Được sử dụng trong cross-attention của decoder.
  • past_key_values (~cache_utils.Cache, tuỳ chọn) — Các hidden-state đã tính trước (key và value trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc giải mã tuần tự. Điều này thường bao gồm past_key_values được trả về bởi mô hình ở một giai đoạn giải mã trước đó, khi use_cache=True hoặc config.use_cache=True.

    Chỉ cho phép Cache instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền past_key_values, DynamicCache sẽ được khởi tạo theo mặc định.

    Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.

    Nếu past_key_values được sử dụng, người dùng được kỳ vọng chỉ nhập input_ids chưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có hình dạng (batch_size, unprocessed_length) thay vì toàn bộ input_ids có hình dạng (batch_size, sequence_length).

  • decoder_inputs_embeds (torch.Tensor có hình dạng (batch_size, target_sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyền decoder_input_ids, bạn có thể chọn truyền trực tiếp một biểu diễn đã nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số decoder_input_ids thành các vector tương ứng so với ma trận tra cứu nhúng nội bộ của mô hình.
  • labels (torch.LongTensor có shape (batch_size, sequence_length), tùy chọn) — Nhãn để tính toán tổn thất mô hình hóa ngôn ngữ có che cho bộ giải mã. Chỉ số phải nằm trong [-100, 0, ..., config.vocab_size] (xem docstring của input_ids). Các token có chỉ số được đặt thành -100 sẽ bị bỏ qua (che), tổn thất chỉ được tính cho các token có nhãn trong [0, ..., config.vocab_size]
  • use_cache (bool, tùy chọn) — Nếu đặt thành True, các trạng thái key value của past_key_values sẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xem past_key_values).
  • output_attentions (bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xem attentions trong phần tensor được trả về để biết thêm chi tiết.
  • output_hidden_states (bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xem hidden_states trong phần tensor trả về để biết thêm chi tiết.
  • input_values (torch.Tensor có shape (batch_size, sequence_length), tùy chọn) — Các giá trị float của waveform âm thanh thô đầu vào. Các giá trị này có thể được lấy bằng cách nạp tệp âm thanh .flac hoặc .wav vào một mảng có kiểu list[float] hoặc numpy.ndarray, chẳng hạn thông qua thư viện torchcodec (pip install torchcodec) hoặc thư viện soundfile (pip install soundfile). Để chuẩn bị mảng thành input_values, cần sử dụng Wav2Vec2Processor để padding và chuyển đổi thành tensor có kiểu torch.Tensor. Xem Wav2Vec2Processor.call() để biết thêm chi tiết.
  • input_features (torch.Tensor có hình dạng (batch_size, sequence_length, feature_dim), tùy chọn) — Các tensor tương ứng với các đặc trưng âm thanh đầu vào. Các đặc trưng âm thanh có thể được lấy bằng cách sử dụng feature_extractor_class. Xem feature_extractor_class.__call__ để biết chi tiết (processor_class sử dụng feature_extractor_class để xử lý âm thanh).
  • return_dict (bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.

Trả về

Seq2SeqLMOutput hoặc tuple(torch.Tensor)

Một Seq2SeqLMOutput hoặc một tuple của torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (SpeechEncoderDecoderConfig) và đầu vào.

Phương thức forward của SpeechEncoderDecoderModel ghi đè lên phương thức đặc biệt __call__.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của Module sau đó thay vì gọi hàm này, vì instance Module sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.

  • loss (torch.Tensor có shape (1,), tùy chọn, được trả về khi labels được cung cấp) — Loss của language modeling.

  • logits (torch.Tensor có hình dạng (batch_size, sequence_length, config.vocab_size)) — Điểm dự đoán của đầu mô hình hóa ngôn ngữ (điểm cho mỗi token trong từ vựng trước SoftMax).

  • past_key_values (EncoderDecoderCache, tùy chọn, được trả về khi use_cache=True được truyền vào hoặc khi config.use_cache=True) — Đây là một instance của EncoderDecoderCache. Để biết thêm chi tiết, hãy xem hướng dẫn về kv cache của chúng tôi.

    Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention và trong các khối cross-attention) có thể được sử dụng (xem đầu vào past_key_values) để tăng tốc độ giải mã tuần tự.

  • decoder_hidden_states (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Tuple của torch.Tensor (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của bộ giải mã tại đầu ra của mỗi lớp cùng với đầu ra của nhúng ban đầu.

  • decoder_attentions (tuple(torch.Tensor), tùy chọn, được trả về khi truyền output_attentions=True hoặc khi config.output_attentions=True) — Tuple của torch.Tensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).

  • cross_attentions (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Bộ tuple của torch.Tensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý của lớp cross-attention của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý chéo.

  • encoder_last_hidden_state (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Chuỗi các trạng thái ẩn tại đầu ra của lớp cuối cùng của bộ mã hóa trong mô hình.

  • encoder_hidden_states (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Bộ tuple của torch.Tensor (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của bộ mã hóa tại đầu ra của mỗi lớp cùng với đầu ra của nhúng ban đầu.

  • encoder_attentions (tuple(torch.Tensor), tùy chọn, được trả về khi truyền output_attentions=True hoặc khi config.output_attentions=True) — Tuple của torch.Tensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý của bộ mã hóa, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).

Ví dụ:

>>> 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

< >

( encoder_pretrained_model_name_or_path: str | None = Nonedecoder_pretrained_model_name_or_path: str | None = None*model_args**kwargs )

Tham số

  • encoder_pretrained_model_name_or_path (str, tuỳ chọn) — Thông tin cần thiết để khởi tạo encoder. Có thể là:
    • Một chuỗi, model id của một mô hình được huấn luyện trước được lưu trữ trong một kho mô hình trên huggingface.co.
    • Đường dẫn đến thư mục chứa trọng số mô hình được lưu bằng save_pretrained(), ví dụ: ./my_model_directory/.
  • decoder_pretrained_model_name_or_path (str, tuỳ chọn, mặc định là None) — Thông tin cần thiết để khởi tạo decoder. Có thể là:
    • Một chuỗi, model id của một mô hình được huấn luyện trước được lưu trữ trong một kho mô hình trên huggingface.co.
    • Đường dẫn đến thư mục chứa trọng số mô hình được lưu bằng save_pretrained(), ví dụ: ./my_model_directory/.
  • model_args (các đối số vị trí còn lại, tùy chọn) — Tất cả các đối số vị trí còn lại sẽ được truyền vào phương thức __init__ của model cơ sở.
  • kwargs (từ điển các tham số keyword còn lại, tùy chọn) — Có thể được sử dụng để cập nhật đối tượng cấu hình (sau khi nó được tải) và khởi tạo mô hình (ví dụ: output_attentions=True).
    • Để cập nhật cấu hình encoder, hãy sử dụng tiền tố encoder_ cho mỗi tham số cấu hình.
    • Để cập nhật cấu hình bộ giải mã, hãy sử dụng tiền tố decoder_ cho mỗi tham số cấu hình.
    • Để cập nhật cấu hình của mô hình cha, không sử dụng tiền tố cho từng tham số cấu hình.

    Hành vi khác nhau tùy thuộc vào việc có cung cấp config hay được tải tự động.

Tạo một encoder và một decoder từ một hoặc hai lớp cơ bản của thư viện từ các checkpoint mô hình được huấn luyện trước.

Mặc định, mô hình được đặt ở chế độ đánh giá bằng model.eval() (các module Dropout bị vô hiệu hóa). Để huấn luyện mô hình, bạn cần đặt lại nó về chế độ huấn luyện bằng model.train().

Ví dụ:

>>> 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")
Update on GitHub