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.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Este modelo se publicó en HF papers el 2023-12-08 y se contribuyó a Hugging Face Transformers el 2023-11-30.

SDPA

SeamlessM4T-v2

Resumen

El modelo SeamlessM4T-v2 fue propuesto en Seamless: Multilingual Expressive and Streaming Speech Translation por el equipo de Comunicación Sin Barreras de Meta AI.

SeamlessM4T-v2 es una colección de modelos diseñados para ofrecer traducciones de alta calidad, lo que permite a las personas de diferentes comunidades lingüísticas comunicarse sin esfuerzo a través del habla y el texto. Es una mejora sobre la versión anterior. Para más detalles sobre las diferencias entre v1 y v2, consulte la sección Diferencia con SeamlessM4T-v1.

SeamlessM4T-v2 permite realizar múltiples tareas sin depender de modelos separados:

  • Traducción de voz a voz (S2ST)
  • Traducción de voz a texto (S2TT)
  • Traducción de texto a voz (T2ST)
  • Traducción de texto a texto (T2TT)
  • Reconocimiento automático del habla (ASR)

SeamlessM4Tv2Model puede realizar todas las tareas anteriores, pero cada tarea también tiene su propio submodelo dedicado.

El resumen del artículo es el siguiente:

Los avances recientes en la traducción automática del habla han ampliado drásticamente la cobertura de idiomas, mejorado las capacidades multimodales y habilitado una amplia gama de tareas y funcionalidades. Dicho esto, los sistemas de traducción automática del habla a gran escala de hoy en día carecen de funciones clave que ayudan a que la comunicación mediada por máquinas se sienta fluida en comparación con el diálogo entre humanos. En este trabajo, presentamos una familia de modelos que permiten traducciones expresivas y multilingües de extremo a extremo de forma en streaming. En primer lugar, contribuimos con una versión mejorada del modelo masivamente multilingüe y multimodal SeamlessM4T: SeamlessM4T v2. Este nuevo modelo, que incorpora un marco UnitY2 actualizado, se entrenó con más datos de idiomas con recursos limitados. La versión ampliada de SeamlessAlign añade 114.800 horas de datos alineados automáticamente para un total de 76 idiomas. SeamlessM4T v2 proporciona la base sobre la que se inician nuestros dos modelos más nuevos, SeamlessExpressive y SeamlessStreaming. SeamlessExpressive permite una traducción que preserva los estilos vocales y la prosodia. En comparación con esfuerzos anteriores en la investigación del habla expresiva, nuestro trabajo aborda ciertos aspectos de la prosodia poco explorados, como la velocidad del habla y las pausas, al tiempo que preserva el estilo de la voz de la persona. En cuanto a SeamlessStreaming, nuestro modelo aprovecha el mecanismo Efficient Monotonic Multihead Attention (EMMA) para generar traducciones de destino de baja latencia sin esperar a las enunciaciones de origen completas. Como el primero de su tipo, SeamlessStreaming permite la traducción simultánea de habla a habla/texto para múltiples idiomas de origen y destino. Para comprender el rendimiento de estos modelos, combinamos versiones novedosas y modificadas de métricas automáticas existentes para evaluar la prosodia, la latencia y la robustez. Para las evaluaciones humanas, adaptamos protocolos existentes diseñados para medir los atributos más relevantes en la preservación del significado, la naturalidad y la expresividad. Para garantizar que nuestros modelos se utilicen de forma segura y responsable, implementamos el primer esfuerzo de red-teaming conocido para la traducción automática multimodal, un sistema para la detección y mitigación de la toxicidad añadida, una evaluación sistemática del sesgo de género y un mecanismo de marca de agua localizada e inaudible diseñado para atenuar el impacto de los deepfakes. En consecuencia, reunimos los componentes principales de SeamlessExpressive y SeamlessStreaming para formar Seamless, el primer sistema disponible públicamente que desbloquea la comunicación expresiva entre idiomas en tiempo real. En resumen, Seamless nos ofrece una mirada clave a la base técnica necesaria para convertir el Traductor Universal del Habla de un concepto de ciencia ficción en una tecnología del mundo real. Finalmente, las contribuciones de este trabajo, incluidos los modelos, el código y un detector de marcas de agua, se publican y están disponibles en el enlace siguiente.

Uso

En el siguiente ejemplo, cargaremos una muestra de audio en árabe y una muestra de texto en inglés y las convertiremos en voz en ruso y texto en francés.

Primero, cargue el procesador y un punto de control del 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")

Puede utilizar este modelo de forma fluida con texto o con audio, para generar texto traducido o audio traducido.

Así es como se usa el procesador para procesar texto y audio:

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

Speech

SeamlessM4Tv2Model puede generar texto o voz sin problemas con pocos o ningún cambio. Vamos a apuntar a la traducción de voz al ruso:

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

Con prácticamente el mismo código, he traducido texto en inglés y audio en árabe a muestras de audio en ruso.

Texto

De manera similar, puedes generar texto traducido a partir de archivos de audio o de texto con el mismo modelo. Solo tienes que pasar generate_speech=False a SeamlessM4Tv2Model.generate(). Esta vez, traduzcamos al 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)

Consejos

1. Use modelos dedicados

SeamlessM4Tv2Model es el modelo de nivel superior de transformers para generar voz y texto, pero también puedes usar modelos dedicados que realizan la tarea sin componentes adicionales, reduciendo así la huella de memoria. Por ejemplo, puedes reemplazar el fragmento de código de generación de audio a audio con el modelo dedicado a la tarea S2ST; el resto es exactamente el mismo código:

from transformers import SeamlessM4Tv2ForSpeechToSpeech


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

O bien, puede reemplazar el fragmento de generación de texto a texto con el modelo dedicado a la tarea T2TT; solo tiene que eliminar generate_speech=False.

from transformers import SeamlessM4Tv2ForTextToText


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

Puede probar también SeamlessM4Tv2ForSpeechToText y SeamlessM4Tv2ForTextToSpeech.

2. Cambiar la identidad del hablante

Puedes cambiar el orador utilizado para la síntesis de voz con el argumento speaker_id. Algunos speaker_id funcionan mejor que otros para ciertos idiomas.

3. Cambiar la estrategia de generación

Puede utilizar diferentes estrategias de generación para la generación de texto, por ejemplo .generate(input_ids=input_ids, text_num_beams=4, text_do_sample=True), que realizará una decodificación de búsqueda por haces multinomial en el modelo de texto. Tenga en cuenta que la generación de voz solo admite la búsqueda codiciosa - por defecto - o la muestreo multinomial, que se puede utilizar con, por ejemplo, .generate(..., speech_do_sample=True, speech_temperature=0.6).

4. Generar voz y texto al mismo tiempo

Usa return_intermediate_token_ids=True con SeamlessM4Tv2Model para devolver tanto el habla como el texto.

Arquitectura del modelo

SeamlessM4T-v2 cuenta con una arquitectura versátil que gestiona de forma fluida la generación secuencial de texto y voz. Esta configuración comprende dos modelos de secuencia a secuencia (seq2seq). El primer modelo traduce la modalidad de entrada a texto traducido, mientras que el segundo modelo genera tokens de voz, conocidos como “unit tokens”, a partir del texto traducido.

Cada modalidad tiene su propio codificador dedicado con una arquitectura única. Además, para la salida de voz, se coloca un vocoder inspirado en la arquitectura HiFi-GAN sobre el segundo modelo seq2seq.

Diferencia con SeamlessM4T-v1

La arquitectura de esta nueva versión difiere de la primera en algunos aspectos:

Mejoras en el modelo de la segunda pasada

El segundo modelo seq2seq, denominado modelo de texto a unidades, ahora es no autoregresivo, lo que significa que calcula las unidades en un paso de propagación hacia adelante único. Este logro se hace posible gracias a:

  • el uso de incrustaciones a nivel de carácter, lo que significa que cada carácter del texto traducido predicho tiene sus propias incrustaciones, que luego se utilizan para predecir los tokens de unidad.
  • el uso de un predictor de duración intermedio, que predice la duración del habla a nivel de carácter en el texto traducido predicho.
  • el uso de un nuevo decodificador de texto a unidades que combina convoluciones y autoatención para manejar contextos más largos.

Diferencia en el codificador de voz

El codificador de voz, que se utiliza durante el proceso de generación de la primera pasada para predecir el texto traducido, difiere principalmente del codificador de voz anterior a través de estos mecanismos:

  • el uso de una máscara de atención por bloques para evitar la atención entre bloques, garantizando que cada posición atienda solo a posiciones dentro de su propio bloque y a un número fijo de bloques anteriores.
  • el uso de incrustaciones de posición relativa, que solo considera la distancia entre los elementos de la secuencia en lugar de las posiciones absolutas. Consulte Self-Attention with Relative Position Representations (Shaw et al.) para más detalles.
  • el uso de una convolución causal por profundidad en lugar de una no causal.

Proceso de generación

Así funciona el proceso de generación:

  • El texto o el habla de entrada se procesan a través de su codificador específico.
  • Un decodificador crea tokens de texto en el idioma deseado.
  • Si se requiere la generación de voz, el segundo modelo seq2seq genera tokens de unidad de manera no autorregresiva.
  • Estos tokens de unidad se pasan luego a través del vocoder final para producir el habla real.

Este modelo fue aportado por ylacombe. El código original se puede encontrar aquí.

SeamlessM4Tv2Model

clase transformers.SeamlessM4Tv2Model

< >

( config: SeamlessM4Tv2Configcurrent_modality = 'text' )

Parámetros

  • config (SeamlessM4Tv2Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
  • current_modality (str, opcional, valor predeterminado "text") — Modalidad predeterminada. Se utiliza para inicializar el modelo.

El transformer del modelo original SeamlessM4Tv2, que puede utilizarse para todas las tareas disponibles (S2ST, S2TT, T2TT, T2ST).

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

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 de los tokens de la secuencia de entrada en el vocabulario.

    Los índices se pueden obtener usando SeamlessM4TTokenizer o SeamlessM4TProcessor. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.

    ¿Qué son los IDs de entrada?

  • input_features (torch.Tensor de forma (batch_size, sequence_length, num_banks), opcional) — Características de audio de entrada. Esto debe ser devuelto por la clase SeamlessM4TFeatureExtractor o la clase SeamlessM4TProcessor. Consulte SeamlessM4TFeatureExtractor.call() para más detalles.
  • return_intermediate_token_ids (bool, opcional) — Si es True, también devuelve el texto generado intermedio y los tokens de unidad. Establece True si también deseas obtener el texto traducido junto con el audio. Ten en cuenta que si generate_speech=False, este parámetro se ignorará y se devolverán los tokens de texto.
  • tgt_lang (str, opcional) — El idioma que se usará como idioma de destino para la traducción.
  • speaker_id (int, opcional, valor predeterminado 0) — El identificador del orador utilizado para la síntesis de voz. Debe ser menor que config.vocoder_num_spkrs.
  • generate_speech (bool, opcional, valor predeterminado True) — Si es False, solo devuelve los tokens de texto y no genera el habla.
  • kwargs (opcional) — Diccionario restante de argumentos de palabra clave que se pasará a GenerationMixin.generate(). Los argumentos de palabra clave son de dos tipos:
    • Sin un prefijo, se introducirán como **kwargs para el método generate de cada submodelo, excepto decoder_input_ids, que solo se pasará a través de los componentes de texto.
    • Con un prefijo text_ o speech_, se utilizarán como entrada para el método generate del modelo de texto y del modelo de voz, respectivamente. Tienen prioridad sobre las palabras clave sin prefijo.

    Esto significa que, por ejemplo, puede especificar una estrategia de generación para una generación pero no para la otra.

Devuelve

Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor], ModelOutput]

  • Si generate_speech y return_intermediate_token_ids, devuelve SeamlessM4Tv2GenerationOutput.
  • Si generate_speech y no return_intermediate_token_ids, devuelve una tupla compuesta por formas de onda de forma (batch_size, sequence_length) y waveform_lengths, que indica la longitud de cada muestra.
  • Si generate_speech=False, devuelve ModelOutput.

Genera ids de tokens traducidos y/o formas de onda de audio traducidas.

Este método llama sucesivamente a la función .generate de dos submodelos diferentes. Puede especificar argumentos de palabra clave en dos niveles distintos: argumentos generales que se pasarán a ambos modelos, o argumentos con prefijo que se pasarán a uno de ellos.

Por ejemplo, llamar a .generate(input_ids=input_ids, num_beams=4, speech_do_sample=True) realizará sucesivamente la decodificación por búsqueda de haces en el modelo de texto y el muestreo por búsqueda de haces multinomial en el modelo de voz.

Para obtener una visión general de las estrategias de generación y ejemplos de código, consulte la siguiente guía.

SeamlessM4Tv2ForTextToSpeech

clase transformers.SeamlessM4Tv2ForTextToSpeech

< >

( config: SeamlessM4Tv2Config )

Parámetros

  • config (SeamlessM4Tv2Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.

El modelo transformer de texto a voz SeamlessM4Tv2, que puede usarse para T2ST.

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

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 de los tokens de la secuencia de entrada en el vocabulario.

    Los índices se pueden obtener usando SeamlessM4TTokenizer o SeamlessM4TProcessor. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.

    ¿Qué son los IDs de entrada?

  • return_intermediate_token_ids (bool, opcional) — Si es True, también devuelve el texto generado intermedio y los tokens de unidad. Establece True si también deseas obtener el texto traducido junto con el audio.
  • tgt_lang (str, opcional) — El idioma que se usará como idioma de destino para la traducción.
  • speaker_id (int, opcional, valor predeterminado 0) — El identificador del orador utilizado para la síntesis de voz. Debe ser menor que config.vocoder_num_spkrs.
  • kwargs (opcional) — Diccionario restante de argumentos de palabra clave que se pasará a GenerationMixin.generate(). Los argumentos de palabra clave son de dos tipos:
    • Sin un prefijo, se introducirán como **kwargs para el método generate de cada submodelo, excepto decoder_input_ids, que solo se pasará a través de los componentes de texto.
    • Con un prefijo text_ o speech_, se utilizarán como entrada para el método generate del modelo de texto y del modelo de voz, respectivamente. Tienen prioridad sobre las palabras clave sin prefijo.

    Esto significa que, por ejemplo, puede especificar una estrategia de generación para una generación pero no para la otra.

Devuelve

Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]

  • Si return_intermediate_token_ids, devuelve SeamlessM4Tv2GenerationOutput.
  • Si no return_intermediate_token_ids, devuelve una tupla compuesta por formas de onda de forma (batch_size, sequence_length) y waveform_lengths, que indica la longitud de cada muestra.

Genera formas de onda de audio traducidas.

Este método llama sucesivamente a la función .generate de dos submodelos diferentes. Puede especificar argumentos de palabra clave en dos niveles distintos: argumentos generales que se pasarán a ambos modelos, o argumentos con prefijo que se pasarán a uno de ellos.

Por ejemplo, llamar a .generate(input_ids, num_beams=4, speech_do_sample=True) ejecutará sucesivamente la decodificación por búsqueda de haces en el modelo de texto y el muestreo por búsqueda de haces multinomial en el modelo de voz.

Para obtener una visión general de las estrategias de generación y ejemplos de código, consulte la siguiente guía.

SeamlessM4Tv2ForSpeechToSpeech

clase transformers.SeamlessM4Tv2ForSpeechToSpeech

< >

( config: SeamlessM4Tv2Config )

Parámetros

  • config (SeamlessM4Tv2Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.

El transformer del modelo de voz a voz SeamlessM4Tv2, que puede utilizarse para S2ST.

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

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)) — Características de audio de entrada. Esto debe ser devuelto por la clase SeamlessM4TFeatureExtractor o la clase SeamlessM4TProcessor. Consulte SeamlessM4TFeatureExtractor.call() para más detalles.
  • return_intermediate_token_ids (bool, opcional) — Si es True, también devuelve el texto generado intermedio y los tokens de unidad. Establece True si también deseas obtener el texto traducido junto con el audio.
  • tgt_lang (str, opcional) — El idioma que se usará como idioma de destino para la traducción.
  • speaker_id (int, opcional, valor predeterminado 0) — El identificador del orador utilizado para la síntesis de voz. Debe ser menor que config.vocoder_num_spkrs.
  • kwargs (opcional) — Diccionario restante de argumentos de palabra clave que se pasará a GenerationMixin.generate(). Los argumentos de palabra clave son de dos tipos:
    • Sin un prefijo, se introducirán como **kwargs para el método generate de cada submodelo, excepto decoder_input_ids, que solo se pasará a través de los componentes de texto.
    • Con un prefijo text_ o speech_, se utilizarán como entrada para el método generate del modelo de texto y del modelo de voz, respectivamente. Tienen prioridad sobre las palabras clave sin prefijo.

    Esto significa que, por ejemplo, puede especificar una estrategia de generación para una generación pero no para la otra.

Devuelve

Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]

  • Si return_intermediate_token_ids, devuelve SeamlessM4Tv2GenerationOutput.
  • Si no return_intermediate_token_ids, devuelve una tupla compuesta por formas de onda de forma (batch_size, sequence_length) y waveform_lengths, que indica la longitud de cada muestra.

Genera formas de onda de audio traducidas.

Este método llama sucesivamente a la función .generate de dos submodelos diferentes. Puede especificar argumentos de palabra clave en dos niveles distintos: argumentos generales que se pasarán a ambos modelos, o argumentos con prefijo que se pasarán a uno de ellos.

Por ejemplo, llamar a .generate(input_features, num_beams=4, speech_do_sample=True) ejecutará sucesivamente la decodificación por búsqueda de haces en el modelo de texto y el muestreo por búsqueda de haces multinomial en el modelo de voz.

Para obtener una visión general de las estrategias de generación y ejemplos de código, consulte la siguiente guía.

SeamlessM4Tv2ForTextToText

clase transformers.SeamlessM4Tv2ForTextToText

< >

( config: SeamlessM4Tv2Config )

Parámetros

  • config (SeamlessM4Tv2Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.

El transformer del modelo de texto a texto SeamlessM4Tv2, que puede utilizarse para T2TT.

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

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 de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.

    Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.

    ¿Qué son los IDs de entrada?

  • attention_mask (torch.Tensor de forma (batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en [0, 1]:
    • 1 para los tokens que no están enmascarados,
    • 0 para los tokens que están enmascarados.

    ¿Qué son las máscaras de atención?

  • decoder_input_ids (torch.LongTensor de forma (batch_size, target_sequence_length), opcional) — Índices de los tokens de la secuencia de entrada del decodificador en el vocabulario. Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles. ¿Qué son los IDs de entrada del decodificador? Bart usa eos_token_id como token inicial para la generación de decoder_input_ids. Si se usa past_key_values, opcionalmente solo se deben ingresar los últimos decoder_input_ids (consulte past_key_values). Para el entrenamiento de traducción y resumen, se deben proporcionar decoder_input_ids. Si no se proporcionan decoder_input_ids, el modelo creará este tensor desplazando input_ids hacia la derecha para el preentrenamiento de desruido, siguiendo el artículo.

    Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.

    ¿Qué son los IDs de entrada del decodificador?

    Bart utiliza eos_token_id como el token inicial para la generación de decoder_input_ids. Si se utiliza past_key_values, opcionalmente solo se deben introducir los últimos decoder_input_ids (ver past_key_values).

    Para el entrenamiento de traducción y resumen, se debe proporcionar decoder_input_ids. Si no se proporciona decoder_input_ids, el modelo creará este tensor desplazando input_ids hacia la derecha para el preentrenamiento de desruido, siguiendo el artículo.

  • decoder_attention_mask (torch.LongTensor de forma (batch_size, target_sequence_length), opcional) — Comportamiento predeterminado: genera un tensor que ignora los tokens de relleno en decoder_input_ids. La máscara causal también se usará de forma predeterminada. Si deseas cambiar el comportamiento de relleno, debes leer modeling_bart._prepare_decoder_attention_mask y modificarlo según tus necesidades. Consulta la figura 1 del artículo para obtener más información sobre la estrategia predeterminada.

    Si deseas cambiar el comportamiento del relleno, debes leer modeling_bart._prepare_decoder_attention_mask y modificarlo según tus necesidades. Consulta la figura 1 de el artículo para obtener más información sobre la estrategia predeterminada.

  • encoder_outputs (tuple[tuple[torch.Tensor]], opcional) — La tupla consiste en (last_hidden_state, opcional: hidden_states, opcional: attentions) last_hidden_state de forma (batch_size, sequence_length, hidden_size), opcional) es una secuencia de hidden-states en la salida de la última capa del codificador. Se utiliza en la atención cruzada del decodificador.
  • past_key_values (~cache_utils.Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en la past_key_values devuelta por el modelo en una etapa anterior de la decodificación, cuando use_cache=True o config.use_cache=True.

    Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan past_key_values, DynamicCache se inicializará de forma predeterminada.

    El modelo generará el mismo formato de caché que se proporciona como entrada.

    Si se utilizan past_key_values, se espera que el usuario introduzca únicamente los input_ids no procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma (batch_size, unprocessed_length) en lugar de todos los input_ids con forma (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor de forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasar input_ids puede optar por pasar directamente una representación incrustada. Esto es útil si desea tener más control sobre cómo convertir input_ids índices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.

    labels (torch.LongTensor de forma (batch_size, sequence_length), opcional): Etiquetas para calcular la pérdida de modelado de lenguaje enmascarado. Los índices deben estar en [-100, 0, ..., config.vocab_size] (ver la docstring de input_ids). Los tokens con índices establecidos en -100 se ignoran (se enmascaran); la pérdida solo se calcula para los tokens con etiquetas en [0, ..., config.vocab_size]

  • decoder_inputs_embeds (torch.Tensor de forma (batch_size, target_sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasar decoder_input_ids puede optar por pasar directamente una representación incrustada. Si past_key_values se usa, opcionalmente solo la última decoder_inputs_embeds debe ser introducida (ver past_key_values). Esto es útil si se desea tener más control sobre cómo convertir decoder_input_ids índices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.

    Si decoder_input_ids y decoder_inputs_embeds no están configurados, decoder_inputs_embeds toma el valor de inputs_embeds.

  • labels (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Etiquetas para calcular la pérdida de modelado de lenguaje enmascarado. Los índices deben estar en [0, ..., config.vocab_size] o ser -100 (ver la docstring de input_ids). Los tokens con índices establecidos en -100 se ignoran (enmascarados); la pérdida solo se calcula para los tokens con etiquetas en [0, ..., config.vocab_size].
  • use_cache (bool, opcional) — Si se establece en True, se devuelven los estados de clave-valor de past_key_values y pueden usarse para acelerar la decodificación (ver past_key_values).

Devuelve

Seq2SeqLMOutput o tuple(torch.Tensor)

Un Seq2SeqLMOutput o una tupla de torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios elementos según la configuración (SeamlessM4Tv2Config) y las entradas.

El método forward de SeamlessM4Tv2ForTextToText sobrescribe el método especial __call__.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de Module después en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

  • loss (torch.Tensor de forma (1,), opcional, se devuelve cuando se proporciona labels) — Pérdida de modelado de lenguaje.

  • logits (torch.Tensor de forma (batch_size, sequence_length, config.vocab_size)) — Puntuaciones de predicción de la cabeza de modelado de lenguaje (puntuaciones para cada token del vocabulario antes de SoftMax).

  • past_key_values (EncoderDecoderCache, opcional, se devuelve cuando se pasa use_cache=True o cuando config.use_cache=True) — Es una instancia de EncoderDecoderCache. Para más detalles, consulte nuestra guía de caché kv.

    Contiene estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que pueden utilizarse (véase la entrada past_key_values) para acelerar la decodificación secuencial.

  • decoder_hidden_states (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos del decodificador en la salida de cada capa más las salidas de la incrustación inicial.

  • decoder_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (una por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atención del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

  • cross_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (una por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atención de la capa de atención cruzada del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de atención cruzada.

  • encoder_last_hidden_state (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Secuencia de estados ocultos en la salida de la última capa del codificador del modelo.

  • encoder_hidden_states (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos del codificador en la salida de cada capa más las salidas de la incrustación inicial.

  • encoder_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (una por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atención del codificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

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 variable según la modalidad, opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario.

    Los índices se pueden obtener usando SeamlessM4TTokenizer o SeamlessM4TProcessor. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.

    ¿Qué son los IDs de entrada?

  • tgt_lang (str, opcional) — El idioma que se usará como idioma de destino para la traducción.
  • generation_config (~generation.GenerationConfig, opcional) — La configuración de generación que se utilizará como parametrización base para la llamada de generación. Los **kwargs pasados a generate que coincidan con los atributos de generation_config los sobrescribirán. Si no se proporciona generation_config, se utilizará la predeterminada, que tiene la siguiente prioridad de carga: 1) desde el archivo de modelo generation_config.json, si existe; 2) desde la configuración del modelo. Tenga en cuenta que los parámetros no especificados heredarán los valores predeterminados de GenerationConfig, cuya documentación debe consultarse para parametrizar la generación.
  • logits_processor (LogitsProcessorList, opcional) — Procesadores de logits personalizados que complementan los procesadores de logits predeterminados creados a partir de los argumentos y la configuración de generación. Si se pasa un procesador de logits que ya fue creado con los argumentos o una configuración de generación, se lanza un error. Esta función está destinada a usuarios avanzados.
  • stopping_criteria (StoppingCriteriaList, opcional) — Criterios de parada personalizados que complementan los criterios de parada predeterminados creados a partir de los argumentos y una configuración de generación. Si se pasa un criterio de parada que ya ha sido creado con los argumentos o una configuración de generación, se lanza un error. Esta función está destinada a usuarios avanzados.
  • prefix_allowed_tokens_fn (Callable[[int, torch.Tensor], list[int]], opcional) — Si se proporciona, esta función restringe la búsqueda por haz a los tokens permitidos en cada paso. Si no se proporciona, no se aplica ninguna restricción. Esta función toma 2 argumentos: el ID del lote batch_id y input_ids. Debe devolver una lista con los tokens permitidos para el siguiente paso de generación condicionado al ID del lote batch_id y a los tokens generados previamente inputs_ids. Este argumento es útil para la generación condicionada al prefijo, tal como se describe en Autoregressive Entity Retrieval.
  • synced_gpus (bool, opcional, valor predeterminado False) — Si se debe continuar ejecutando el bucle while hasta max_length (necesario para evitar bloqueos con FullyShardedDataParallel y DeepSpeed ZeRO Stage 3).
  • kwargs (dict[str, Any], opcional) — Parametrización ad hoc de generate_config y/o kwargs adicionales específicos del modelo que se reenviarán a la función forward del modelo.

Devuelve

ModelOutput o torch.LongTensor

Un ModelOutput (si return_dict_in_generate=True o cuando config.return_dict_in_generate=True) o un torch.Tensor. Los tipos posibles de ModelOutput son:

Genera secuencias de ids de tokens.

La mayoría de los parámetros de control de generación se configuran en generation_config, que, si no se pasa, se establecerá en la configuración de generación predeterminada del modelo. Puede invalidar cualquier generation_config pasando los parámetros correspondientes a generate(), por ejemplo, .generate(inputs, num_beams=4, do_sample=True).

Para obtener una visión general de las estrategias de generación y ejemplos de código, consulte la siguiente guía.

SeamlessM4Tv2ForSpeechToText

clase transformers.SeamlessM4Tv2ForSpeechToText

< >

( config: SeamlessM4Tv2Config )

Parámetros

  • config (SeamlessM4Tv2Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.

El transformer del modelo de voz a texto SeamlessM4Tv2, que puede utilizarse para S2TT.

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

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)) — Características de audio de entrada. Esto debe ser devuelto por la clase SeamlessM4TFeatureExtractor o la clase SeamlessM4TProcessor. Consulte SeamlessM4TFeatureExtractor.call() para más detalles.
  • attention_mask (torch.Tensor de forma (batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en [0, 1]:
    • 1 para los tokens que no están enmascarados,
    • 0 para los tokens que están enmascarados.

    ¿Qué son las máscaras de atención?

  • decoder_input_ids (torch.LongTensor de forma (batch_size, target_sequence_length), opcional) — Índices de los tokens de la secuencia de entrada del decodificador en el vocabulario. Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles. ¿Qué son los IDs de entrada del decodificador? Bart usa eos_token_id como token inicial para la generación de decoder_input_ids. Si se usa past_key_values, opcionalmente solo se deben ingresar los últimos decoder_input_ids (consulte past_key_values). Para el entrenamiento de traducción y resumen, se deben proporcionar decoder_input_ids. Si no se proporcionan decoder_input_ids, el modelo creará este tensor desplazando input_ids hacia la derecha para el preentrenamiento de desruido, siguiendo el artículo.

    Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.

    ¿Qué son los IDs de entrada del decodificador?

    Bart utiliza eos_token_id como el token inicial para la generación de decoder_input_ids. Si se utiliza past_key_values, opcionalmente solo se deben introducir los últimos decoder_input_ids (ver past_key_values).

    Para el entrenamiento de traducción y resumen, se debe proporcionar decoder_input_ids. Si no se proporciona decoder_input_ids, el modelo creará este tensor desplazando input_ids hacia la derecha para el preentrenamiento de desruido, siguiendo el artículo.

  • decoder_attention_mask (torch.LongTensor de forma (batch_size, target_sequence_length), opcional) — Comportamiento predeterminado: genera un tensor que ignora los tokens de relleno en decoder_input_ids. La máscara causal también se usará de forma predeterminada. Si deseas cambiar el comportamiento de relleno, debes leer modeling_bart._prepare_decoder_attention_mask y modificarlo según tus necesidades. Consulta la figura 1 del artículo para obtener más información sobre la estrategia predeterminada.

    Si deseas cambiar el comportamiento del relleno, debes leer modeling_bart._prepare_decoder_attention_mask y modificarlo según tus necesidades. Consulta la figura 1 de el artículo para obtener más información sobre la estrategia predeterminada.

  • encoder_outputs (tuple[tuple[torch.Tensor]], opcional) — La tupla consiste en (last_hidden_state, opcional: hidden_states, opcional: attentions) last_hidden_state de forma (batch_size, sequence_length, hidden_size), opcional) es una secuencia de hidden-states en la salida de la última capa del codificador. Se utiliza en la atención cruzada del decodificador.
  • past_key_values (~cache_utils.Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en la past_key_values devuelta por el modelo en una etapa anterior de la decodificación, cuando use_cache=True o config.use_cache=True.

    Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan past_key_values, DynamicCache se inicializará de forma predeterminada.

    El modelo generará el mismo formato de caché que se proporciona como entrada.

    Si se utilizan past_key_values, se espera que el usuario introduzca únicamente los input_ids no procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma (batch_size, unprocessed_length) en lugar de todos los input_ids con forma (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor de forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasar input_ids puede optar por pasar directamente una representación incrustada. Esto es útil si desea tener más control sobre cómo convertir input_ids índices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.

    labels (torch.LongTensor de forma (batch_size, sequence_length), opcional): Etiquetas para calcular la pérdida de modelado de lenguaje enmascarado. Los índices deben estar en [-100, 0, ..., config.vocab_size] (ver la docstring de input_ids). Los tokens con índices establecidos en -100 se ignoran (se enmascaran); la pérdida solo se calcula para los tokens con etiquetas en [0, ..., config.vocab_size]

  • decoder_inputs_embeds (torch.Tensor de forma (batch_size, target_sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasar decoder_input_ids puede optar por pasar directamente una representación incrustada. Si past_key_values se usa, opcionalmente solo la última decoder_inputs_embeds debe ser introducida (ver past_key_values). Esto es útil si se desea tener más control sobre cómo convertir decoder_input_ids índices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.

    Si decoder_input_ids y decoder_inputs_embeds no están configurados, decoder_inputs_embeds toma el valor de inputs_embeds.

  • labels (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Etiquetas para calcular la pérdida de modelado de lenguaje enmascarado. Los índices deben estar en [0, ..., config.vocab_size] o ser -100 (ver la docstring de input_ids). Los tokens con índices establecidos en -100 se ignoran (enmascarados); la pérdida solo se calcula para los tokens con etiquetas en [0, ..., config.vocab_size].
  • use_cache (bool, opcional) — Si se establece en True, se devuelven los estados de clave-valor de past_key_values y pueden usarse para acelerar la decodificación (ver past_key_values).

Devuelve

Seq2SeqLMOutput o tuple(torch.Tensor)

Un Seq2SeqLMOutput o una tupla de torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios elementos según la configuración (SeamlessM4Tv2Config) y las entradas.

El método forward de SeamlessM4Tv2ForSpeechToText sobrescribe el método especial __call__.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de Module después en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

  • loss (torch.Tensor de forma (1,), opcional, se devuelve cuando se proporciona labels) — Pérdida de modelado de lenguaje.

  • logits (torch.Tensor de forma (batch_size, sequence_length, config.vocab_size)) — Puntuaciones de predicción de la cabeza de modelado de lenguaje (puntuaciones para cada token del vocabulario antes de SoftMax).

  • past_key_values (EncoderDecoderCache, opcional, se devuelve cuando se pasa use_cache=True o cuando config.use_cache=True) — Es una instancia de EncoderDecoderCache. Para más detalles, consulte nuestra guía de caché kv.

    Contiene estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que pueden utilizarse (véase la entrada past_key_values) para acelerar la decodificación secuencial.

  • decoder_hidden_states (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos del decodificador en la salida de cada capa más las salidas de la incrustación inicial.

  • decoder_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (una por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atención del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

  • cross_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (una por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atención de la capa de atención cruzada del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de atención cruzada.

  • encoder_last_hidden_state (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Secuencia de estados ocultos en la salida de la última capa del codificador del modelo.

  • encoder_hidden_states (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos del codificador en la salida de cada capa más las salidas de la incrustación inicial.

  • encoder_attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (una por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atención del codificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Ejemplo:

>>> 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)) — Características de audio de entrada. Esto debe ser devuelto por la clase SeamlessM4TFeatureExtractor o la clase SeamlessM4TProcessor. Consulte SeamlessM4TFeatureExtractor.call() para más detalles.
  • tgt_lang (str, opcional) — El idioma que se usará como idioma de destino para la traducción.
  • generation_config (~generation.GenerationConfig, opcional) — La configuración de generación que se utilizará como parametrización base para la llamada de generación. Los **kwargs pasados a generate que coincidan con los atributos de generation_config los sobrescribirán. Si no se proporciona generation_config, se utilizará la predeterminada, que tiene la siguiente prioridad de carga: 1) desde el archivo de modelo generation_config.json, si existe; 2) desde la configuración del modelo. Tenga en cuenta que los parámetros no especificados heredarán los valores predeterminados de GenerationConfig, cuya documentación debe consultarse para parametrizar la generación.
  • logits_processor (LogitsProcessorList, opcional) — Procesadores de logits personalizados que complementan los procesadores de logits predeterminados creados a partir de los argumentos y la configuración de generación. Si se pasa un procesador de logits que ya fue creado con los argumentos o una configuración de generación, se lanza un error. Esta función está destinada a usuarios avanzados.
  • stopping_criteria (StoppingCriteriaList, opcional) — Criterios de parada personalizados que complementan los criterios de parada predeterminados creados a partir de los argumentos y una configuración de generación. Si se pasa un criterio de parada que ya ha sido creado con los argumentos o una configuración de generación, se lanza un error. Esta función está destinada a usuarios avanzados.
  • prefix_allowed_tokens_fn (Callable[[int, torch.Tensor], list[int]], opcional) — Si se proporciona, esta función restringe la búsqueda por haz a los tokens permitidos en cada paso. Si no se proporciona, no se aplica ninguna restricción. Esta función toma 2 argumentos: el ID del lote batch_id y input_ids. Debe devolver una lista con los tokens permitidos para el siguiente paso de generación condicionado al ID del lote batch_id y a los tokens generados previamente inputs_ids. Este argumento es útil para la generación condicionada al prefijo, tal como se describe en Autoregressive Entity Retrieval.
  • synced_gpus (bool, opcional, valor predeterminado False) — Si se debe continuar ejecutando el bucle while hasta max_length (necesario para evitar bloqueos con FullyShardedDataParallel y DeepSpeed ZeRO Stage 3).
  • kwargs (dict[str, Any], opcional) — Parametrización ad hoc de generate_config y/o kwargs adicionales específicos del modelo que se reenviarán a la función forward del modelo.

Devuelve

ModelOutput o torch.LongTensor

Un ModelOutput (si return_dict_in_generate=True o cuando config.return_dict_in_generate=True) o un torch.Tensor. Los tipos posibles de ModelOutput son:

Genera secuencias de ids de tokens.

La mayoría de los parámetros de control de generación se configuran en generation_config, que, si no se pasa, se establecerá en la configuración de generación predeterminada del modelo. Puede invalidar cualquier generation_config pasando los parámetros correspondientes a generate(), por ejemplo, .generate(inputs, num_beams=4, do_sample=True).

Para obtener una visión general de las estrategias de generación y ejemplos de código, consulte la siguiente guía.

SeamlessM4Tv2Config

clase 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, valor predeterminado True) — Indica si el modelo se utiliza como codificador/decodificador o no.
  • vocab_size (int, opcional, valor predeterminado 256102) — Tamaño del vocabulario del modelo. Define el número de tokens diferentes que pueden representarse mediante input_ids.
  • t2u_vocab_size (int, opcional, valor predeterminado 10082) — Tamaño del vocabulario de unidades del modelo SeamlessM4Tv2. Define el número de diferentes “unit tokens” que pueden representarse mediante los inputs_ids pasados al llamar al submodelo Text-To-Units de ~SeamlessM4Tv2Model, ~SeamlessM4Tv2ForSpeechToSpeech o ~SeamlessM4Tv2ForTextToSpeech.
  • char_vocab_size (int, opcional, valor predeterminado 10943) — Tamaño del vocabulario de caracteres del modelo SeamlessM4Tv2. Define el número de tokens de caracteres diferentes que pueden representarse mediante los char_inputs_ids pasados al llamar al submodelo Text-To-Units de ~SeamlessM4Tv2Model, ~SeamlessM4Tv2ForSpeechToSpeech o ~SeamlessM4Tv2ForTextToSpeech.
  • hidden_size (int, opcional, valor predeterminado 1024) — Dimensión de las representaciones ocultas.
  • initializer_range (float, opcional, valor predeterminado 0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos.
  • layer_norm_eps (float, opcional, valor predeterminado 1e-05) — El epsilon utilizado por las capas de normalización de capa.
  • use_cache (bool, opcional, valor predeterminado True) — Indica si el modelo debe devolver las últimas claves/valores de atención (no utilizado por todos los modelos). Solo es relevante si config.is_decoder=True o cuando el modelo es un modelo generativo solo de decodificador.
  • max_position_embeddings (int, opcional, valor predeterminado 4096) — La longitud máxima de secuencia con la que se podría utilizar este modelo.
  • encoder_layerdrop (Union[float, int], opcional, valor predeterminado 0.05) — La probabilidad de LayerDrop para el codificador. Consulte el [artículo de LayerDrop](ver https://huggingface.co/papers/1909.11556) para más detalles.
  • decoder_layerdrop (Union[float, int], opcional, valor predeterminado 0.05) — La probabilidad de LayerDrop para el decodificador. Consulte el [artículo de LayerDrop](ver https://huggingface.co/papers/1909.11556) para más detalles.
  • activation_function (str, opcional, valor predeterminado relu) — La función de activación no lineal (función o cadena) en el decodificador. Por ejemplo, "gelu", "relu", "silu", etc.
  • dropout (Union[float, int], opcional, valor predeterminado 0.1) — La proporción para todas las capas de dropout.
  • attention_dropout (Union[float, int], opcional, valor predeterminado 0.1) — La proporción de dropout para las probabilidades de atención.
  • activation_dropout (Union[float, int], opcional, valor predeterminado 0.0) — La proporción de dropout para las activaciones dentro de la capa totalmente conectada.
  • scale_embedding (bool, opcional, valor predeterminado True) — Si se deben escalar los embeddings dividiendo por sqrt(d_model).
  • encoder_layers (int, opcional, valor predeterminado 24) — Número de capas ocultas en el codificador del Transformer. Usará el mismo valor que num_layers si no se establece.
  • encoder_ffn_dim (int, opcional, valor predeterminado 8192) — Dimensionalidad de la capa “intermedia” (a menudo denominada feed-forward) en el codificador.
  • encoder_attention_heads (int, opcional, valor predeterminado 16) — Número de cabezas de atención para cada capa de atención en el codificador Transformer.
  • decoder_layers (int, opcional, valor predeterminado 24) — Número de capas ocultas en el decodificador del Transformer. Si no se establece, se usará el mismo valor que num_layers.
  • decoder_ffn_dim (int, opcional, valor predeterminado 8192) — Dimensionalidad de la capa “intermedia” (a menudo denominada feed-forward) en el decodificador.
  • decoder_attention_heads (int, opcional, valor predeterminado 16) — Número de cabezas de atención para cada capa de atención en el decodificador del Transformer.
  • decoder_start_token_id (int, opcional, valor predeterminado 3) — Si un modelo encoder-decoder inicia la decodificación con un token diferente de bos, el id de ese token.
  • max_new_tokens (int, opcional, valor predeterminado 256) — El número máximo de tokens de texto a generar, ignorando el número de tokens del prompt.
  • pad_token_id (int, opcional, valor predeterminado 0) — Id del token utilizado para el relleno en el vocabulario.
  • bos_token_id (int, opcional, valor predeterminado 2) — Id del token utilizado para el inicio de la secuencia en el vocabulario.
  • eos_token_id (Union[int, list[int]], opcional, valor predeterminado 3) — Identificador de token utilizado para el fin de secuencia en el vocabulario.
  • speech_encoder_layers (int, opcional, valor predeterminado 24) — Número de capas ocultas en el codificador de voz Transformer.
  • speech_encoder_attention_heads (int, opcional, valor predeterminado 16) — Número de cabezas de atención para cada capa de atención en el codificador de voz Transformer.
  • speech_encoder_intermediate_size (int, opcional, valor predeterminado 4096) — Dimensión de la capa “intermedia” (es decir, de avance hacia adelante) del codificador de voz Transformer.
  • speech_encoder_hidden_act (str o function, opcional, valor predeterminado "swish") — La función de activación no lineal (función o cadena) en el codificador de voz. Si es una cadena, se admiten "gelu", "relu", "selu", "swish" y "gelu_new".
  • speech_encoder_dropout (float, opcional, valor predeterminado 0.0) — La probabilidad de dropout para todas las capas del codificador de voz.
  • add_adapter (bool, opcional, valor predeterminado True) — Añade una capa de adaptador sobre el codificador de voz.
  • speech_encoder_layerdrop (float, opcional, valor predeterminado 0.1) — La probabilidad de LayerDrop para el codificador de voz. Consulte el [artículo de LayerDrop](ver https://huggingface.co/papers/1909.11556) para más detalles.
  • feature_projection_input_dim (int, opcional, valor predeterminado 160) — Dimensión de entrada de la proyección de características de entrada del codificador de voz, es decir, la dimensión después de procesar los audios de entrada con SeamlessM4TFeatureExtractor.
  • adaptor_kernel_size (int, opcional, valor predeterminado 8) — Tamaño del kernel de las capas convolucionales en la red adaptadora. Solo es relevante si add_adapter is True.
  • adaptor_stride (int, opcional, valor predeterminado 8) — Paso de las capas convolucionales en la red adaptadora. Solo es relevante si add_adapter is True.
  • adaptor_dropout (float, opcional, valor predeterminado 0.1) — La probabilidad de dropout para todas las capas del adaptador de voz.
  • num_adapter_layers (int, opcional, valor predeterminado 1) — Número de capas convolucionales que deben usarse en la red del adaptador. Solo es relevante si add_adapter is True.
  • position_embeddings_type (str, opcional, valor predeterminado "relative_key") — Puede especificarse como relative_key. Si se deja en None, no se aplica ningún incrustado de posición relativa. Solo se aplica al codificador de voz. Para obtener más información sobre "relative_key", consulte Self-Attention with Relative Position Representations (Shaw et al.).
  • conv_depthwise_kernel_size (int, opcional, valor predeterminado 31) — Tamaño del kernel de la capa convolucional depthwise 1D en los bloques Conformer. Solo se aplica al codificador de voz.
  • left_max_position_embeddings (int, opcional, valor predeterminado 64) — Valor de recorte izquierdo para las posiciones relativas.
  • right_max_position_embeddings (int, opcional, valor predeterminado 8) — Valor de recorte derecho para las posiciones relativas.
  • speech_encoder_chunk_size (int, opcional, valor predeterminado 20000) — El tamaño de cada bloque de atención.
  • speech_encoder_left_chunk_num (int, opcional, valor predeterminado 128) — Número de fragmentos a la izquierda hasta los cuales se permite la anticipación.
  • t2u_bos_token_id (int, opcional, valor predeterminado 0) — El id del token de unidad beginning-of-stream. Solo se aplica al modelo seq2seq de texto a unidad.
  • t2u_pad_token_id (int, opcional, valor predeterminado 1) — El identificador del token de unidad de relleno. Solo se aplica al modelo seq2seq de texto a unidad.
  • t2u_eos_token_id (int, opcional, valor predeterminado 2) — El id del token de unidad end-of-stream. Solo se aplica al modelo seq2seq de texto a unidad.
  • t2u_encoder_layers (int, opcional, valor predeterminado 6) — Número de capas ocultas en el codificador de texto a unidades del Transformer.
  • t2u_encoder_ffn_dim (int, opcional, valor predeterminado 8192) — Dimensión de la capa “intermedia” (es decir, de retroalimentación) en el codificador de texto a unidades del Transformer.
  • t2u_encoder_attention_heads (int, opcional, valor predeterminado 16) — Número de cabezas de atención para cada capa de atención en el codificador de texto a unidades del Transformer.
  • t2u_decoder_layers (int, opcional, valor predeterminado 6) — Número de capas ocultas en el decodificador de texto a unidades del Transformer.
  • t2u_decoder_ffn_dim (int, opcional, valor predeterminado 8192) — Dimensión de la capa “intermedia” (es decir, de avance hacia adelante) en el decodificador de texto a unidades del Transformer.
  • t2u_decoder_attention_heads (int, opcional, valor predeterminado 16) — Número de cabezas de atención para cada capa de atención en el decodificador de texto a unidades del Transformer.
  • t2u_max_position_embeddings (int, opcional, valor predeterminado 4096) — La longitud máxima de secuencia con la que podría usarse este componente de texto a unidad del modelo. Por lo general, se establece este valor en un número grande por si acaso (p. ej., 512 o 1024 o 2048).
  • t2u_variance_predictor_embed_dim (int, opcional, valor predeterminado 1024) — La dimensión de proyección del predictor de duración de text-to-unit.
  • t2u_variance_predictor_hidden_dim (int, opcional, valor predeterminado 256) — Dimensión interna del predictor de duración de text-to-unit.
  • t2u_variance_predictor_kernel_size (int, opcional, valor predeterminado 3) — Tamaño del kernel de las capas convolucionales del predictor de duración de text-to-unit.
  • t2u_variance_pred_dropout (float, opcional, valor predeterminado 0.5) — La probabilidad de dropout del predictor de duración de text-to-unit.
  • sampling_rate (int, opcional, valor predeterminado 16000) — La tasa de muestreo a la que deben digitalizarse los archivos de audio, expresada en hercios (Hz).
  • upsample_initial_channel (int, opcional, valor predeterminado 512) — El número de canales de entrada en la red de remuestreo ascendente de hifi-gan. Se aplica solo al vocoder.
  • upsample_rates (tuple[int] o list[int], opcional, valor predeterminado [5, 4, 4, 2, 2]) — Una tupla de enteros que define el paso (stride) de cada capa de convolución 1D en la red de remuestreo ascendente (upsampling) del vocoder. La longitud de upsample_rates define el número de capas de convolución y debe coincidir con la longitud de upsample_kernel_sizes. Se aplica solo al vocoder.
  • upsample_kernel_sizes (tuple[int] o list[int], opcional, valor predeterminado [11, 8, 8, 4, 4]) — Una tupla de enteros que define el tamaño del kernel de cada capa convolucional 1D en la red de remuestreo ascendente del vocoder. La longitud de upsample_kernel_sizes define el número de capas convolucionales y debe coincidir con la longitud de upsample_rates. Se aplica solo al vocoder.
  • resblock_kernel_sizes (tuple[int] o list[int], opcional, valor predeterminado [3, 7, 11]) — Una tupla de enteros que define los tamaños de los núcleos de las capas convolucionales 1D del vocoder en el módulo de fusión de campos receptivos múltiples (MRF). Se aplica solo al vocoder.
  • resblock_dilation_sizes (tuple[tuple[int]] o list[list[int]], opcional, valor predeterminado [[1, 3, 5], [1, 3, 5], [1, 3, 5]]) — Una tupla anidada de enteros que define las tasas de dilatación de las capas de convolución 1D dilatada del vocoder en el módulo de fusión de campos receptivos múltiples (MRF). Se aplica solo al vocoder.
  • leaky_relu_slope (float, opcional, valor predeterminado 0.1) — El ángulo de la pendiente negativa utilizado por la activación leaky ReLU en el vocoder. Se aplica solo al vocoder.
  • unit_hifi_gan_vocab_size (int, opcional, valor predeterminado 10000) — Tamaño del vocabulario del vocoder de SeamlessM4Tv2. Define el número de tokens de unidad diferentes que pueden representarse mediante los inputs_ids pasados al llamar al vocoder de ~SeamlessM4Tv2Model, ~SeamlessM4Tv2ForSpeechToSpeech o ~SeamlessM4Tv2ForTextToSpeech.
  • unit_embed_dim (int, opcional, valor predeterminado 1280) — La dimensión de proyección de los ids de entrada dados al vocoder hifi-gan. Se aplica solo al vocoder.
  • lang_embed_dim (int, opcional, valor predeterminado 256) — La dimensión de proyección del idioma objetivo que se proporciona al vocoder hifi-gan. Se aplica solo al vocoder.
  • spkr_embed_dim (int, opcional, valor predeterminado 256) — La dimensión de proyección del id del hablador que se proporciona al vocoder hifi-gan. Se aplica solo al vocoder.
  • vocoder_num_langs (int, opcional, valor predeterminado 36) — Número de idiomas admitidos por el vocoder. Puede ser diferente de t2u_num_langs.
  • vocoder_num_spkrs (int, opcional, valor predeterminado 200) — Número de hablantes admitidos por el vocoder.
  • variance_predictor_kernel_size (int, opcional, valor predeterminado 3) — Tamaño del kernel del predictor de duración. Se aplica solo al vocoder.
  • var_pred_dropout (float, opcional, valor predeterminado 0.5) — La probabilidad de dropout del predictor de duración. Se aplica solo al vocoder.
  • vocoder_offset (int, opcional, valor predeterminado 4) — Desplaza los ids de tokens de unidad en este número para tener en cuenta los tokens de símbolo. Se aplica solo al vocoder.
  • tie_word_embeddings (bool, opcional, valor predeterminado True) — Si se deben vincular las matrices de pesos de embeddings según el mapeo tied_weights_keys del modelo.

Esta es la clase de configuración para almacenar la configuración de un SeamlessM4Tv2Model. Se utiliza para instanciar un modelo Seamless M4T V2 según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de facebook/hf-seamless-m4t-medium

Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.

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