Transformers documentation
SeamlessM4T-v2
Este modelo foi publicado em HF papers em 2023-12-08 e contribuído para Hugging Face Transformers em 2023-11-30.
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
< source >( 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
< source >( 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.LongTensorde 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.
- input_features (
torch.Tensorde 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) — SeTrue, também retorna o texto gerado intermediário e os tokens de unidade. Defina comoTruese você também quiser obter o texto traduzido junto com o áudio. Observe que, segenerate_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 queconfig.vocoder_num_spkrs. - generate_speech (
bool, opcional, padrãoTrue) — SeFalse, 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
**kwargspara o métodogeneratede cada submodelo, excetodecoder_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
generatedo 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.
- Sem um prefixo, eles serão inseridos como
Retorna
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor], ModelOutput]
- Se
generate_speechereturn_intermediate_token_ids, retornaSeamlessM4Tv2GenerationOutput. - Se
generate_speeche nãoreturn_intermediate_token_ids, retorna uma tupla composta por formas de onda de forma(batch_size, sequence_length)ewaveform_lengths, que fornece o comprimento de cada amostra. - Se
generate_speech=False, ele retornaModelOutput.
Gera ids de tokens traduzidos e/ou formas de onda de áudio traduzidas.
Este método chama sucessivamente a função
.generatede 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
< source >( 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
< source >( 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.LongTensorde 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.
- return_intermediate_token_ids (
bool, opcional) — SeTrue, também retorna o texto gerado intermediário e os tokens de unidade. Defina comoTruese 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 queconfig.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
**kwargspara o métodogeneratede cada submodelo, excetodecoder_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
generatedo 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.
- Sem um prefixo, eles serão inseridos como
Retorna
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
- Se
return_intermediate_token_ids, retornaSeamlessM4Tv2GenerationOutput. - Se
return_intermediate_token_idsnão for definido, retorna uma tupla composta por formas de onda de forma(batch_size, sequence_length)ewaveform_lengths, que fornece o comprimento de cada amostra.
Gera formas de onda de áudio traduzidas.
Este método chama sucessivamente a função
.generatede 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
< source >( 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
< source >( 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.Tensorde 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) — SeTrue, também retorna o texto gerado intermediário e os tokens de unidade. Defina comoTruese 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 queconfig.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
**kwargspara o métodogeneratede cada submodelo, excetodecoder_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
generatedo 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.
- Sem um prefixo, eles serão inseridos como
Retorna
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
- Se
return_intermediate_token_ids, retornaSeamlessM4Tv2GenerationOutput. - Se
return_intermediate_token_idsnão for definido, retorna uma tupla composta por formas de onda de forma(batch_size, sequence_length)ewaveform_lengths, que fornece o comprimento de cada amostra.
Gera formas de onda de áudio traduzidas.
Este método chama sucessivamente a função
.generatede 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
< source >( 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
< source >( 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.LongTensorde 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.
- attention_mask (
torch.Tensorde 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.
- decoder_input_ids (
torch.LongTensorde 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_idcomo o token inicial para a geração dedecoder_input_ids. Sepast_key_valuesfor usado, opcionalmente apenas o últimodecoder_input_idsprecisa ser inserido (vejapast_key_values).Para o treinamento de tradução e sumarização,
decoder_input_idsdeve ser fornecido. Se nenhumdecoder_input_idsfor fornecido, o modelo criará esse tensor deslocando oinput_idspara a direita para o pré-treinamento de desruido, conforme o artigo. - decoder_attention_mask (
torch.LongTensorde forma(batch_size, target_sequence_length), opcional) — Comportamento padrão: gerar um tensor que ignora tokens de padding emdecoder_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_maske 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_statede 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 nopast_key_valuesretornado pelo modelo em uma etapa anterior da decodificação, quandouse_cache=Trueouconfig.use_cache=True.Apenas uma instância de Cache é permitida como entrada, consulte nosso guia de cache de kv. Se nenhum
past_key_valuesfor passado, DynamicCache será inicializado por padrão.O modelo sairá no mesmo formato de cache que é fornecido como entrada.
Se
past_key_valuesforem usados, espera-se que o usuário insira apenas osinput_idsnã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 osinput_idscom a forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passarinput_idsvocê pode escolher passar diretamente uma representação incorporada. Isso é útil se você quiser mais controle sobre como converterinput_idsíndices em vetores associados do que a matriz de busca de incorporação interna do modelo.labels (
torch.LongTensorde 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 deinput_ids). Tokens com índices definidos como-100são ignorados (mascarados); a perda é calculada apenas para os tokens com rótulos em[0, ..., config.vocab_size] - decoder_inputs_embeds (
torch.Tensorde forma(batch_size, target_sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passardecoder_input_idsvocê pode escolher passar diretamente uma representação incorporada. Sepast_key_valuesfor usado, opcionalmente apenas o últimodecoder_inputs_embedsprecisa ser entrada (vejapast_key_values). Isso é útil se você quiser mais controle sobre como converterdecoder_input_idsíndices em vetores associados do que a matriz de busca de incorporação interna do modelo.Se
decoder_input_idsedecoder_inputs_embedsestiverem ambos não definidos,decoder_inputs_embedsassume o valor deinputs_embeds. - labels (
torch.LongTensorde 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 deinput_ids). Tokens com índices definidos como-100são ignorados (mascarados); a perda é calculada apenas para os tokens com rótulos em[0, ..., config.vocab_size]. - use_cache (
bool, opcional) — Se definido comoTrue, os estados de chave-valorpast_key_valuessão retornados e podem ser usados para acelerar a decodificação (vejapast_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
Moduleem 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.Tensorde forma(1,), opcional, retornado quandolabelsé fornecido) — Perda de modelagem de linguagem.logits (
torch.Tensorde 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 quandouse_cache=Trueé passado ou quandoconfig.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 quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.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 quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.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 quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.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.Tensorde 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 quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.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 quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.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
< source >( 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.Tensorde 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.
- 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**kwargspassados para generate que correspondam aos atributos degeneration_configos sobrescreverão. Segeneration_confignão for fornecido, o padrão será usado, que tem a seguinte prioridade de carregamento: 1) do arquivo de modelogeneration_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 lotebatch_ideinput_ids. Ela deve retornar uma lista com os tokens permitidos para a próxima etapa de geração, condicionada ao ID do lotebatch_ide aos tokens gerados anteriormenteinputs_ids. Este argumento é útil para geração condicionada ao prefixo, conforme descrito em Autoregressive Entity Retrieval. - synced_gpus (
bool, opcional, padrãoFalse) — Se deve continuar executando o loop while até max_length (necessário para evitar deadlocks comFullyShardedDataParallele DeepSpeed ZeRO Stage 3). - kwargs (
dict[str, Any], opcional) — Parametrização ad hoc degenerate_confige/ou kwargs específicos do modelo adicionais que serão encaminhados para a funçãoforwarddo 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 qualquergeneration_configpassando 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
< source >( 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
< source >( 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.Tensorde 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.Tensorde 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.
- decoder_input_ids (
torch.LongTensorde 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_idcomo o token inicial para a geração dedecoder_input_ids. Sepast_key_valuesfor usado, opcionalmente apenas o últimodecoder_input_idsprecisa ser inserido (vejapast_key_values).Para o treinamento de tradução e sumarização,
decoder_input_idsdeve ser fornecido. Se nenhumdecoder_input_idsfor fornecido, o modelo criará esse tensor deslocando oinput_idspara a direita para o pré-treinamento de desruido, conforme o artigo. - decoder_attention_mask (
torch.LongTensorde forma(batch_size, target_sequence_length), opcional) — Comportamento padrão: gerar um tensor que ignora tokens de padding emdecoder_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_maske 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_statede 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 nopast_key_valuesretornado pelo modelo em uma etapa anterior da decodificação, quandouse_cache=Trueouconfig.use_cache=True.Apenas uma instância de Cache é permitida como entrada, consulte nosso guia de cache de kv. Se nenhum
past_key_valuesfor passado, DynamicCache será inicializado por padrão.O modelo sairá no mesmo formato de cache que é fornecido como entrada.
Se
past_key_valuesforem usados, espera-se que o usuário insira apenas osinput_idsnã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 osinput_idscom a forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passarinput_idsvocê pode escolher passar diretamente uma representação incorporada. Isso é útil se você quiser mais controle sobre como converterinput_idsíndices em vetores associados do que a matriz de busca de incorporação interna do modelo.labels (
torch.LongTensorde 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 deinput_ids). Tokens com índices definidos como-100são ignorados (mascarados); a perda é calculada apenas para os tokens com rótulos em[0, ..., config.vocab_size] - decoder_inputs_embeds (
torch.Tensorde forma(batch_size, target_sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passardecoder_input_idsvocê pode escolher passar diretamente uma representação incorporada. Sepast_key_valuesfor usado, opcionalmente apenas o últimodecoder_inputs_embedsprecisa ser entrada (vejapast_key_values). Isso é útil se você quiser mais controle sobre como converterdecoder_input_idsíndices em vetores associados do que a matriz de busca de incorporação interna do modelo.Se
decoder_input_idsedecoder_inputs_embedsestiverem ambos não definidos,decoder_inputs_embedsassume o valor deinputs_embeds. - labels (
torch.LongTensorde 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 deinput_ids). Tokens com índices definidos como-100são ignorados (mascarados); a perda é calculada apenas para os tokens com rótulos em[0, ..., config.vocab_size]. - use_cache (
bool, opcional) — Se definido comoTrue, os estados de chave-valorpast_key_valuessão retornados e podem ser usados para acelerar a decodificação (vejapast_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
Moduleem 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.Tensorde forma(1,), opcional, retornado quandolabelsé fornecido) — Perda de modelagem de linguagem.logits (
torch.Tensorde 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 quandouse_cache=Trueé passado ou quandoconfig.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 quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.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 quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.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 quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.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.Tensorde 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 quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.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 quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.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
< source >( 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.Tensorde 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**kwargspassados para generate que correspondam aos atributos degeneration_configos sobrescreverão. Segeneration_confignão for fornecido, o padrão será usado, que tem a seguinte prioridade de carregamento: 1) do arquivo de modelogeneration_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 lotebatch_ideinput_ids. Ela deve retornar uma lista com os tokens permitidos para a próxima etapa de geração, condicionada ao ID do lotebatch_ide aos tokens gerados anteriormenteinputs_ids. Este argumento é útil para geração condicionada ao prefixo, conforme descrito em Autoregressive Entity Retrieval. - synced_gpus (
bool, opcional, padrãoFalse) — Se deve continuar executando o loop while até max_length (necessário para evitar deadlocks comFullyShardedDataParallele DeepSpeed ZeRO Stage 3). - kwargs (
dict[str, Any], opcional) — Parametrização ad hoc degenerate_confige/ou kwargs específicos do modelo adicionais que serão encaminhados para a funçãoforwarddo 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 qualquergeneration_configpassando 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
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool = 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ãoTrue) — Indica se o modelo é usado como encoder/decoder ou não. - vocab_size (
int, opcional, padrão256102) — Tamanho do vocabulário do modelo. Define o número de tokens diferentes que podem ser representados pelosinput_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 pelosinputs_idspassados 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 peloschar_inputs_idspassados ao chamar o submodelo Text-To-Units de ~SeamlessM4Tv2Model, ~SeamlessM4Tv2ForSpeechToSpeech ou ~SeamlessM4Tv2ForTextToSpeech. - hidden_size (
int, opcional, padrão1024) — Dimensão das representações ocultas. - initializer_range (
float, opcional, padrão0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos. - layer_norm_eps (
float, opcional, padrão1e-05) — O epsilon usado pelas camadas de normalização de camada. - use_cache (
bool, opcional, padrãoTrue) — Se o modelo deve ou não retornar as últimas chaves/valores de atenção (não usado por todos os modelos). Relevante apenas seconfig.is_decoder=Trueou quando o modelo for um modelo generativo somente decodificador. - max_position_embeddings (
int, opcional, padrão4096) — O comprimento máximo de sequência com o qual este modelo pode ser utilizado. - encoder_layerdrop (
Union[float, int], opcional, padrão0.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ão0.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ãorelu) — 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ão0.1) — A proporção para todas as camadas de dropout. - attention_dropout (
Union[float, int], opcional, padrão0.1) — A taxa de dropout para as probabilidades de atenção. - activation_dropout (
Union[float, int], opcional, padrão0.0) — A taxa de dropout para as ativações dentro da camada totalmente conectada. - scale_embedding (
bool, opcional, padrãoTrue) — Se as embeddings devem ser escalonadas dividindo por sqrt(d_model). - encoder_layers (
int, opcional, padrão24) — Número de camadas ocultas no codificador do Transformer. Usará o mesmo valor denum_layersse não for definido. - encoder_ffn_dim (
int, opcional, padrão8192) — Dimensão da camada “intermediária” (frequentemente chamada de feed-forward) no encoder. - encoder_attention_heads (
int, opcional, padrão16) — Número de cabeças de atenção para cada camada de atenção no codificador do Transformer. - decoder_layers (
int, opcional, padrão24) — Número de camadas ocultas no decodificador do Transformer. Se não for definido, usará o mesmo valor denum_layers. - decoder_ffn_dim (
int, opcional, padrão8192) — Dimensão da camada “intermediária” (frequentemente chamada de feed-forward) no decoder. - decoder_attention_heads (
int, opcional, padrão16) — 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ão3) — Se um modelo encoder-decoder inicia a decodificação com um token diferente debos, 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ão0) — ID do token usado para preenchimento no vocabulário. - bos_token_id (
int, opcional, padrão2) — ID do token usado para o início do fluxo no vocabulário. - eos_token_id (
Union[int, list[int]], opcional, padrão3) — 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 (
stroufunction, 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ãoTrue) — 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 seadd_adapter is True. - adaptor_stride (
int, opcional, padrão 8) — Passo das camadas convolucionais na rede adaptadora. Relevante apenas seadd_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 seadd_adapter is True. - position_embeddings_type (
str, opcional, padrão"relative_key") — Pode ser especificado comorelative_key. Se mantido comoNone, 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ão16000) — 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]oulist[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]oulist[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]oulist[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]]oulist[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 pelosinputs_idspassados 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 det2u_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ãoTrue) — Se deve vincular as embeddings de pesos de acordo com o mapeamentotied_weights_keysdo 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