Transformers documentation

SeamlessM4T-v2

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

Este modelo foi publicado em HF papers em 2023-12-08 e contribuído para Hugging Face Transformers em 2023-11-30.

SDPA

SeamlessM4T-v2

Visão geral

O modelo SeamlessM4T-v2 foi proposto em Seamless: Multilingual Expressive and Streaming Speech Translation pela equipe de Comunicação Sem Emendas da Meta AI.

O SeamlessM4T-v2 é uma coleção de modelos projetados para oferecer tradução de alta qualidade, permitindo que pessoas de diferentes comunidades linguísticas se comuniquem com facilidade por meio de fala e texto. Trata-se de uma melhoria em relação à versão anterior. Para mais detalhes sobre as diferenças entre v1 e v2, consulte a seção Diferença em relação ao SeamlessM4T-v1.

O SeamlessM4T-v2 permite executar várias tarefas sem depender de modelos separados:

  • Tradução de fala para fala (S2ST)
  • Tradução de fala para texto (S2TT)
  • Tradução de texto para fala (T2ST)
  • Tradução de texto para texto (T2TT)
  • Reconhecimento automático de fala (ASR)

SeamlessM4Tv2Model pode executar todas as tarefas acima, mas cada tarefa também possui seu próprio submodelo dedicado.

O resumo do artigo é o seguinte:

Os avanços recentes na tradução automática de fala expandiram drasticamente a cobertura de idiomas, aprimoraram as capacidades multimodais e permitiram uma ampla variedade de tarefas e funcionalidades. Dito isso, os grandes sistemas de tradução automática de fala atuais carecem de recursos-chave que tornam a comunicação mediada por máquinas mais fluida quando comparada ao diálogo entre humanos. Neste trabalho, apresentamos uma família de modelos que permite traduções expressivas e multilíngues de ponta a ponta em modo de streaming. Primeiro, contribuímos com uma versão aprimorada do modelo massivamente multilíngue e multimodal SeamlessM4T — o SeamlessM4T v2. Este novo modelo, que incorpora o framework atualizado UnitY2, foi treinado com mais dados de idiomas de baixo recurso. A versão expandida do SeamlessAlign adiciona 114.800 horas de dados alinhados automaticamente, totalizando 76 idiomas. O SeamlessM4T v2 fornece a base a partir da qual nossos dois modelos mais recentes, SeamlessExpressive e SeamlessStreaming, são iniciados. O SeamlessExpressive permite traduções que preservam estilos vocais e prosódia. Em comparação com esforços anteriores em pesquisa de fala expressiva, nosso trabalho aborda certos aspectos subexplorados da prosódia, como a taxa de fala e as pausas, ao mesmo tempo em que preserva o estilo da voz. Quanto ao SeamlessStreaming, nosso modelo utiliza o mecanismo Efficient Monotonic Multihead Attention (EMMA) para gerar traduções de destino de baixa latência sem esperar pela conclusão das falas de origem. Como o primeiro do seu tipo, o SeamlessStreaming permite a tradução simultânea de fala para fala/texto para múltiplos idiomas de origem e destino. Para entender o desempenho desses modelos, combinamos métricas automáticas novas e versões modificadas de métricas existentes para avaliar prosódia, latência e robustez. Para as avaliações humanas, adaptamos protocolos existentes para medir os atributos mais relevantes na preservação de significado, naturalidade e expressividade. Para garantir que nossos modelos possam ser usados de forma segura e responsável, implementamos o primeiro esforço conhecido de red-teaming para tradução automática multimodal, um sistema para detecção e mitigação de toxicidade adicionada, uma avaliação sistemática de viés de gênero e um mecanismo de marca d'água localizada inaudível projetado para reduzir o impacto de deepfakes. Consequentemente, reunimos os principais componentes do SeamlessExpressive e do SeamlessStreaming para formar o Seamless, o primeiro sistema publicamente disponível que desbloqueia a comunicação interlinguística expressiva em tempo real. Em suma, o Seamless nos oferece uma visão fundamental da base técnica necessária para transformar o Tradutor Universal de Fala de um conceito de ficção científica em uma tecnologia do mundo real. Por fim, as contribuições deste trabalho — incluindo modelos, código e um detector de marca d'água — são publicamente liberados e acessíveis no link abaixo.

Uso

No exemplo a seguir, carregaremos uma amostra de áudio em árabe e uma amostra de texto em inglês e os converteremos em fala em russo e texto em francês.

Primeiro, carregue o processador e um checkpoint do modelo:

from transformers import AutoProcessor, SeamlessM4Tv2Model


processor = AutoProcessor.from_pretrained("facebook/seamless-m4t-v2-large")
model = SeamlessM4Tv2Model.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")

Você pode usar este modelo de forma transparente em texto ou em áudio, para gerar texto traduzido ou áudio traduzido.

Aqui está como usar o processador para processar texto e áudio:

# let's load an audio sample from an Arabic speech corpus
from datasets import load_dataset


dataset = load_dataset("halabi2016/arabic_speech_corpus", split="test", streaming=True)
audio_sample = next(iter(dataset))["audio"]

# now, process it
audio_inputs = processor(audio=audio_sample["array"], return_tensors="pt").to(model.device)

# now, process some English text as well
text_inputs = processor(text = "Hello, my dog is cute", src_lang="eng", return_tensors="pt").to(model.device)

Fala

SeamlessM4Tv2Model pode gerar texto ou fala de forma seamless com poucas ou nenhuma alteração. Vamos direcionar para a tradução de voz em russo:

audio_array_from_text = model.generate(**text_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()
audio_array_from_audio = model.generate(**audio_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()

Com basicamente o mesmo código, traduzi texto em inglês e fala em árabe para amostras de fala em russo.

Texto

Da mesma forma, você pode gerar texto traduzido a partir de arquivos de áudio ou de texto com o mesmo modelo. Basta passar generate_speech=False para SeamlessM4Tv2Model.generate(). Desta vez, vamos traduzir para o francês.

# from audio
output_tokens = model.generate(**audio_inputs, tgt_lang="fra", generate_speech=False)
translated_text_from_audio = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)

# from text
output_tokens = model.generate(**text_inputs, tgt_lang="fra", generate_speech=False)
translated_text_from_text = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)

Dicas

1. Use modelos dedicados

SeamlessM4Tv2Model é o modelo de nível superior do transformers para gerar fala e texto, mas você também pode usar modelos dedicados que executam a tarefa sem componentes adicionais, reduzindo assim a pegada de memória. Por exemplo, você pode substituir o trecho de geração de áudio para áudio pelo modelo dedicado à tarefa S2ST; o restante é exatamente o mesmo código:

from transformers import SeamlessM4Tv2ForSpeechToSpeech


model = SeamlessM4Tv2ForSpeechToSpeech.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")

Ou você pode substituir o trecho de geração de texto-para-texto pelo modelo dedicado à tarefa T2TT, basta remover generate_speech=False.

from transformers import SeamlessM4Tv2ForTextToText


model = SeamlessM4Tv2ForTextToText.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")

Sinta-se à vontade para experimentar também SeamlessM4Tv2ForSpeechToText e SeamlessM4Tv2ForTextToSpeech.

2. Altere a identidade do falante

Você tem a possibilidade de alterar o falante usado para a síntese de fala com o argumento speaker_id. Alguns speaker_id funcionam melhor que outros para alguns idiomas!

3. Altere a estratégia de geração

Você pode usar diferentes estratégias de geração para a geração de texto, por exemplo .generate(input_ids=input_ids, text_num_beams=4, text_do_sample=True), que executará a decodificação por busca em feixe multinomial no modelo de texto. Observe que a geração de fala suporta apenas amostragem gulosa — por padrão — ou amostragem multinomial, que pode ser usada com, por exemplo, .generate(..., speech_do_sample=True, speech_temperature=0.6).

4. Gerar fala e texto ao mesmo tempo

Use return_intermediate_token_ids=True com SeamlessM4Tv2Model para retornar tanto o áudio quanto o texto!

Arquitetura do modelo

O SeamlessM4T-v2 possui uma arquitetura versátil que lida com fluidez com a geração sequencial de texto e fala. Essa configuração compreende dois modelos de sequência-para-sequência (seq2seq). O primeiro modelo traduz a modalidade de entrada em texto traduzido, enquanto o segundo modelo gera tokens de fala, conhecidos como “unit tokens”, a partir do texto traduzido.

Cada modalidade possui seu próprio codificador dedicado, com uma arquitetura única. Além disso, para a saída de fala, um vocoder inspirado na arquitetura HiFi-GAN é posicionado sobre o segundo modelo seq2seq.

Diferença em relação ao SeamlessM4T-v1

A arquitetura desta nova versão difere da primeira em alguns aspectos:

Melhorias no modelo de segunda passagem

O segundo modelo seq2seq, chamado de modelo texto-para-unidade, agora é não autoregressivo, o que significa que ele calcula as unidades em uma única passagem de frente. Essa conquista é possível graças a:

  • o uso de embeddings em nível de caractere, o que significa que cada caractere do texto traduzido previsto possui seus próprios embeddings, que são então usados para prever os tokens de unidade.
  • o uso de um preditor de duração intermediário, que prevê a duração da fala no nível de caractere no texto traduzido previsto.
  • o uso de um novo decodificador de texto para unidades que combina convoluções e autoatenção para lidar com contextos mais longos.

Diferença no codificador de fala

O codificador de fala, utilizado durante o processo de geração da primeira passagem para prever o texto traduzido, difere principalmente do codificador de fala anterior por meio dos seguintes mecanismos:

  • o uso de uma máscara de atenção em blocos para impedir a atenção entre blocos, garantindo que cada posição preste atenção apenas às posições dentro do próprio bloco e a um número fixo de blocos anteriores.
  • o uso de embeddings de posição relativa, que considera apenas a distância entre os elementos da sequência, em vez das posições absolutas. Consulte Self-Attention with Relative Position Representations (Shaw et al.) para mais detalhes.
  • o uso de uma convolução causal em profundidade (depth-wise) em vez de uma não causal.

Processo de geração

É assim que o processo de geração funciona:

  • O texto ou a fala de entrada é processado por seu codificador específico.
  • Um decoder cria tokens de texto no idioma desejado.
  • Se a geração de fala for necessária, o segundo modelo seq2seq gera tokens de unidade de forma não autoregressiva.
  • Esses tokens de unidade são então passados pelo vocoder final para produzir a fala real.

Este modelo foi contribuído por ylacombe. O código original pode ser encontrado aqui.

SeamlessM4Tv2Model

classe transformers.SeamlessM4Tv2Model

< >

( config: SeamlessM4Tv2Configcurrent_modality = 'text' )

Parâmetros

  • config (SeamlessM4Tv2Config) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
  • current_modality (str, opcional, padrão "text") — Modalidade padrão. Usada para inicializar o modelo.

O transformer do modelo original SeamlessM4Tv2, que pode ser usado para todas as tarefas disponíveis (S2ST, S2TT, T2TT, T2ST).

Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)

Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.

generate

< >

( input_ids: typing.Optional[torch.Tensor] = Noneinput_features: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespeaker_id: int | None = 0generate_speech: bool | None = True**kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor], ModelOutput]

Parâmetros

  • input_ids (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Índices dos tokens da sequência de entrada no vocabulário.

    Os índices podem ser obtidos usando SeamlessM4TTokenizer ou SeamlessM4TProcessor. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.

    O que são IDs de entrada?

  • input_features (torch.Tensor de forma (batch_size, sequence_length, num_banks), opcional) — Recursos de áudio de entrada. Isso deve ser retornado pela classe SeamlessM4TFeatureExtractor ou pela classe SeamlessM4TProcessor. Consulte SeamlessM4TFeatureExtractor.call() para mais detalhes.
  • return_intermediate_token_ids (bool, opcional) — Se True, também retorna o texto gerado intermediário e os tokens de unidade. Defina como True se você também quiser obter o texto traduzido junto com o áudio. Observe que, se generate_speech=False, este parâmetro será ignorado e os tokens de texto serão retornados.
  • tgt_lang (str, opcional) — O idioma a ser usado como idioma de destino para a tradução.
  • speaker_id (int, opcional, padrão 0) — O id do locutor usado para a síntese de fala. Deve ser menor que config.vocoder_num_spkrs.
  • generate_speech (bool, opcional, padrão True) — Se False, retorna apenas os tokens de texto e não gera fala.
  • kwargs (opcional) — Dicionário restante de argumentos por palavra-chave que será passado para GenerationMixin.generate(). Os argumentos por palavra-chave são de dois tipos:
    • Sem um prefixo, eles serão inseridos como **kwargs para o método generate de cada submodelo, exceto decoder_input_ids, que será passado apenas pelos componentes de texto.
    • Com o prefixo text_ ou speech_, eles serão a entrada para o método generate do modelo de texto e do modelo de fala, respectivamente. Têm prioridade sobre as palavras-chave sem prefixo.

    Isso significa que você pode, por exemplo, especificar uma estratégia de geração para uma geração, mas não para a outra.

Retorna

Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor], ModelOutput]

  • Se generate_speech e return_intermediate_token_ids, retorna SeamlessM4Tv2GenerationOutput.
  • Se generate_speech e não return_intermediate_token_ids, retorna uma tupla composta por formas de onda de forma (batch_size, sequence_length) e waveform_lengths, que fornece o comprimento de cada amostra.
  • Se generate_speech=False, ele retorna ModelOutput.

Gera ids de tokens traduzidos e/ou formas de onda de áudio traduzidas.

Este método chama sucessivamente a função .generate de dois submodelos diferentes. É possível especificar argumentos de palavra-chave em dois níveis diferentes: argumentos gerais que serão passados para ambos os modelos, ou argumentos com prefixo que serão passados para um deles.

Por exemplo, chamar .generate(input_ids=input_ids, num_beams=4, speech_do_sample=True) executará sucessivamente a decodificação por busca em feixe no modelo de texto e a amostragem por busca em feixe multinomial no modelo de fala.

Para uma visão geral das estratégias de geração e exemplos de código, consulte o guia a seguir.

SeamlessM4Tv2ForTextToSpeech

classe transformers.SeamlessM4Tv2ForTextToSpeech

< >

( config: SeamlessM4Tv2Config )

Parâmetros

  • config (SeamlessM4Tv2Config) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.

O transformer do modelo text-to-speech SeamlessM4Tv2, que pode ser usado para T2ST.

Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)

Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.

generate

< >

( input_ids: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespeaker_id: int | None = 0**kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]

Parâmetros

  • input_ids (torch.LongTensor de forma (batch_size, sequence_length)) — Índices dos tokens da sequência de entrada no vocabulário. Os índices podem ser obtidos usando SeamlessM4TTokenizer ou SeamlessM4TProcessor. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes. O que são IDs de entrada?

    Os índices podem ser obtidos usando SeamlessM4TTokenizer ou SeamlessM4TProcessor. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.

    O que são IDs de entrada?

  • return_intermediate_token_ids (bool, opcional) — Se True, também retorna o texto gerado intermediário e os tokens de unidade. Defina como True se você também quiser obter o texto traduzido junto com o áudio.
  • tgt_lang (str, opcional) — O idioma a ser usado como idioma de destino para a tradução.
  • speaker_id (int, opcional, padrão 0) — O id do locutor usado para a síntese de fala. Deve ser menor que config.vocoder_num_spkrs.
  • kwargs (opcional) — Dicionário restante de argumentos por palavra-chave que será passado para GenerationMixin.generate(). Os argumentos por palavra-chave são de dois tipos:
    • Sem um prefixo, eles serão inseridos como **kwargs para o método generate de cada submodelo, exceto decoder_input_ids, que será passado apenas pelos componentes de texto.
    • Com o prefixo text_ ou speech_, eles serão a entrada para o método generate do modelo de texto e do modelo de fala, respectivamente. Têm prioridade sobre as palavras-chave sem prefixo.

    Isso significa que você pode, por exemplo, especificar uma estratégia de geração para uma geração, mas não para a outra.

Retorna

Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]

  • Se return_intermediate_token_ids, retorna SeamlessM4Tv2GenerationOutput.
  • Se return_intermediate_token_ids não for definido, retorna uma tupla composta por formas de onda de forma (batch_size, sequence_length) e waveform_lengths, que fornece o comprimento de cada amostra.

Gera formas de onda de áudio traduzidas.

Este método chama sucessivamente a função .generate de dois submodelos diferentes. É possível especificar argumentos de palavra-chave em dois níveis diferentes: argumentos gerais que serão passados para ambos os modelos, ou argumentos com prefixo que serão passados para um deles.

Por exemplo, chamar .generate(input_ids, num_beams=4, speech_do_sample=True) executará sucessivamente a decodificação por busca em feixe no modelo de texto e a amostragem por busca em feixe multinomial no modelo de fala.

Para uma visão geral das estratégias de geração e exemplos de código, consulte o guia a seguir.

SeamlessM4Tv2ForSpeechToSpeech

classe transformers.SeamlessM4Tv2ForSpeechToSpeech

< >

( config: SeamlessM4Tv2Config )

Parâmetros

  • config (SeamlessM4Tv2Config) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.

O transformer do modelo SeamlessM4Tv2 de fala para fala, que pode ser usado para S2ST.

Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)

Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.

generate

< >

( input_features: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespeaker_id: int | None = 0**kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]

Parâmetros

  • input_features (torch.Tensor de forma (batch_size, sequence_length, num_banks)) — Recursos de áudio de entrada. Isso deve ser retornado pela classe SeamlessM4TFeatureExtractor ou pela classe SeamlessM4TProcessor. Consulte SeamlessM4TFeatureExtractor.call() para mais detalhes.
  • return_intermediate_token_ids (bool, opcional) — Se True, também retorna o texto gerado intermediário e os tokens de unidade. Defina como True se você também quiser obter o texto traduzido junto com o áudio.
  • tgt_lang (str, opcional) — O idioma a ser usado como idioma de destino para a tradução.
  • speaker_id (int, opcional, padrão 0) — O id do locutor usado para a síntese de fala. Deve ser menor que config.vocoder_num_spkrs.
  • kwargs (opcional) — Dicionário restante de argumentos por palavra-chave que será passado para GenerationMixin.generate(). Os argumentos por palavra-chave são de dois tipos:
    • Sem um prefixo, eles serão inseridos como **kwargs para o método generate de cada submodelo, exceto decoder_input_ids, que será passado apenas pelos componentes de texto.
    • Com o prefixo text_ ou speech_, eles serão a entrada para o método generate do modelo de texto e do modelo de fala, respectivamente. Têm prioridade sobre as palavras-chave sem prefixo.

    Isso significa que você pode, por exemplo, especificar uma estratégia de geração para uma geração, mas não para a outra.

Retorna

Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]

  • Se return_intermediate_token_ids, retorna SeamlessM4Tv2GenerationOutput.
  • Se return_intermediate_token_ids não for definido, retorna uma tupla composta por formas de onda de forma (batch_size, sequence_length) e waveform_lengths, que fornece o comprimento de cada amostra.

Gera formas de onda de áudio traduzidas.

Este método chama sucessivamente a função .generate de dois submodelos diferentes. É possível especificar argumentos de palavra-chave em dois níveis diferentes: argumentos gerais que serão passados para ambos os modelos, ou argumentos com prefixo que serão passados para um deles.

Por exemplo, chamar .generate(input_features, num_beams=4, speech_do_sample=True) executará sucessivamente a decodificação por beam-search no modelo de texto e a amostragem por beam-search multinomial no modelo de fala.

Para uma visão geral das estratégias de geração e exemplos de código, consulte o guia a seguir.

SeamlessM4Tv2ForTextToText

classe transformers.SeamlessM4Tv2ForTextToText

< >

( config: SeamlessM4Tv2Config )

Parâmetros

  • config (SeamlessM4Tv2Config) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.

O transformer do modelo text-to-text SeamlessM4Tv2, que pode ser usado para T2TT.

Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)

Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.Tensor)

Parâmetros

  • input_ids (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Índices dos tokens da sequência de entrada no vocabulário. O padding será ignorado por padrão.

    Os índices podem ser obtidos usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.

    O que são IDs de entrada?

  • attention_mask (torch.Tensor de forma (batch_size, sequence_length), opcional) — Máscara para evitar a execução de atenção nos índices de tokens de preenchimento. Valores de máscara selecionados em [0, 1]:
    • 1 para tokens que não estão mascarados,
    • 0 para tokens que estão mascarados.

    O que são máscaras de atenção?

  • decoder_input_ids (torch.LongTensor de forma (batch_size, target_sequence_length), opcional) — Índices dos tokens da sequência de entrada do decodificador no vocabulário.

    Os índices podem ser obtidos usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.

    O que são IDs de entrada do decodificador?

    O Bart usa o eos_token_id como o token inicial para a geração de decoder_input_ids. Se past_key_values for usado, opcionalmente apenas o último decoder_input_ids precisa ser inserido (veja past_key_values).

    Para o treinamento de tradução e sumarização, decoder_input_ids deve ser fornecido. Se nenhum decoder_input_ids for fornecido, o modelo criará esse tensor deslocando o input_ids para a direita para o pré-treinamento de desruido, conforme o artigo.

  • decoder_attention_mask (torch.LongTensor de forma (batch_size, target_sequence_length), opcional) — Comportamento padrão: gerar um tensor que ignora tokens de padding em decoder_input_ids. A máscara causal também será usada por padrão.

    Se você deseja alterar o comportamento de padding, deve ler modeling_bart._prepare_decoder_attention_mask e modificar conforme suas necessidades. Consulte o diagrama 1 em o artigo para mais informações sobre a estratégia padrão.

  • encoder_outputs (tuple[tuple[torch.Tensor]], opcional) — A tupla consiste em (last_hidden_state, opcional: hidden_states, opcional: attentions) last_hidden_state de forma (batch_size, sequence_length, hidden_size), opcional) é uma sequência de hidden-states na saída da última camada do encoder. Usado na cross-attention do decoder.
  • past_key_values (~cache_utils.Cache, opcional) — Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção e nos blocos de atenção cruzada) que podem ser usados para acelerar a decodificação sequencial. Isso geralmente consiste no past_key_values retornado pelo modelo em uma etapa anterior da decodificação, quando use_cache=True ou config.use_cache=True.

    Apenas uma instância de Cache é permitida como entrada, consulte nosso guia de cache de kv. Se nenhum past_key_values for passado, DynamicCache será inicializado por padrão.

    O modelo sairá no mesmo formato de cache que é fornecido como entrada.

    Se past_key_values forem usados, espera-se que o usuário insira apenas os input_ids não processados (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo) com a forma (batch_size, unprocessed_length), em vez de todos os input_ids com a forma (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor de forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passar input_ids você pode escolher passar diretamente uma representação incorporada. Isso é útil se você quiser mais controle sobre como converter input_ids índices em vetores associados do que a matriz de busca de incorporação interna do modelo.

    labels (torch.LongTensor de forma (batch_size, sequence_length), opcional): Rótulos para o cálculo da perda de modelagem de linguagem mascarada. Os índices devem estar em [-100, 0, ..., config.vocab_size] (veja a docstring de input_ids). Tokens com índices definidos como -100 são ignorados (mascarados); a perda é calculada apenas para os tokens com rótulos em [0, ..., config.vocab_size]

  • decoder_inputs_embeds (torch.Tensor de forma (batch_size, target_sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passar decoder_input_ids você pode escolher passar diretamente uma representação incorporada. Se past_key_values for usado, opcionalmente apenas o último decoder_inputs_embeds precisa ser entrada (veja past_key_values). Isso é útil se você quiser mais controle sobre como converter decoder_input_ids índices em vetores associados do que a matriz de busca de incorporação interna do modelo.

    Se decoder_input_ids e decoder_inputs_embeds estiverem ambos não definidos, decoder_inputs_embeds assume o valor de inputs_embeds.

  • labels (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Rótulos para o cálculo da perda de modelagem de linguagem mascarada. Os índices devem estar em [0, ..., config.vocab_size] ou ser -100 (veja a docstring de input_ids). Tokens com índices definidos como -100 são ignorados (mascarados); a perda é calculada apenas para os tokens com rótulos em [0, ..., config.vocab_size].
  • use_cache (bool, opcional) — Se definido como True, os estados de chave-valor past_key_values são retornados e podem ser usados para acelerar a decodificação (veja past_key_values).

Retorna

Seq2SeqLMOutput ou tuple(torch.Tensor)

Um Seq2SeqLMOutput ou uma tupla de torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários elementos, dependendo da configuração (SeamlessM4Tv2Config) e das entradas.

O método forward de SeamlessM4Tv2ForTextToText substitui o método especial __call__.

Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de Module em seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.

  • loss (torch.Tensor de forma (1,), opcional, retornado quando labels é fornecido) — Perda de modelagem de linguagem.

  • logits (torch.Tensor de forma (batch_size, sequence_length, config.vocab_size)) — Pontuações de previsão da cabeça de modelagem de linguagem (pontuações para cada token do vocabulário antes do SoftMax).

  • past_key_values (EncoderDecoderCache, opcional, retornado quando use_cache=True é passado ou quando config.use_cache=True) — Trata-se de uma instância de EncoderDecoderCache. Para mais detalhes, consulte nosso guia de cache kv.

    Contém estados ocultos pré-computados (chaves e valores nos blocos de autoatenção e nos blocos de atenção cruzada) que podem ser usados (veja a entrada past_key_values) para acelerar a decodificação sequencial.

  • decoder_hidden_states (tuple(torch.Tensor), opcional, retornado quando output_hidden_states=True é passado ou quando config.output_hidden_states=True) — Tupla de torch.Tensor (um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos do decodificador na saída de cada camada, além das saídas do embedding inicial.

  • decoder_attentions (tuple(torch.Tensor), opcional, retornado quando output_attentions=True é passado ou quando config.output_attentions=True) — Tupla de torch.Tensor (um para cada camada) com forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atenção do decodificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de autoatenção.

  • cross_attentions (tuple(torch.Tensor), opcional, retornado quando output_attentions=True é passado ou quando config.output_attentions=True) — Tupla de torch.Tensor (um para cada camada) com forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atenção da camada de atenção cruzada do decodificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de atenção cruzada.

  • encoder_last_hidden_state (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Sequência de estados ocultos na saída da última camada do codificador do modelo.

  • encoder_hidden_states (tuple(torch.Tensor), opcional, retornado quando output_hidden_states=True é passado ou quando config.output_hidden_states=True) — Tupla de torch.Tensor (um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos do codificador na saída de cada camada, além das saídas do embedding inicial.

  • encoder_attentions (tuple(torch.Tensor), opcional, retornado quando output_attentions=True é passado ou quando config.output_attentions=True) — Tupla de torch.Tensor (um para cada camada) com forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atenção do codificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de autoatenção.

generate

< >

( input_ids = Nonetgt_lang = Nonegeneration_config = Nonelogits_processor = Nonestopping_criteria = Noneprefix_allowed_tokens_fn = Nonesynced_gpus = False**kwargs ) → ModelOutput or torch.LongTensor

Parâmetros

  • input_ids (torch.Tensor de forma variável, dependendo da modalidade, opcional) — Índices dos tokens da sequência de entrada no vocabulário.

    Os índices podem ser obtidos usando SeamlessM4TTokenizer ou SeamlessM4TProcessor. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.

    O que são IDs de entrada?

  • tgt_lang (str, opcional) — O idioma a ser usado como idioma de destino para a tradução.
  • generation_config (~generation.GenerationConfig, opcional) — A configuração de geração a ser usada como parametrização base para a chamada de geração. Os **kwargs passados para generate que correspondam aos atributos de generation_config os sobrescreverão. Se generation_config não for fornecido, o padrão será usado, que tem a seguinte prioridade de carregamento: 1) do arquivo de modelo generation_config.json, se existir; 2) da configuração do modelo. Observe que os parâmetros não especificados herdarão os valores padrão de GenerationConfig, cuja documentação deve ser consultada para parametrizar a geração.
  • logits_processor (LogitsProcessorList, opcional) — Processadores de logits personalizados que complementam os processadores de logits padrão criados a partir dos argumentos e da configuração de geração. Se um processador de logits for passado que já foi criado com os argumentos ou com uma configuração de geração, um erro será lançado. Este recurso é destinado a usuários avançados.
  • stopping_criteria (StoppingCriteriaList, opcional) — Critérios de parada personalizados que complementam os critérios de parada padrão criados a partir dos argumentos e de uma configuração de geração. Se um critério de parada for passado que já foi criado com os argumentos ou com uma configuração de geração, um erro será lançado. Este recurso é destinado a usuários avançados.
  • prefix_allowed_tokens_fn (Callable[[int, torch.Tensor], list[int]], opcional) — Se fornecida, esta função restringe a busca por feixe apenas aos tokens permitidos em cada etapa. Se não for fornecida, nenhuma restrição é aplicada. Esta função recebe 2 argumentos: o ID do lote batch_id e input_ids. Ela deve retornar uma lista com os tokens permitidos para a próxima etapa de geração, condicionada ao ID do lote batch_id e aos tokens gerados anteriormente inputs_ids. Este argumento é útil para geração condicionada ao prefixo, conforme descrito em Autoregressive Entity Retrieval.
  • synced_gpus (bool, opcional, padrão False) — Se deve continuar executando o loop while até max_length (necessário para evitar deadlocks com FullyShardedDataParallel e DeepSpeed ZeRO Stage 3).
  • kwargs (dict[str, Any], opcional) — Parametrização ad hoc de generate_config e/ou kwargs específicos do modelo adicionais que serão encaminhados para a função forward do modelo.

Retorna

ModelOutput ou torch.LongTensor

Um ModelOutput (se return_dict_in_generate=True ou quando config.return_dict_in_generate=True) ou um torch.Tensor. Os tipos possíveis de ModelOutput são:

Gera sequências de ids de tokens.

A maioria dos parâmetros de controle de geração é definida em generation_config, que, se não for fornecida, será definida como a configuração de geração padrão do modelo. Você pode sobrescrever qualquer generation_config passando os parâmetros correspondentes para generate(), por exemplo, .generate(inputs, num_beams=4, do_sample=True).

Para uma visão geral das estratégias de geração e exemplos de código, consulte o guia a seguir.

SeamlessM4Tv2ForSpeechToText

classe transformers.SeamlessM4Tv2ForSpeechToText

< >

( config: SeamlessM4Tv2Config )

Parâmetros

  • config (SeamlessM4Tv2Config) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.

O transformer do modelo de fala para texto SeamlessM4Tv2, que pode ser usado para S2TT.

Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)

Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.

forward

< >

( input_features: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.Tensor)

Parâmetros

  • input_features (torch.Tensor de forma (batch_size, sequence_length, num_banks)) — Recursos de áudio de entrada. Isso deve ser retornado pela classe SeamlessM4TFeatureExtractor ou pela classe SeamlessM4TProcessor. Consulte SeamlessM4TFeatureExtractor.call() para mais detalhes.
  • attention_mask (torch.Tensor de forma (batch_size, sequence_length), opcional) — Máscara para evitar a execução de atenção nos índices de tokens de preenchimento. Valores de máscara selecionados em [0, 1]:
    • 1 para tokens que não estão mascarados,
    • 0 para tokens que estão mascarados.

    O que são máscaras de atenção?

  • decoder_input_ids (torch.LongTensor de forma (batch_size, target_sequence_length), opcional) — Índices dos tokens da sequência de entrada do decodificador no vocabulário.

    Os índices podem ser obtidos usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.

    O que são IDs de entrada do decodificador?

    O Bart usa o eos_token_id como o token inicial para a geração de decoder_input_ids. Se past_key_values for usado, opcionalmente apenas o último decoder_input_ids precisa ser inserido (veja past_key_values).

    Para o treinamento de tradução e sumarização, decoder_input_ids deve ser fornecido. Se nenhum decoder_input_ids for fornecido, o modelo criará esse tensor deslocando o input_ids para a direita para o pré-treinamento de desruido, conforme o artigo.

  • decoder_attention_mask (torch.LongTensor de forma (batch_size, target_sequence_length), opcional) — Comportamento padrão: gerar um tensor que ignora tokens de padding em decoder_input_ids. A máscara causal também será usada por padrão.

    Se você deseja alterar o comportamento de padding, deve ler modeling_bart._prepare_decoder_attention_mask e modificar conforme suas necessidades. Consulte o diagrama 1 em o artigo para mais informações sobre a estratégia padrão.

  • encoder_outputs (tuple[tuple[torch.Tensor]], opcional) — A tupla consiste em (last_hidden_state, opcional: hidden_states, opcional: attentions) last_hidden_state de forma (batch_size, sequence_length, hidden_size), opcional) é uma sequência de hidden-states na saída da última camada do encoder. Usado na cross-attention do decoder.
  • past_key_values (~cache_utils.Cache, opcional) — Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção e nos blocos de atenção cruzada) que podem ser usados para acelerar a decodificação sequencial. Isso geralmente consiste no past_key_values retornado pelo modelo em uma etapa anterior da decodificação, quando use_cache=True ou config.use_cache=True.

    Apenas uma instância de Cache é permitida como entrada, consulte nosso guia de cache de kv. Se nenhum past_key_values for passado, DynamicCache será inicializado por padrão.

    O modelo sairá no mesmo formato de cache que é fornecido como entrada.

    Se past_key_values forem usados, espera-se que o usuário insira apenas os input_ids não processados (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo) com a forma (batch_size, unprocessed_length), em vez de todos os input_ids com a forma (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor de forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passar input_ids você pode escolher passar diretamente uma representação incorporada. Isso é útil se você quiser mais controle sobre como converter input_ids índices em vetores associados do que a matriz de busca de incorporação interna do modelo.

    labels (torch.LongTensor de forma (batch_size, sequence_length), opcional): Rótulos para o cálculo da perda de modelagem de linguagem mascarada. Os índices devem estar em [-100, 0, ..., config.vocab_size] (veja a docstring de input_ids). Tokens com índices definidos como -100 são ignorados (mascarados); a perda é calculada apenas para os tokens com rótulos em [0, ..., config.vocab_size]

  • decoder_inputs_embeds (torch.Tensor de forma (batch_size, target_sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passar decoder_input_ids você pode escolher passar diretamente uma representação incorporada. Se past_key_values for usado, opcionalmente apenas o último decoder_inputs_embeds precisa ser entrada (veja past_key_values). Isso é útil se você quiser mais controle sobre como converter decoder_input_ids índices em vetores associados do que a matriz de busca de incorporação interna do modelo.

    Se decoder_input_ids e decoder_inputs_embeds estiverem ambos não definidos, decoder_inputs_embeds assume o valor de inputs_embeds.

  • labels (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Rótulos para o cálculo da perda de modelagem de linguagem mascarada. Os índices devem estar em [0, ..., config.vocab_size] ou ser -100 (veja a docstring de input_ids). Tokens com índices definidos como -100 são ignorados (mascarados); a perda é calculada apenas para os tokens com rótulos em [0, ..., config.vocab_size].
  • use_cache (bool, opcional) — Se definido como True, os estados de chave-valor past_key_values são retornados e podem ser usados para acelerar a decodificação (veja past_key_values).

Retorna

Seq2SeqLMOutput ou tuple(torch.Tensor)

Um Seq2SeqLMOutput ou uma tupla de torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários elementos, dependendo da configuração (SeamlessM4Tv2Config) e das entradas.

O método forward da SeamlessM4Tv2ForSpeechToText substitui o método especial __call__.

Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de Module em seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.

  • loss (torch.Tensor de forma (1,), opcional, retornado quando labels é fornecido) — Perda de modelagem de linguagem.

  • logits (torch.Tensor de forma (batch_size, sequence_length, config.vocab_size)) — Pontuações de previsão da cabeça de modelagem de linguagem (pontuações para cada token do vocabulário antes do SoftMax).

  • past_key_values (EncoderDecoderCache, opcional, retornado quando use_cache=True é passado ou quando config.use_cache=True) — Trata-se de uma instância de EncoderDecoderCache. Para mais detalhes, consulte nosso guia de cache kv.

    Contém estados ocultos pré-computados (chaves e valores nos blocos de autoatenção e nos blocos de atenção cruzada) que podem ser usados (veja a entrada past_key_values) para acelerar a decodificação sequencial.

  • decoder_hidden_states (tuple(torch.Tensor), opcional, retornado quando output_hidden_states=True é passado ou quando config.output_hidden_states=True) — Tupla de torch.Tensor (um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos do decodificador na saída de cada camada, além das saídas do embedding inicial.

  • decoder_attentions (tuple(torch.Tensor), opcional, retornado quando output_attentions=True é passado ou quando config.output_attentions=True) — Tupla de torch.Tensor (um para cada camada) com forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atenção do decodificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de autoatenção.

  • cross_attentions (tuple(torch.Tensor), opcional, retornado quando output_attentions=True é passado ou quando config.output_attentions=True) — Tupla de torch.Tensor (um para cada camada) com forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atenção da camada de atenção cruzada do decodificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de atenção cruzada.

  • encoder_last_hidden_state (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Sequência de estados ocultos na saída da última camada do codificador do modelo.

  • encoder_hidden_states (tuple(torch.Tensor), opcional, retornado quando output_hidden_states=True é passado ou quando config.output_hidden_states=True) — Tupla de torch.Tensor (um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos do codificador na saída de cada camada, além das saídas do embedding inicial.

  • encoder_attentions (tuple(torch.Tensor), opcional, retornado quando output_attentions=True é passado ou quando config.output_attentions=True) — Tupla de torch.Tensor (um para cada camada) com forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atenção do codificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de autoatenção.

Exemplo:

>>> from transformers import AutoProcessor, SeamlessM4Tv2ForSpeechToText
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> processor = AutoProcessor.from_pretrained("facebook/hf-seamless-m4t-medium")
>>> model = SeamlessM4Tv2ForSpeechToText.from_pretrained("facebook/hf-seamless-m4t-medium")

>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)

>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...

>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids

>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...

generate

< >

( input_features = Nonetgt_lang = Nonegeneration_config = Nonelogits_processor = Nonestopping_criteria = Noneprefix_allowed_tokens_fn = Nonesynced_gpus = False**kwargs ) → ModelOutput or torch.LongTensor

Parâmetros

  • input_features (torch.Tensor de forma (batch_size, sequence_length, num_banks)) — Recursos de áudio de entrada. Isso deve ser retornado pela classe SeamlessM4TFeatureExtractor ou pela classe SeamlessM4TProcessor. Consulte SeamlessM4TFeatureExtractor.call() para mais detalhes.
  • tgt_lang (str, opcional) — O idioma a ser usado como idioma de destino para a tradução.
  • generation_config (~generation.GenerationConfig, opcional) — A configuração de geração a ser usada como parametrização base para a chamada de geração. Os **kwargs passados para generate que correspondam aos atributos de generation_config os sobrescreverão. Se generation_config não for fornecido, o padrão será usado, que tem a seguinte prioridade de carregamento: 1) do arquivo de modelo generation_config.json, se existir; 2) da configuração do modelo. Observe que os parâmetros não especificados herdarão os valores padrão de GenerationConfig, cuja documentação deve ser consultada para parametrizar a geração.
  • logits_processor (LogitsProcessorList, opcional) — Processadores de logits personalizados que complementam os processadores de logits padrão criados a partir dos argumentos e da configuração de geração. Se um processador de logits for passado que já foi criado com os argumentos ou com uma configuração de geração, um erro será lançado. Este recurso é destinado a usuários avançados.
  • stopping_criteria (StoppingCriteriaList, opcional) — Critérios de parada personalizados que complementam os critérios de parada padrão criados a partir dos argumentos e de uma configuração de geração. Se um critério de parada for passado que já foi criado com os argumentos ou com uma configuração de geração, um erro será lançado. Este recurso é destinado a usuários avançados.
  • prefix_allowed_tokens_fn (Callable[[int, torch.Tensor], list[int]], opcional) — Se fornecida, esta função restringe a busca por feixe apenas aos tokens permitidos em cada etapa. Se não for fornecida, nenhuma restrição é aplicada. Esta função recebe 2 argumentos: o ID do lote batch_id e input_ids. Ela deve retornar uma lista com os tokens permitidos para a próxima etapa de geração, condicionada ao ID do lote batch_id e aos tokens gerados anteriormente inputs_ids. Este argumento é útil para geração condicionada ao prefixo, conforme descrito em Autoregressive Entity Retrieval.
  • synced_gpus (bool, opcional, padrão False) — Se deve continuar executando o loop while até max_length (necessário para evitar deadlocks com FullyShardedDataParallel e DeepSpeed ZeRO Stage 3).
  • kwargs (dict[str, Any], opcional) — Parametrização ad hoc de generate_config e/ou kwargs específicos do modelo adicionais que serão encaminhados para a função forward do modelo.

Retorna

ModelOutput ou torch.LongTensor

Um ModelOutput (se return_dict_in_generate=True ou quando config.return_dict_in_generate=True) ou um torch.Tensor. Os tipos possíveis de ModelOutput são:

Gera sequências de ids de tokens.

A maioria dos parâmetros de controle de geração é definida em generation_config, que, se não for fornecida, será definida como a configuração de geração padrão do modelo. Você pode sobrescrever qualquer generation_config passando os parâmetros correspondentes para generate(), por exemplo, .generate(inputs, num_beams=4, do_sample=True).

Para uma visão geral das estratégias de geração e exemplos de código, consulte o guia a seguir.

SeamlessM4Tv2Config

classe transformers.SeamlessM4Tv2Config

< >

( 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 = Truevocab_size: int = 256102t2u_vocab_size: int = 10082char_vocab_size: int = 10943hidden_size: int = 1024initializer_range: float = 0.02layer_norm_eps: float = 1e-05use_cache: bool = Truemax_position_embeddings: int = 4096encoder_layerdrop: float | int = 0.05decoder_layerdrop: float | int = 0.05activation_function: str = 'relu'dropout: float | int = 0.1attention_dropout: float | int = 0.1activation_dropout: float | int = 0.0scale_embedding: bool = Trueencoder_layers: int = 24encoder_ffn_dim: int = 8192encoder_attention_heads: int = 16decoder_layers: int = 24decoder_ffn_dim: int = 8192decoder_attention_heads: int = 16decoder_start_token_id: int = 3max_new_tokens: int | None = 256pad_token_id: int | None = 0bos_token_id: int | None = 2eos_token_id: int | list[int] | None = 3speech_encoder_layers: int = 24speech_encoder_attention_heads: int = 16speech_encoder_intermediate_size: int = 4096speech_encoder_hidden_act: str = 'swish'speech_encoder_dropout: float | int = 0.0add_adapter: bool = Truespeech_encoder_layerdrop: float | int = 0.1feature_projection_input_dim: int = 160adaptor_kernel_size: int = 8adaptor_stride: int = 8adaptor_dropout: float | int = 0.1num_adapter_layers: int = 1position_embeddings_type: str = 'relative_key'conv_depthwise_kernel_size: int = 31left_max_position_embeddings: int = 64right_max_position_embeddings: int = 8speech_encoder_chunk_size: int = 20000speech_encoder_left_chunk_num: int = 128t2u_bos_token_id: int | None = 0t2u_pad_token_id: int | None = 1t2u_eos_token_id: int | list[int] | None = 2t2u_encoder_layers: int = 6t2u_encoder_ffn_dim: int = 8192t2u_encoder_attention_heads: int = 16t2u_decoder_layers: int = 6t2u_decoder_ffn_dim: int = 8192t2u_decoder_attention_heads: int = 16t2u_max_position_embeddings: int = 4096t2u_variance_predictor_embed_dim: int = 1024t2u_variance_predictor_hidden_dim: int = 256t2u_variance_predictor_kernel_size: int = 3t2u_variance_pred_dropout: float | int = 0.5sampling_rate: int = 16000upsample_initial_channel: int = 512upsample_rates: list[int] | tuple[int, ...] = (5, 4, 4, 2, 2)upsample_kernel_sizes: list[int] | tuple[int, ...] = (11, 8, 8, 4, 4)resblock_kernel_sizes: list[int] | tuple[int, ...] = (3, 7, 11)resblock_dilation_sizes: list | tuple = ((1, 3, 5), (1, 3, 5), (1, 3, 5))leaky_relu_slope: float = 0.1unit_hifi_gan_vocab_size: int = 10000unit_embed_dim: int = 1280lang_embed_dim: int = 256spkr_embed_dim: int = 256vocoder_num_langs: int = 36vocoder_num_spkrs: int = 200variance_predictor_kernel_size: int = 3var_pred_dropout: float | int = 0.5vocoder_offset: int = 4tie_word_embeddings: bool = True )

Parâmetros

  • is_encoder_decoder (bool, opcional, padrão True) — Indica se o modelo é usado como encoder/decoder ou não.
  • vocab_size (int, opcional, padrão 256102) — Tamanho do vocabulário do modelo. Define o número de tokens diferentes que podem ser representados pelos input_ids.
  • t2u_vocab_size (int, opcional, padrão 10082) — Tamanho do vocabulário de unidades do modelo SeamlessM4Tv2. Define o número de diferentes “unit tokens” que podem ser representados pelos inputs_ids passados ao chamar o submodelo Text-To-Units de ~SeamlessM4Tv2Model, ~SeamlessM4Tv2ForSpeechToSpeech ou ~SeamlessM4Tv2ForTextToSpeech.
  • char_vocab_size (int, opcional, padrão 10943) — Tamanho do vocabulário de caracteres do modelo SeamlessM4Tv2. Define o número de tokens de caracteres diferentes que podem ser representados pelos char_inputs_ids passados ao chamar o submodelo Text-To-Units de ~SeamlessM4Tv2Model, ~SeamlessM4Tv2ForSpeechToSpeech ou ~SeamlessM4Tv2ForTextToSpeech.
  • hidden_size (int, opcional, padrão 1024) — Dimensão das representações ocultas.
  • initializer_range (float, opcional, padrão 0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos.
  • layer_norm_eps (float, opcional, padrão 1e-05) — O epsilon usado pelas camadas de normalização de camada.
  • use_cache (bool, opcional, padrão True) — Se o modelo deve ou não retornar as últimas chaves/valores de atenção (não usado por todos os modelos). Relevante apenas se config.is_decoder=True ou quando o modelo for um modelo generativo somente decodificador.
  • max_position_embeddings (int, opcional, padrão 4096) — O comprimento máximo de sequência com o qual este modelo pode ser utilizado.
  • encoder_layerdrop (Union[float, int], opcional, padrão 0.05) — A probabilidade de LayerDrop para o encoder. Veja o [artigo do LayerDrop](veja https://huggingface.co/papers/1909.11556) para mais detalhes.
  • decoder_layerdrop (Union[float, int], opcional, padrão 0.05) — A probabilidade de LayerDrop para o decoder. Veja o [artigo do LayerDrop](veja https://huggingface.co/papers/1909.11556) para mais detalhes.
  • activation_function (str, opcional, padrão relu) — A função de ativação não linear (função ou string) no decodificador. Por exemplo, "gelu", "relu", "silu", etc.
  • dropout (Union[float, int], opcional, padrão 0.1) — A proporção para todas as camadas de dropout.
  • attention_dropout (Union[float, int], opcional, padrão 0.1) — A taxa de dropout para as probabilidades de atenção.
  • activation_dropout (Union[float, int], opcional, padrão 0.0) — A taxa de dropout para as ativações dentro da camada totalmente conectada.
  • scale_embedding (bool, opcional, padrão True) — Se as embeddings devem ser escalonadas dividindo por sqrt(d_model).
  • encoder_layers (int, opcional, padrão 24) — Número de camadas ocultas no codificador do Transformer. Usará o mesmo valor de num_layers se não for definido.
  • encoder_ffn_dim (int, opcional, padrão 8192) — Dimensão da camada “intermediária” (frequentemente chamada de feed-forward) no encoder.
  • encoder_attention_heads (int, opcional, padrão 16) — Número de cabeças de atenção para cada camada de atenção no codificador do Transformer.
  • decoder_layers (int, opcional, padrão 24) — Número de camadas ocultas no decodificador do Transformer. Se não for definido, usará o mesmo valor de num_layers.
  • decoder_ffn_dim (int, opcional, padrão 8192) — Dimensão da camada “intermediária” (frequentemente chamada de feed-forward) no decoder.
  • decoder_attention_heads (int, opcional, padrão 16) — Número de cabeças de atenção para cada camada de atenção no decodificador do Transformer.
  • decoder_start_token_id (int, opcional, padrão 3) — Se um modelo encoder-decoder inicia a decodificação com um token diferente de bos, o id desse token.
  • max_new_tokens (int, opcional, padrão 256) — O número máximo de tokens de texto a serem gerados, ignorando o número de tokens no prompt.
  • pad_token_id (int, opcional, padrão 0) — ID do token usado para preenchimento no vocabulário.
  • bos_token_id (int, opcional, padrão 2) — ID do token usado para o início do fluxo no vocabulário.
  • eos_token_id (Union[int, list[int]], opcional, padrão 3) — ID do token usado para o fim do fluxo no vocabulário.
  • speech_encoder_layers (int, opcional, padrão 24) — Número de camadas ocultas no codificador de fala Transformer.
  • speech_encoder_attention_heads (int, opcional, padrão 16) — Número de cabeças de atenção para cada camada de atenção no codificador de fala Transformer.
  • speech_encoder_intermediate_size (int, opcional, padrão 4096) — Dimensão da camada “intermediária” (ou seja, feed-forward) no codificador de fala Transformer.
  • speech_encoder_hidden_act (str ou function, opcional, padrão "swish") — A função de ativação não linear (função ou string) no codificador de fala. Se for string, "gelu", "relu", "selu", "swish" e "gelu_new" são suportadas.
  • speech_encoder_dropout (float, opcional, padrão 0.0) — A probabilidade de dropout para todas as camadas no codificador de fala.
  • add_adapter (bool, opcional, padrão True) — Adiciona uma camada de adaptador sobre o codificador de fala.
  • speech_encoder_layerdrop (float, opcional, padrão 0.1) — A probabilidade de LayerDrop para o codificador de fala. Consulte o [artigo do LayerDrop](veja https://huggingface.co/papers/1909.11556) para mais detalhes.
  • feature_projection_input_dim (int, opcional, padrão 160) — Dimensão de entrada da projeção de recursos de entrada do codificador de fala, ou seja, a dimensão após o processamento dos áudios de entrada com SeamlessM4TFeatureExtractor.
  • adaptor_kernel_size (int, opcional, padrão 8) — Tamanho do kernel das camadas convolucionais na rede adaptadora. Relevante apenas se add_adapter is True.
  • adaptor_stride (int, opcional, padrão 8) — Passo das camadas convolucionais na rede adaptadora. Relevante apenas se add_adapter is True.
  • adaptor_dropout (float, opcional, padrão 0.1) — A probabilidade de dropout para todas as camadas do adaptador de fala.
  • num_adapter_layers (int, opcional, padrão 1) — Número de camadas convolucionais que devem ser usadas na rede de adaptador. Relevante apenas se add_adapter is True.
  • position_embeddings_type (str, opcional, padrão "relative_key") — Pode ser especificado como relative_key. Se mantido como None, nenhum embedding de posição relativa é aplicado. Aplicado apenas ao codificador de fala. Para mais informações sobre "relative_key", consulte Self-Attention with Relative Position Representations (Shaw et al.).
  • conv_depthwise_kernel_size (int, opcional, padrão 31) — Tamanho do kernel da camada convolucional depthwise 1D nos blocos Conformer. Aplicado apenas ao codificador de fala.
  • left_max_position_embeddings (int, opcional, padrão 64) — O valor de recorte à esquerda para posições relativas.
  • right_max_position_embeddings (int, opcional, padrão 8) — O valor de recorte à direita para posições relativas.
  • speech_encoder_chunk_size (int, opcional, padrão 20000) — O tamanho de cada bloco de atenção.
  • speech_encoder_left_chunk_num (int, opcional, padrão 128) — Número de blocos à esquerda até onde o lookahead é permitido.
  • t2u_bos_token_id (int, opcional, padrão 0) — O id do token de unidade beginning-of-stream. Aplicado apenas ao modelo seq2seq de texto para unidade.
  • t2u_pad_token_id (int, opcional, padrão 1) — O id do token de unidade de padding. Aplicado apenas ao modelo seq2seq de texto para unidade.
  • t2u_eos_token_id (int, opcional, padrão 2) — O id do token de unidade end-of-stream. Aplicado apenas ao modelo seq2seq de texto para unidade.
  • t2u_encoder_layers (int, opcional, padrão 6) — Número de camadas ocultas no codificador de texto para unidades do Transformer.
  • t2u_encoder_ffn_dim (int, opcional, padrão 8192) — Dimensão da camada “intermediária” (ou seja, feed-forward) no codificador de texto para unidades do Transformer.
  • t2u_encoder_attention_heads (int, opcional, padrão 16) — Número de cabeças de atenção para cada camada de atenção no codificador de texto para unidade do Transformer.
  • t2u_decoder_layers (int, opcional, padrão 6) — Número de camadas ocultas no decodificador text-to-unit do Transformer.
  • t2u_decoder_ffn_dim (int, opcional, padrão 8192) — Dimensão da camada “intermediária” (ou seja, feed-forward) no decodificador text-to-unit do Transformer.
  • t2u_decoder_attention_heads (int, opcional, padrão 16) — Número de cabeças de atenção para cada camada de atenção no decodificador de texto para unidade do Transformer.
  • t2u_max_position_embeddings (int, opcional, padrão 4096) — O comprimento máximo de sequência com o qual o componente text-to-unit deste modelo pode ser utilizado. Normalmente, defina este valor para algo grande, apenas por precaução (por exemplo, 512, 1024 ou 2048).
  • t2u_variance_predictor_embed_dim (int, opcional, padrão 1024) — A dimensão de projeção do preditor de duração do text-to-unit.
  • t2u_variance_predictor_hidden_dim (int, opcional, padrão 256) — Dimensão interna do preditor de duração do text-to-unit.
  • t2u_variance_predictor_kernel_size (int, opcional, padrão 3) — Tamanho do kernel das camadas convolucionais do preditor de duração do text-to-unit.
  • t2u_variance_pred_dropout (float, opcional, padrão 0.5) — A probabilidade de dropout do preditor de duração do text-to-unit.
  • sampling_rate (int, opcional, padrão 16000) — A taxa de amostragem na qual os arquivos de áudio devem ser digitalizados, expressa em hertz (Hz).
  • upsample_initial_channel (int, opcional, padrão 512) — O número de canais de entrada da rede de upsampling do hifi-gan. Aplica-se apenas ao vocoder.
  • upsample_rates (tuple[int] ou list[int], opcional, padrão [5, 4, 4, 2, 2]) — Uma tupla de inteiros que define o stride de cada camada de convolução 1D na rede de upsampling do vocoder. O comprimento de upsample_rates define o número de camadas de convolução e deve corresponder ao comprimento de upsample_kernel_sizes. Aplica-se apenas ao vocoder.
  • upsample_kernel_sizes (tuple[int] ou list[int], opcional, padrão [11, 8, 8, 4, 4]) — Uma tupla de inteiros que define o tamanho do kernel de cada camada de convolução 1D na rede de upsampling do vocoder. O comprimento de upsample_kernel_sizes define o número de camadas de convolução e deve corresponder ao comprimento de upsample_rates. Aplica-se apenas ao vocoder.
  • resblock_kernel_sizes (tuple[int] ou list[int], opcional, padrão [3, 7, 11]) — Uma tupla de inteiros que define os tamanhos dos kernels das camadas convolucionais 1D do vocoder no módulo de fusão de múltiplos campos receptivos (MRF). Aplica-se apenas ao vocoder.
  • resblock_dilation_sizes (tuple[tuple[int]] ou list[list[int]], opcional, padrão [[1, 3, 5], [1, 3, 5], [1, 3, 5]]) — Uma tupla aninhada de inteiros que define as taxas de dilatação das camadas convolucionais 1D dilataadas do vocoder no módulo de fusão de múltiplos campos receptivos (MRF). Aplica-se apenas ao vocoder.
  • leaky_relu_slope (float, opcional, padrão 0.1) — O ângulo da inclinação negativa usado pela ativação leaky ReLU no vocoder. Aplica-se apenas ao vocoder.
  • unit_hifi_gan_vocab_size (int, opcional, padrão 10000) — Tamanho do vocabulário do vocoder do SeamlessM4Tv2. Define o número de tokens de unidade diferentes que podem ser representados pelos inputs_ids passados ao chamar o vocoder de ~SeamlessM4Tv2Model, ~SeamlessM4Tv2ForSpeechToSpeech ou ~SeamlessM4Tv2ForTextToSpeech.
  • unit_embed_dim (int, opcional, padrão 1280) — A dimensão de projeção dos ids de entrada fornecidos ao vocoder hifi-gan. Aplica-se apenas ao vocoder.
  • lang_embed_dim (int, opcional, padrão 256) — A dimensão de projeção do idioma de destino fornecida ao vocoder hifi-gan. Aplica-se apenas ao vocoder.
  • spkr_embed_dim (int, opcional, padrão 256) — A dimensão de projeção do id do falante fornecida ao vocoder hifi-gan. Aplica-se apenas ao vocoder.
  • vocoder_num_langs (int, opcional, padrão 36) — Número de idiomas suportados pelo vocoder. Pode ser diferente de t2u_num_langs.
  • vocoder_num_spkrs (int, opcional, padrão 200) — Número de falantes suportados pelo vocoder.
  • variance_predictor_kernel_size (int, opcional, padrão 3) — Tamanho do kernel do preditor de duração. Aplica-se apenas ao vocoder.
  • var_pred_dropout (float, opcional, padrão 0.5) — A probabilidade de dropout do preditor de duração. Aplica-se apenas ao vocoder.
  • vocoder_offset (int, opcional, padrão 4) — Desloca os ids dos tokens de unidade por este número para levar em conta os tokens de símbolo. Aplica-se apenas ao vocoder.
  • tie_word_embeddings (bool, opcional, padrão True) — Se deve vincular as embeddings de pesos de acordo com o mapeamento tied_weights_keys do modelo.

Esta é a classe de configuração para armazenar a configuração de um SeamlessM4Tv2Model. Ela é usada para instanciar um modelo Seamless M4T V2 de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do facebook/hf-seamless-m4t-medium

Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.

>>> from transformers import SeamlessM4Tv2Model, SeamlessM4Tv2Config

>>> # Initializing a SeamlessM4Tv2 "" style configuration
>>> configuration = SeamlessM4Tv2Config()

>>> # Initializing a model from the "" style configuration
>>> model = SeamlessM4Tv2Model(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
Update on GitHub