Transformers documentation
SeamlessM4T
Este modelo se publicó en HF papers el 22 de agosto de 2023 y se contribuyó a Hugging Face Transformers el 23 de octubre de 2023.
SeamlessM4T
Resumen
El modelo SeamlessM4T fue propuesto en SeamlessM4T — Massively Multilingual & Multimodal Machine Translation por el equipo de Seamless Communication de Meta AI.
Esta es la publicación de la versión 1 del modelo. Para la publicación actualizada de la versión 2, consulte la documentación de Seamless M4T v2.
SeamlessM4T 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.
SeamlessM4T 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)
SeamlessM4TModel puede realizar todas las tareas anteriores, pero cada tarea también tiene su propio submodelo dedicado.
El resumen del artículo es el siguiente:
¿Qué se necesita para crear el Babel Fish, una herramienta que puede ayudar a las personas a traducir el habla entre cualquier par de idiomas? Si bien los avances recientes en modelos basados en texto han llevado la cobertura de la traducción automática más allá de 200 idiomas, los modelos unificados de traducción de habla a habla aún no han logrado avances similares. Más específicamente, los sistemas convencionales de traducción de habla a habla se basan en sistemas en cascada que realizan la traducción de forma progresiva, lo que mantiene fuera de alcance a los sistemas unificados de alto rendimiento. Para abordar estas carencias, presentamos SeamlessM4T, un modelo único que admite la traducción de habla a habla, la traducción de habla a texto, la traducción de texto a habla, la traducción de texto a texto y el reconocimiento automático del habla para hasta 100 idiomas. Para construirlo, utilizamos 1 millón de horas de datos de audio de habla abiertos para aprender representaciones de habla auto-supervisadas con w2v-BERT 2.0. A continuación, creamos un corpus multimodal de traducciones de habla alineadas automáticamente. Filtradas y combinadas con datos etiquetados por humanos y pseudoetiquetados, desarrollamos el primer sistema multilingüe capaz de traducir desde y hacia el inglés tanto para habla como para texto. En FLEURS, SeamlessM4T establece un nuevo estándar para las traducciones a múltiples idiomas objetivo, logrando una mejora del 20% en BLEU sobre el SOTA anterior en la traducción directa de habla a texto. En comparación con modelos en cascada fuertes, SeamlessM4T mejora la calidad de la traducción al inglés en 1,3 puntos BLEU en habla a texto y en 2,6 puntos ASR-BLEU en habla a habla. Probado por su robustez, nuestro sistema rinde mejor frente a ruidos de fondo y variaciones de hablantes en tareas de habla a texto en comparación con el modelo SOTA actual. Críticamente, evaluamos SeamlessM4T en sesgo de género y añadimos toxicidad para evaluar la seguridad de la traducción. Finalmente, todas las contribuciones de este trabajo son de código abierto y están disponibles en https://github.com/facebookresearch/seamless_communication
Uso
Primero, cargue el procesador y un punto de control del modelo:
from transformers import AutoProcessor, SeamlessM4TModel
processor = AutoProcessor.from_pretrained("facebook/hf-seamless-m4t-medium")
model = SeamlessM4TModel.from_pretrained("facebook/hf-seamless-m4t-medium", 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 test as well
text_inputs = processor(text = "Hello, my dog is cute", src_lang="eng", return_tensors="pt").to(model.device)Speech
SeamlessM4TModel 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 SeamlessM4TModel.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
SeamlessM4TModel 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 SeamlessM4TForSpeechToSpeech
model = SeamlessM4TForSpeechToSpeech.from_pretrained("facebook/hf-seamless-m4t-medium", 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 SeamlessM4TForTextToText
model = SeamlessM4TForTextToText.from_pretrained("facebook/hf-seamless-m4t-medium", device_map="auto")Puede probar también SeamlessM4TForSpeechToText y SeamlessM4TForTextToSpeech.
2. Cambiar la identidad del hablante
Puedes cambiar el orador utilizado para la síntesis de voz con el argumento spkr_id. Algunos spkr_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 voz y texto, por ejemplo .generate(input_ids=input_ids, text_num_beams=4, speech_do_sample=True), que ejecutará sucesivamente la decodificación por búsqueda de haces en el modelo de texto y el muestreo multinomial en el modelo de voz.
4. Generar voz y texto al mismo tiempo
Usa return_intermediate_token_ids=True con SeamlessM4TModel para devolver tanto el habla como el texto.
Arquitectura del modelo
SeamlessM4T 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.
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, que sigue una estructura estándar de codificador-decodificador, genera tokens de unidad.
- 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í.
SeamlessM4TModel
clase transformers.SeamlessM4TModel
< source >( config: SeamlessM4TConfigcurrent_modality = 'text' )
Parámetros
- config (SeamlessM4TConfig) — 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 SeamlessM4T, 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
< source >( input_ids: typing.Optional[torch.Tensor] = Noneinput_features: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespkr_id: int | None = 0generate_speech: bool | None = True**kwargs ) → Union[SeamlessM4TGenerationOutput, tuple[Tensor], ModelOutput]
Parámetros
- input_ids (
torch.LongTensorde 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.
- input_features (
torch.Tensorde 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 esTrue, también devuelve el texto generado intermedio y los tokens de unidad. EstableceTruesi también deseas obtener el texto traducido junto con el audio. Ten en cuenta que sigenerate_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. - spkr_id (
int, opcional, valor predeterminado 0) — El identificador del orador utilizado para la síntesis de voz. Debe ser menor queconfig.vocoder_num_spkrs. - generate_speech (
bool, opcional, valor predeterminadoTrue) — Si esFalse, 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
**kwargspara el métodogeneratede cada submodelo, exceptodecoder_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
generatedel 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.
- Sin un prefijo, se introducirán como
Devuelve
Union[SeamlessM4TGenerationOutput, tuple[Tensor], ModelOutput]
- Si
generate_speechyreturn_intermediate_token_ids, devuelveSeamlessM4TGenerationOutput. - Si
generate_speechy noreturn_intermediate_token_ids, devuelve una tupla compuesta por formas de onda de forma(batch_size, sequence_length)ywaveform_lengths, que indica la longitud de cada muestra. - Si
generate_speech=False, devuelveModelOutput.
Genera ids de tokens traducidos y/o formas de onda de audio traducidas.
Este método llama sucesivamente a la función
.generatede 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.
SeamlessM4TForTextToSpeech
clase transformers.SeamlessM4TForTextToSpeech
< source >( config: SeamlessM4TConfig )
Parámetros
- config (SeamlessM4TConfig) — 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 voz SeamlessM4T, 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
< source >( input_ids: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespkr_id: int | None = 0**kwargs ) → Union[SeamlessM4TGenerationOutput, tuple[Tensor]]
Parámetros
- input_ids (
torch.LongTensorde 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.
- return_intermediate_token_ids (
bool, opcional) — Si esTrue, también devuelve el texto generado intermedio y los tokens de unidad. EstableceTruesi 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. - spkr_id (
int, opcional, valor predeterminado 0) — El identificador del orador utilizado para la síntesis de voz. Debe ser menor queconfig.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
**kwargspara el métodogeneratede cada submodelo, exceptodecoder_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
generatedel 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.
- Sin un prefijo, se introducirán como
Devuelve
Union[SeamlessM4TGenerationOutput, tuple[Tensor]]
- Si
return_intermediate_token_ids, devuelveSeamlessM4TGenerationOutput. - Si no
return_intermediate_token_ids, devuelve una tupla compuesta por formas de onda de forma(batch_size, sequence_length)ywaveform_lengths, que indica la longitud de cada muestra.
Genera formas de onda de audio traducidas.
Este método llama sucesivamente a la función
.generatede 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.
SeamlessM4TForSpeechToSpeech
clase transformers.SeamlessM4TForSpeechToSpeech
< source >( config: SeamlessM4TConfig )
Parámetros
- config (SeamlessM4TConfig) — 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 SeamlessM4T, 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
< source >( input_features: typing.Optional[torch.Tensor] = Nonereturn_intermediate_token_ids: bool | None = Nonetgt_lang: str | None = Nonespkr_id: int | None = 0**kwargs ) → Union[SeamlessM4TGenerationOutput, tuple[Tensor]]
Parámetros
- input_features (
torch.Tensorde 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 esTrue, también devuelve el texto generado intermedio y los tokens de unidad. EstableceTruesi 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. - spkr_id (
int, opcional, valor predeterminado 0) — El identificador del orador utilizado para la síntesis de voz. Debe ser menor queconfig.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
**kwargspara el métodogeneratede cada submodelo, exceptodecoder_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
generatedel 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.
- Sin un prefijo, se introducirán como
Devuelve
Union[SeamlessM4TGenerationOutput, tuple[Tensor]]
- Si
return_intermediate_token_ids, devuelveSeamlessM4TGenerationOutput. - Si no
return_intermediate_token_ids, devuelve una tupla compuesta por formas de onda de forma(batch_size, sequence_length)ywaveform_lengths, que indica la longitud de cada muestra.
Genera formas de onda de audio traducidas.
Este método llama sucesivamente a la función
.generatede 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.
SeamlessM4TForTextToText
clase transformers.SeamlessM4TForTextToText
< source >( config: SeamlessM4TConfig )
Parámetros
- config (SeamlessM4TConfig) — 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 SeamlessM4T, 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
< 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 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.
- attention_mask (
torch.Tensorde 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.
- decoder_input_ids (
torch.LongTensorde 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_idcomo el token inicial para la generación dedecoder_input_ids. Si se utilizapast_key_values, opcionalmente solo se deben introducir los últimosdecoder_input_ids(verpast_key_values).Para el entrenamiento de traducción y resumen, se debe proporcionar
decoder_input_ids. Si no se proporcionadecoder_input_ids, el modelo creará este tensor desplazandoinput_idshacia la derecha para el preentrenamiento de desruido, siguiendo el artículo. - decoder_attention_mask (
torch.LongTensorde forma(batch_size, target_sequence_length), opcional) — Comportamiento predeterminado: genera un tensor que ignora los tokens de relleno endecoder_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_masky 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_statede 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 lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.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 losinput_idsno 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 losinput_idscon forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_idspuede optar por pasar directamente una representación incrustada. Esto es útil si desea tener más control sobre cómo convertirinput_idsíndices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.labels (
torch.LongTensorde 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 deinput_ids). Los tokens con índices establecidos en-100se ignoran (se enmascaran); la pérdida solo se calcula para los tokens con etiquetas en[0, ..., config.vocab_size] - decoder_inputs_embeds (
torch.Tensorde forma(batch_size, target_sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasardecoder_input_idspuede optar por pasar directamente una representación incrustada. Sipast_key_valuesse usa, opcionalmente solo la últimadecoder_inputs_embedsdebe ser introducida (verpast_key_values). Esto es útil si se desea tener más control sobre cómo convertirdecoder_input_idsíndices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.Si
decoder_input_idsydecoder_inputs_embedsno están configurados,decoder_inputs_embedstoma el valor deinputs_embeds. - labels (
torch.LongTensorde 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 deinput_ids). Los tokens con índices establecidos en-100se 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 enTrue, se devuelven los estados de clave-valor depast_key_valuesy pueden usarse para acelerar la decodificación (verpast_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 (SeamlessM4TConfig) y las entradas.
El método forward de SeamlessM4TForTextToText 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
Moduledespué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.Tensorde forma(1,), opcional, se devuelve cuando se proporcionalabels) — Pérdida de modelado de lenguaje.logits (
torch.Tensorde 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 pasause_cache=Trueo cuandoconfig.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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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
< 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 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.
- 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**kwargspasados a generate que coincidan con los atributos degeneration_configlos sobrescribirán. Si no se proporcionageneration_config, se utilizará la predeterminada, que tiene la siguiente prioridad de carga: 1) desde el archivo de modelogeneration_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 lotebatch_idyinput_ids. Debe devolver una lista con los tokens permitidos para el siguiente paso de generación condicionado al ID del lotebatch_idy a los tokens generados previamenteinputs_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 predeterminadoFalse) — Si se debe continuar ejecutando el bucle while hasta max_length (necesario para evitar bloqueos conFullyShardedDataParallely DeepSpeed ZeRO Stage 3). - kwargs (
dict[str, Any], opcional) — Parametrización ad hoc degenerate_configy/o kwargs adicionales específicos del modelo que se reenviarán a la funciónforwarddel 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 cualquiergeneration_configpasando 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.
SeamlessM4TForSpeechToText
clase transformers.SeamlessM4TForSpeechToText
< source >( config: SeamlessM4TConfig )
Parámetros
- config (SeamlessM4TConfig) — 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 SeamlessM4T, 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
< 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)) — 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.Tensorde 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.
- decoder_input_ids (
torch.LongTensorde 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_idcomo el token inicial para la generación dedecoder_input_ids. Si se utilizapast_key_values, opcionalmente solo se deben introducir los últimosdecoder_input_ids(verpast_key_values).Para el entrenamiento de traducción y resumen, se debe proporcionar
decoder_input_ids. Si no se proporcionadecoder_input_ids, el modelo creará este tensor desplazandoinput_idshacia la derecha para el preentrenamiento de desruido, siguiendo el artículo. - decoder_attention_mask (
torch.LongTensorde forma(batch_size, target_sequence_length), opcional) — Comportamiento predeterminado: genera un tensor que ignora los tokens de relleno endecoder_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_masky 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_statede 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 lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.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 losinput_idsno 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 losinput_idscon forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_idspuede optar por pasar directamente una representación incrustada. Esto es útil si desea tener más control sobre cómo convertirinput_idsíndices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.labels (
torch.LongTensorde 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 deinput_ids). Los tokens con índices establecidos en-100se ignoran (se enmascaran); la pérdida solo se calcula para los tokens con etiquetas en[0, ..., config.vocab_size] - decoder_inputs_embeds (
torch.Tensorde forma(batch_size, target_sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasardecoder_input_idspuede optar por pasar directamente una representación incrustada. Sipast_key_valuesse usa, opcionalmente solo la últimadecoder_inputs_embedsdebe ser introducida (verpast_key_values). Esto es útil si se desea tener más control sobre cómo convertirdecoder_input_idsíndices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.Si
decoder_input_idsydecoder_inputs_embedsno están configurados,decoder_inputs_embedstoma el valor deinputs_embeds. - labels (
torch.LongTensorde 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 deinput_ids). Los tokens con índices establecidos en-100se 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 enTrue, se devuelven los estados de clave-valor depast_key_valuesy pueden usarse para acelerar la decodificación (verpast_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 (SeamlessM4TConfig) y las entradas.
El método forward de SeamlessM4TForSpeechToText 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
Moduledespué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.Tensorde forma(1,), opcional, se devuelve cuando se proporcionalabels) — Pérdida de modelado de lenguaje.logits (
torch.Tensorde 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 pasause_cache=Trueo cuandoconfig.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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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, SeamlessM4TForSpeechToText
>>> 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 = SeamlessM4TForSpeechToText.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)) — 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**kwargspasados a generate que coincidan con los atributos degeneration_configlos sobrescribirán. Si no se proporcionageneration_config, se utilizará la predeterminada, que tiene la siguiente prioridad de carga: 1) desde el archivo de modelogeneration_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 lotebatch_idyinput_ids. Debe devolver una lista con los tokens permitidos para el siguiente paso de generación condicionado al ID del lotebatch_idy a los tokens generados previamenteinputs_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 predeterminadoFalse) — Si se debe continuar ejecutando el bucle while hasta max_length (necesario para evitar bloqueos conFullyShardedDataParallely DeepSpeed ZeRO Stage 3). - kwargs (
dict[str, Any], opcional) — Parametrización ad hoc degenerate_configy/o kwargs adicionales específicos del modelo que se reenviarán a la funciónforwarddel 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 cualquiergeneration_configpasando 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.
SeamlessM4TConfig
clase transformers.SeamlessM4TConfig
< 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 = 10082hidden_size: int = 1024initializer_range: float = 0.02layer_norm_eps: float = 1e-05use_cache: bool = Truemax_position_embeddings: int = 1024encoder_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 = 160num_conv_pos_embeddings: int = 128num_conv_pos_embedding_groups: int = 16adaptor_kernel_size: int = 8adaptor_stride: int = 8adaptor_dropout: float | int = 0.1num_adapter_layers: int = 1position_embeddings_type: str = 'relative'rotary_embedding_base: int = 10000max_source_positions: int = 4096conv_depthwise_kernel_size: int = 31t2u_bos_token_id: int | None = 0t2u_pad_token_id: int | None = 1t2u_eos_token_id: int | list[int] | None = 2t2u_decoder_start_token_id: int = 2t2u_max_new_tokens: int = 1024t2u_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 = 2048sampling_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 predeterminadoTrue) — Indica si el modelo se utiliza como codificador/decodificador o no. - vocab_size (
int, opcional, valor predeterminado256102) — Tamaño del vocabulario del modelo. Define el número de tokens diferentes que pueden representarse medianteinput_ids. - t2u_vocab_size (
int, opcional, valor predeterminado 10082) — Tamaño del vocabulario de unidades del modelo SeamlessM4T. Define el número de tokens de unidades diferentes que pueden representarse mediante losinputs_idspasados al llamar al submodelo Text-To-Units de ~SeamlessM4TModel, ~SeamlessM4TForSpeechToSpeech o ~SeamlessM4TForTextToSpeech. - hidden_size (
int, opcional, valor predeterminado1024) — Dimensión de las representaciones ocultas. - initializer_range (
float, opcional, valor predeterminado0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos. - layer_norm_eps (
float, opcional, valor predeterminado1e-05) — El epsilon utilizado por las capas de normalización de capa. - use_cache (
bool, opcional, valor predeterminadoTrue) — Indica si el modelo debe devolver las últimas claves/valores de atención (no utilizado por todos los modelos). Solo es relevante siconfig.is_decoder=Trueo cuando el modelo es un modelo generativo solo de decodificador. - max_position_embeddings (
int, opcional, valor predeterminado1024) — La longitud máxima de secuencia con la que se podría utilizar este modelo. - encoder_layerdrop (
Union[float, int], opcional, valor predeterminado0.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 predeterminado0.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 predeterminadorelu) — 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 predeterminado0.1) — La proporción para todas las capas de dropout. - attention_dropout (
Union[float, int], opcional, valor predeterminado0.1) — La proporción de dropout para las probabilidades de atención. - activation_dropout (
Union[float, int], opcional, valor predeterminado0.0) — La proporción de dropout para las activaciones dentro de la capa totalmente conectada. - scale_embedding (
bool, opcional, valor predeterminadoTrue) — Si se deben escalar los embeddings dividiendo por sqrt(d_model). - encoder_layers (
int, opcional, valor predeterminado24) — Número de capas ocultas en el codificador del Transformer. Usará el mismo valor quenum_layerssi no se establece. - encoder_ffn_dim (
int, opcional, valor predeterminado8192) — Dimensionalidad de la capa “intermedia” (a menudo denominada feed-forward) en el codificador. - encoder_attention_heads (
int, opcional, valor predeterminado16) — Número de cabezas de atención para cada capa de atención en el codificador Transformer. - decoder_layers (
int, opcional, valor predeterminado24) — Número de capas ocultas en el decodificador del Transformer. Si no se establece, se usará el mismo valor quenum_layers. - decoder_ffn_dim (
int, opcional, valor predeterminado8192) — Dimensionalidad de la capa “intermedia” (a menudo denominada feed-forward) en el decodificador. - decoder_attention_heads (
int, opcional, valor predeterminado16) — 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 predeterminado3) — Si un modelo encoder-decoder inicia la decodificación con un token diferente debos, 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 predeterminado0) — Id del token utilizado para el relleno en el vocabulario. - bos_token_id (
int, opcional, valor predeterminado2) — Id del token utilizado para el inicio de la secuencia en el vocabulario. - eos_token_id (
Union[int, list[int]], opcional, valor predeterminado3) — 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 (
strofunction, 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 predeterminadoTrue) — 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. - num_conv_pos_embeddings (
int, opcional, valor predeterminado 128) — Número de incrustaciones posicionales convolucionales. Define el tamaño del núcleo de la capa de incrustaciones posicionales convolucionales 1D del codificador de voz. - num_conv_pos_embedding_groups (
int, opcional, valor predeterminado 16) — Número de grupos de la capa de incrustaciones posicionales convolucionales 1D del codificador de voz. - adaptor_kernel_size (
int, opcional, valor predeterminado 8) — Tamaño del kernel de las capas convolucionales en la red adaptadora. Solo es relevante siadd_adapter is True. - adaptor_stride (
int, opcional, valor predeterminado 8) — Paso de las capas convolucionales en la red adaptadora. Solo es relevante siadd_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 siadd_adapter is True. - position_embeddings_type (
str, opcional, valor predeterminado"relative") — Puede especificarse comorelativeorotarypara embeddings de posición relativos o rotatorios, respectivamente. Si se deja enNone, no se aplica ningún embedding de posición relativo. Solo se aplica al codificador de voz. - rotary_embedding_base (
int, opcional, valor predeterminado 10000) — Si se usan embeddings de posición"rotary", define el tamaño de la base del embedding. Solo se aplica al codificador de voz. - max_source_positions (
int, opcional, valor predeterminado 4096) — si se usan embeddings de posición"relative", define las posiciones de entrada de origen máximas. Solo se aplica al codificador de voz. - 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. - 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_decoder_start_token_id (
int, opcional, valor predeterminado 2) — Si un modelo codificador-decodificador inicia la decodificación con un token diferente de bos, el id de ese token. Solo se aplica al modelo seq2seq de texto a unidad. - t2u_max_new_tokens (
int, opcional, valor predeterminado 1024) — El número máximo de tokens de unidad a generar, ignorando el número de tokens del prompt. 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 2048) — 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). - sampling_rate (
int, opcional, valor predeterminado16000) — 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]olist[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]olist[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]olist[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]]olist[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 SeamlessM4T. Define el número de tokens de unidad diferentes que pueden representarse mediante losinputs_idspasados al llamar al vocoder de ~SeamlessM4TModel, ~SeamlessM4TForSpeechToSpeech o ~SeamlessM4TForTextToSpeech. - 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 det2u_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 predeterminadoTrue) — Si se deben vincular las matrices de pesos de embeddings según el mapeotied_weights_keysdel modelo.
Esta es la clase de configuración para almacenar la configuración de un SeamlessM4TModel. Se utiliza para instanciar un modelo Seamless M4T 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 SeamlessM4TModel, SeamlessM4TConfig
>>> # Initializing a SeamlessM4T "facebook/hf-seamless-m4t-medium" style configuration
>>> configuration = SeamlessM4TConfig()
>>> # Initializing a model from the "facebook/hf-seamless-m4t-medium" style configuration
>>> model = SeamlessM4TModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configSeamlessM4TTokenizer
clase transformers.SeamlessM4TTokenizer
< source >( vocab: str | dict[str, int] | None = Nonemerges: str | list[str] | None = Nonebos_token = '<s>'eos_token = '</s>'sep_token = '</s>'cls_token = '<s>'unk_token = '<unk>'pad_token = '<pad>'src_lang = 'eng'tgt_lang = 'fra'additional_special_tokens = Nonekeep_accents = Nonevocab_file = None**kwargs )
Parámetros
- vocab (
listodict, opcional) — Lista de tuplas (token, score) o diccionario que mapea tokens a índices. Si no se proporciona, se utiliza el vocabulario predeterminado. - merges (
strolist, opcional) — Lista de reglas de fusión para el modelo BPE. Si no se proporciona, se utiliza una lista vacía. - bos_token (
str, opcional, por defecto"<s>") — El token de inicio de secuencia que se utilizó durante el preentrenamiento. Puede usarse como token de clasificador de secuencias. Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el inicio de la secuencia. El token que se utiliza es cls_token.Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el inicio de la secuencia. El token que se utiliza es
cls_token. - eos_token (
str, opcional, por defecto es"</s>") — El token de fin de secuencia. Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el fin de la secuencia. El token que se utiliza es sep_token.Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el final de la secuencia. El token que se utiliza es
sep_token. - sep_token (
str, opcional, valor predeterminado"</s>") — El token separador, que se utiliza al construir una secuencia a partir de varias secuencias, por ejemplo, dos secuencias para la clasificación de secuencias o un texto y una pregunta para la respuesta a preguntas. También se utiliza como el último token de una secuencia construida con tokens especiales. - cls_token (
str, opcional, valor predeterminado"<s>") — El token clasificador que se utiliza al realizar clasificación de secuencias (clasificación de la secuencia completa en lugar de clasificación por token). Es el primer token de la secuencia cuando se construye con tokens especiales. - unk_token (
str, opcional, valor predeterminado"<unk>") — El token desconocido. Un token que no está en el vocabulario no se puede convertir en un ID y se establece como este token en su lugar. - pad_token (
str, opcional, valor predeterminado"<pad>") — El token utilizado para el relleno, por ejemplo, al agrupar secuencias de diferentes longitudes. - src_lang (
str, opcional, valor predeterminado"eng") — El idioma que se usará como idioma de origen para la traducción. - tgt_lang (
str, opcional, valor predeterminado"fra") — El idioma que se usará como idioma de destino para la traducción. - additional_special_tokens (tupla o lista de
strotokenizers.AddedToken, opcional) — Una tupla o una lista de tokens especiales adicionales.
Construye un tokenizador SeamlessM4T (respaldado por la biblioteca tokenizers de HuggingFace). Basado en BPE.
Este tokenizador hereda de TokenizersBackend, que contiene la mayoría de los métodos principales. Los usuarios deben consultar esta superclase para obtener más información sobre dichos métodos.
El método de tokenización es <language code> <tokens> <eos> para documentos del idioma de origen y <eos> <language code> <tokens> <eos> para documentos del idioma de destino.
Ejemplos:
>>> from transformers import SeamlessM4TTokenizer
>>> tokenizer = SeamlessM4TTokenizer.from_pretrained(
... "facebook/hf-seamless-m4t-medium", src_lang="eng", tgt_lang="fra"
... )
>>> example_english_phrase = " UN Chief Says There Is No Military Solution in Syria"
>>> expected_translation_french = "Le chef de l'ONU affirme qu'il n'y a pas de solution militaire en Syrie."
>>> inputs = tokenizer(example_english_phrase, text_target=expected_translation_french, return_tensors="pt")__call__
< source >( text: str | list[str] | list[list[str]] | None = Nonetext_pair: str | list[str] | list[list[str]] | None = Nonetext_target: str | list[str] | list[list[str]] | None = Nonetext_pair_target: str | list[str] | list[list[str]] | None = Nonepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsepad_to_multiple_of: int | None = Nonesrc_lang: str | None = Nonetgt_lang: str | None = None**kwargs )
Parámetros
- text (
str,list[str],list[list[str]], opcional) — La secuencia o lote de secuencias que se codificarán. Cada secuencia puede ser una cadena de caracteres o una lista de cadenas de caracteres (cadenas pre-tokenizadas). Si las secuencias se proporcionan como lista de cadenas de caracteres (pre-tokenizadas), debe estableceris_split_into_words=True(para eliminar la ambigüedad con un lote de secuencias). - text_pair (
str,list[str],list[list[str]], opcional) — La secuencia o lote de secuencias que se codificarán. Cada secuencia puede ser una cadena de caracteres o una lista de cadenas de caracteres (cadena pre-tokenizada). Si las secuencias se proporcionan como lista de cadenas de caracteres (pre-tokenizadas), debe estableceris_split_into_words=True(para eliminar la ambigüedad con un lote de secuencias). - text_target (
str,list[str],list[list[str]], opcional) — La secuencia o lote de secuencias que se codificarán como textos objetivo. Cada secuencia puede ser una cadena de caracteres o una lista de cadenas de caracteres (cadena pretokenizada). Si las secuencias se proporcionan como lista de cadenas de caracteres (pretokenizadas), debe estableceris_split_into_words=True(para eliminar la ambigüedad con un lote de secuencias). - text_pair_target (
str,list[str],list[list[str]], opcional) — La secuencia o lote de secuencias que se codificarán como textos objetivo. Cada secuencia puede ser una cadena de caracteres o una lista de cadenas de caracteres (cadena pretokenizada). Si las secuencias se proporcionan como lista de cadenas de caracteres (pretokenizadas), debe estableceris_split_into_words=True(para eliminar la ambigüedad con un lote de secuencias). - padding (
bool,stro PaddingStrategy, opcional, por defectoFalse) — Seleccione una estrategia para rellenar las secuencias devueltas (según el lado de relleno y el índice de relleno del modelo) entre:Trueo'longest': Rellena hasta la secuencia más larga del lote (o no aplica relleno si solo se proporciona una secuencia).'max_length': Rellena hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento.Falseo'do_not_pad'(predeterminado): Sin relleno (es decir, puede generar un lote con secuencias de diferentes longitudes).
- pad_to_multiple_of (
int, opcional, por defecto esNone) — Si se establece, rellenará la secuencia hasta un múltiplo del valor proporcionado.Esto resulta especialmente útil para habilitar el uso de Tensor Cores en hardware de NVIDIA con capacidad de cálculo
>= 7.5(Volta). - src_lang (
str, opcional) — Una cadena que representa el idioma de origen. Si no se especifica, se utilizará el últimosrc_langespecificado (ya sea durante la inicialización o al llamar a este tokenizador). - tgt_lang (
str, opcional) — Una cadena que representa el idioma objetivo. Si no se especifica, se utilizará el últimotgt_langespecificado (ya sea durante la inicialización o al llamar a este tokenizador). - kwargs (opcional) — Diccionario restante de argumentos por palabra clave que se pasará a TokenizersBackend.call().
get_special_tokens_mask
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
Parámetros
- token_ids_0 — Lista de IDs de la secuencia (posiblemente ya formateada).
- token_ids_1 — No se usa cuando
already_has_special_tokens=True. Debe ser None en ese caso. - already_has_special_tokens — Indica si la secuencia ya está formateada con tokens especiales.
Devuelve
Una lista de enteros en el rango [0, 1]
1 para un token especial, 0 para un token de secuencia.
Obtener los ids de secuencia de una lista de tokens a la que no se le han añadido tokens especiales.
Para los tokenizadores rápidos, los collators de datos llaman a esto con already_has_special_tokens=True para construir una máscara sobre una secuencia ya formateada. En ese caso, calculamos la máscara comprobando la pertenencia en all_special_ids.
SeamlessM4TFeatureExtractor
clase transformers.SeamlessM4TFeatureExtractor
< source >( feature_size = 80sampling_rate = 16000num_mel_bins = 80padding_value = 0.0stride = 2**kwargs )
Parámetros
- feature_size (
int, opcional, valor predeterminado 80) — La dimensión de las características de las características extraídas. - sampling_rate (
int, opcional, valor predeterminado 16000) — La tasa de muestreo a la que deben digitalizarse los archivos de audio, expresada en hercios (Hz). - num_mel_bins (
int, opcional, valor predeterminado 80) — Número de bins de frecuencia Mel. - padding_value (
float, opcional, valor predeterminado 0.0) — El valor que se utiliza para rellenar los vectores de relleno. - stride (
int, opcional, valor predeterminado 2) — Paso utilizado para redimensionar los audios de la forma (batch_size,num_frames,num_mel_bins) a (batch_size,num_frames//stride,num_mel_bins*stride).
Construye un extractor de características de SeamlessM4T.
Este extractor de características hereda de SequenceFeatureExtractor, que contiene la mayoría de los métodos principales. Los usuarios deben consultar esta superclase para obtener más información sobre dichos métodos.
Esta clase extrae características de banco de filtros mel de la voz cruda.
__call__
< source >( raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]]padding: bool | str | transformers.utils.generic.PaddingStrategy = Truepad_to_multiple_of: int | None = 2max_length: int | None = Nonetruncation: bool = Falsereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonesampling_rate: int | None = Nonereturn_attention_mask: bool | None = Nonedo_normalize_per_mel_bins: bool | None = True**kwargs )
Parámetros
- raw_speech (
np.ndarray,torch.Tensor,list[float],list[np.ndarray],list[torch.Tensor], — -
list[list[float]],list[list[list[float]]]) — La secuencia o lote de secuencias que se debe rellenar. Cada secuencia puede ser un array de numpy, un tensor de torch, una lista de valores float, una lista de arrays de numpy, una lista de tensors de torch, una lista de listas de valores float o una lista de una lista de una lista de valores float. Siraw_speeches unnp.ndarray,torch.Tensoro unalist[float]de una dimensión,raw_speechse considera un sonido de un solo canal y una sola muestra. En todos los demás casos, la primera dimensión deraw_speech, ya sea de unnp.ndarray, untorch.Tensoro unalist[...], corresponde al número de muestras del lote, y el número de canales (es decir, el carácter mono o estéreo) se deriva de las otras dimensiones (1D -> lotes de formas de onda de un solo canal; 2D-> lotes de formas de onda de canal estéreo). - padding (
bool,stro PaddingStrategy, opcional, por defectoTrue) — Seleccione una estrategia para rellenar las secuencias devueltas (según el lado de relleno y el índice de relleno del modelo) entre:Trueo'longest': Rellena hasta la secuencia más larga del lote (o no aplica relleno si solo se proporciona una secuencia).'max_length': Rellena hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento.Falseo'do_not_pad'(predeterminado): Sin relleno (es decir, puede generar un lote con secuencias de diferentes longitudes).
- pad_to_multiple_of (
int, opcional, valor predeterminado 2) — Si se establece, rellenará la secuencia hasta un múltiplo del valor proporcionado.Esto resulta especialmente útil para habilitar el uso de Tensor Cores en hardware de NVIDIA con capacidad de cálculo
>= 7.5(Volta), o en TPUs, que se benefician de que las longitudes de secuencia sean un múltiplo de 128. - max_length (
int, opcional) — Longitud máxima de la lista devuelta y, opcionalmente, longitud de relleno (véase arriba). - truncation (
bool) — Activa la truncación para recortar las secuencias de entrada más largas que max_length a max_length. - return_attention_mask (
bool, opcional) — Si se debe devolver la máscara de atención. Si se deja en el valor predeterminado, se devolverá la máscara de atención según el valor predeterminado del feature_extractor específico.¿Qué son las máscaras de atención?
Para los modelos SeamlessM4T,
attention_masksiempre debe pasarse en la inferencia por lotes para evitar errores sutiles. - return_tensors (
stro TensorType, opcional) — Si se establece, devolverá tensores en lugar de una lista de enteros de Python. Los valores aceptables son:'pt': Devuelve objetostorch.Tensorde PyTorch.'np': Devuelve objetos Numpynp.ndarray.
- sampling_rate (
int, opcional) — La tasa de muestreo a la que se muestreó la entradaraw_speech. Se recomienda encarecidamente pasarsampling_rateen la llamada forward para evitar errores silenciosos. - do_normalize_per_mel_bins (
bool, opcional, valor predeterminadoTrue) — Si se debe normalizar la entrada por canal mel con media cero y varianza unitaria. - kwargs (opcional) — Diccionario restante de argumentos por nombre que se pasará al tokenizador o al extractor de características.
Método principal para extraer características y preparar una o varias secuencias para el modelo.
SeamlessM4TProcessor
clase transformers.SeamlessM4TProcessor
< source >( feature_extractortokenizer )
Construye un SeamlessM4TProcessor que envuelve un extractor de características y un tokenizador en un único procesador.
SeamlessM4TProcessor ofrece todas las funcionalidades de SeamlessM4TFeatureExtractor y SeamlessM4TTokenizer. Consulte ~SeamlessM4TFeatureExtractor y ~SeamlessM4TTokenizer para obtener más información.
__call__
< source >( text: str | list[str] | list[list[str]] | None = Noneaudio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = None**kwargs: *<class 'transformers.processing_utils.ProcessingKwargs'> ) → BatchEncoding
Parámetros
- text (
Union[str, list[str], list[list[str]]], opcional) — La secuencia o lote de secuencias que se codificarán. Cada secuencia puede ser una cadena de caracteres o una lista de cadenas de caracteres (cadenas pre-tokenizadas). Si se pasa una entrada pre-tokenizada, establezcais_split_into_words=Truepara evitar ambigüedad con las entradas por lotes. - audio (
Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]], opcional) — El audio o lote de audios que se va a preparar. Cada audio puede ser un array de NumPy o un tensor de PyTorch. En el caso de un array de NumPy/tensor de PyTorch, cada audio debe tener la forma (C, T), donde C es el número de canales y T es la longitud de la muestra del audio. - return_tensors (
stro TensorType, opcional) — Si se establece, devolverá tensores de un marco de trabajo específico. Los valores aceptables son:'pt': Devuelve objetostorch.Tensorde PyTorch.'np': Devuelve objetosnp.ndarrayde NumPy.
- **kwargs (ProcessingKwargs, opcional) — Opciones de procesamiento adicionales para cada modalidad (texto, imágenes, videos, audio). Los parámetros específicos del modelo se enumeran arriba; consulte la clase TypedDict para obtener la lista completa de argumentos admitidos.
Devuelve
Un BatchEncoding con los siguientes campos:
- input_ids — Lista de ids de tokens que se enviarán a un modelo. Se devuelve cuando
textno esNone. - attention_mask — Lista de índices que especifica qué tokens deben ser atendidos por el modelo (cuando
return_attention_mask=Trueo si “attention_mask” está enself.model_input_namesy sitextno esNone). - input_features — Características de entrada de audio que se enviarán a un modelo. Se devuelve cuando
audiosno esNone.
SeamlessM4TCodeHifiGan
clase transformers.SeamlessM4TCodeHifiGan
< source >( config: SeamlessM4TConfig )
Parámetros
- config (SeamlessM4TConfig) — 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.
Código del vocoder HiFi-GAN tal como se describe en este repositorio.
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
< source >( input_ids: LongTensorspkr_id: Tensorlang_id: Tensor**kwargs )
Parámetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length)) — Índices de los tokens de la secuencia de entrada en el vocabulario.Los índices se pueden obtener usando SeamlessM4TTextToUnitForConditionalGeneration. ¿Qué son los IDs de entrada?
- spkr_id (
int, opcional) — El identificador del orador utilizado para la síntesis de voz. Debe ser menor queconfig.vocoder_num_spkrs. - tgt_lang (
str, opcional) — El identificador de idioma que se usará como idioma de destino para la traducción.
SeamlessM4THifiGan
forward
< source >( inputs_embeds: Tensor ) → torch.Tensor
Parámetros
- spectrogram (
torch.Tensor) — Tensor que contiene los espectrogramas log-mel. Puede estar agrupado (batched) y tener forma(batch_size, sequence_length, model_in_dim), o no agrupado y tener forma(sequence_length, model_in_dim). Tenga en cuenta quemodel_in_dimes la suma deconfig.unit_embed_dim,config.lang_embed_dimyconfig.spkr_embed_dim.
Devuelve
torch.Tensor
Tensor que contiene la forma de onda del habla. Si el espectrograma de entrada está agrupado, tendrá la forma (batch_size, num_frames,). Si no está agrupado, tendrá la forma (num_frames,).
Convierte un espectrograma log-mel en una forma de onda de voz. Al pasar un lote de espectrogramas log-mel, devuelve un lote de formas de onda de voz. Al pasar un espectrograma log-mel individual, sin lote, devuelve una forma de onda de voz individual, sin lote.
SeamlessM4TTextToUnitModel
clase transformers.SeamlessM4TTextToUnitModel
< source >( config: SeamlessM4TConfigembed_tokens_decoder: typing.Optional[torch.nn.Embedding] = None )
Parámetros
- config (SeamlessM4TConfig) — 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.
- embed_tokens_decoder (
nn.Embedding, opcional) — incrustación de entrada del decodificador.
Codificador-decodificador de texto a unidades sin procesar de Transformer. El codificador es un SeamlessM4TEncoder sin incrustaciones y el decodificador es un SeamlessM4TDecoder.
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
< 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] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqModelOutput or tuple(torch.Tensor)
Parámetros
- input_ids (
torch.LongTensorde 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.
- attention_mask (
torch.Tensorde 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.
- decoder_input_ids (
torch.LongTensorde 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?Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
- decoder_attention_mask (
torch.LongTensorde forma(batch_size, target_sequence_length), opcional) — Máscara para evitar realizar atención en ciertos índices de tokens. De forma predeterminada, se utilizará una máscara causal para asegurarse de que el modelo solo pueda mirar las entradas anteriores para predecir el futuro. - encoder_outputs (
tuple[tuple[torch.Tensor]], opcional) — La tupla consiste en (last_hidden_state, opcional:hidden_states, opcional:attentions)last_hidden_statede 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 lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.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 losinput_idsno 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 losinput_idscon forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - decoder_inputs_embeds (
torch.Tensorde forma(batch_size, target_sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasardecoder_input_idspuede optar por pasar directamente una representación incrustada. Sipast_key_valuesse usa, opcionalmente solo la últimadecoder_inputs_embedsdebe ser introducida (verpast_key_values). Esto es útil si se desea tener más control sobre cómo convertirdecoder_input_idsíndices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.Si
decoder_input_idsydecoder_inputs_embedsno están configurados,decoder_inputs_embedstoma el valor deinputs_embeds. - use_cache (
bool, opcional) — Si se establece enTrue, se devuelven los estados de clave-valor depast_key_valuesy pueden usarse para acelerar la decodificación (verpast_key_values).
Devuelve
Seq2SeqModelOutput o tuple(torch.Tensor)
Un Seq2SeqModelOutput 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 (SeamlessM4TConfig) y las entradas.
El método forward de SeamlessM4TTextToUnitModel reemplaza 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
Moduledespué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.
last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del decodificador del modelo.Si se utiliza
past_key_values, solo se genera el último hidden-state de las secuencias con forma(batch_size, 1, hidden_size).past_key_values (
EncoderDecoderCache, opcional, se devuelve cuando se pasause_cache=Trueo cuandoconfig.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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 opcionales de la incrustación inicial.
decoder_attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 opcionales de la incrustación inicial.
encoder_attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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.
SeamlessM4TTextToUnitForConditionalGeneration
clase transformers.SeamlessM4TTextToUnitForConditionalGeneration
< source >( config: SeamlessM4TConfigembed_tokens_decoder: typing.Optional[torch.nn.Embedding] = None )
Parámetros
- config (SeamlessM4TConfig) — 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.
- embed_tokens_decoder (
nn.Embedding, opcional) — incrustación de entrada del decodificador.
Codificador-decodificador de texto a unidades Transformer con una cabeza de modelo de lenguaje. El modelo codificador-decodificador base es un SeamlessM4TTextToUnit.
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
< 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 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.
- attention_mask (
torch.Tensorde 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.
- decoder_input_ids (
torch.LongTensorde 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_idcomo el token inicial para la generación dedecoder_input_ids. Si se utilizapast_key_values, opcionalmente solo se deben introducir los últimosdecoder_input_ids(verpast_key_values).Para el entrenamiento de traducción y resumen, se debe proporcionar
decoder_input_ids. Si no se proporcionadecoder_input_ids, el modelo creará este tensor desplazandoinput_idshacia la derecha para el preentrenamiento de desruido, siguiendo el artículo. - decoder_attention_mask (
torch.LongTensorde forma(batch_size, target_sequence_length), opcional) — Comportamiento predeterminado: genera un tensor que ignora los tokens de relleno endecoder_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_masky 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_statede 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 lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.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 losinput_idsno 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 losinput_idscon forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_idspuede optar por pasar directamente una representación incrustada. Esto es útil si desea tener más control sobre cómo convertirinput_idsíndices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.labels (
torch.LongTensorde 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 deinput_ids). Los tokens con índices establecidos en-100se ignoran (se enmascaran); la pérdida solo se calcula para los tokens con etiquetas en[0, ..., config.vocab_size] - decoder_inputs_embeds (
torch.Tensorde forma(batch_size, target_sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasardecoder_input_idspuede optar por pasar directamente una representación incrustada. Sipast_key_valuesse usa, opcionalmente solo la últimadecoder_inputs_embedsdebe ser introducida (verpast_key_values). Esto es útil si se desea tener más control sobre cómo convertirdecoder_input_idsíndices en vectores asociados que la matriz de búsqueda de incrustaciones interna del modelo.Si
decoder_input_idsydecoder_inputs_embedsno están configurados,decoder_inputs_embedstoma el valor deinputs_embeds. - labels (
torch.LongTensorde 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 deinput_ids). Los tokens con índices establecidos en-100se 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 enTrue, se devuelven los estados de clave-valor depast_key_valuesy pueden usarse para acelerar la decodificación (verpast_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 (SeamlessM4TConfig) y las entradas.
El método forward de SeamlessM4TTextToUnitForConditionalGeneration 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
Moduledespué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.Tensorde forma(1,), opcional, se devuelve cuando se proporcionalabels) — Pérdida de modelado de lenguaje.logits (
torch.Tensorde 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 pasause_cache=Trueo cuandoconfig.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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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.