Transformers documentation
Granite Speech Plus
Este modelo foi contribuído para o Hugging Face Transformers em 29/04/2026.
Granite Speech Plus
Visão geral
Granite Speech Plus é uma variante do Granite Speech cujo projetor consome a concatenação dos estados ocultos finais do codificador com um subconjunto arbitrário de seus estados ocultos intermediários (ao longo da dimensão de recursos). As camadas intermediárias selecionadas são controladas pelo campo de configuração cat_hidden_layers em GraniteSpeechPlusEncoderConfig; quando é None, o modelo se comporta de forma idêntica ao Granite Speech. Quando definido, o encoder_hidden_size do projetor deve ser igual a encoder_config.hidden_dim * (len(cat_hidden_layers) + 1).
O restante da arquitetura — codificador de fala, projetor do transformador de consulta, modelo de linguagem e adaptador LoRA opcional — é herdado sem alterações do Granite Speech. Consulte a documentação do Granite Speech para exemplos de uso; o mesmo GraniteSpeechProcessor e GraniteSpeechFeatureExtractor são utilizados aqui.
Uso
Granite Speech Plus é um modelo multimodal de fala para texto que pode transcrever áudio, fornecer anotação de falantes e timestamps no nível de palavras ao responder a prompts de texto. Veja como usar as diferentes funções:
Configuração — carregue o modelo e um clipe de áudio de teste:
import re
import torch
from datasets import Audio, load_dataset
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
SAMPLE_RATE = 16000
MODEL_NAME = "ibm-granite/granite-speech-4.1-2b-plus"Defina os prompts usados para as diferentes tarefas:
SYSTEM_PROMPT = "Knowledge Cutoff Date: April 2024.\nToday's Date: December 19, 2024.\nYou are Granite, developed by IBM. You are a helpful AI assistant"
ASR_PROMPT = "<|audio|> can you transcribe the speech into a written format?"
SAA_PROMPT = "<|audio|> Speaker attribution: Transcribe and denote who is speaking by adding [Speaker 1]: and [Speaker 2]: tags before speaker turns."
TS_PROMPT = "<|audio|> Timestamps: Transcribe the speech. After each word, add a timestamp tag showing the end time in centiseconds, e.g. hello [T:45] world [T:82]"Carregue o modelo e defina uma função geral para decodificar o áudio:
processor = AutoProcessor.from_pretrained(MODEL_NAME)
model = AutoModelForSpeechSeq2Seq.from_pretrained(MODEL_NAME, device_map="auto")
@torch.inference_mode()
def transcribe(audio, prompt, max_new_tokens=2000, prefix_text=None):
chat = [{"role": "system", "content": SYSTEM_PROMPT}, {"role": "user", "content": prompt}]
extra = {"prefix_text": prefix_text} if prefix_text is not None else {}
prompt_text = processor.apply_chat_template(chat, tokenize=False, add_generation_prompt=True, **extra)
inputs = processor(prompt_text, audio, device=device, return_tensors="pt").to(device)
outputs = model.generate(**inputs, max_new_tokens=max_new_tokens, do_sample=False, num_beams=1)
new_tokens = outputs[0, inputs["input_ids"].shape[-1]:]
output_text = processor.decode(new_tokens, add_special_tokens=False, skip_special_tokens=True)
return output_textCarregue alguns dados de áudio de exemplo do conjunto de dados AMI
ds = load_dataset("diarizers-community/ami", "ihm", split="test")
ds = ds.cast_column("audio", Audio(sampling_rate=SAMPLE_RATE, num_channels=1))
TEST_SAMPLE = 0
START_TIME, END_TIME = 5 * 60, 6 * 60
audio = ds["audio"][TEST_SAMPLE].get_samples_played_in_range(START_TIME, END_TIME)Tarefa 1: ASR — transcrição simples de fala para texto:
asr_text = transcribe(audio.data, ASR_PROMPT)
print(asr_text)Tarefa 2: ASR com atribuição de falante — transcrição com rótulos de falante:
saa_text = transcribe(audio.data, SAA_PROMPT)
for segment in re.split(r"(\[Speaker \d+\]:)", saa_text):
print(segment.strip())Tarefa 3: Carimbos de data e hora por palavra — transcrição com cronometragem por palavra:
Os timestamps são fornecidos em centesssegundos e são módulo 1000 (= 10 segundos), portanto, precisamos desdobrá-los somando múltiplos de 10 segundos.
ts_text = transcribe(audio.data, TS_PROMPT, max_new_tokens=10000)
ts_words = re.split(r"\[T:(\d+)\]", ts_text)
last_word_end_time = 0
offset_time = 0
for word, ts in zip(ts_words[::2], ts_words[1::2]):
word_end_time = float(ts) / 100
while word_end_time + offset_time < last_word_end_time:
offset_time += 10
last_word_end_time = word_end_time + offset_time
print(f"{word}\t{last_word_end_time:.2f}s")Tarefa 4: Decodificação incremental — transcreva segmentos enquanto acumula o contexto de áudio:
NUM_SEGMENTS = 3
previous_transcript = ""
all_audio = None
for k in range(NUM_SEGMENTS):
t1 = START_TIME + (END_TIME - START_TIME) * k / NUM_SEGMENTS
t2 = START_TIME + (END_TIME - START_TIME) * (k + 1) / NUM_SEGMENTS
new_audio = ds["audio"][TEST_SAMPLE].get_samples_played_in_range(t1, t2)
all_audio = new_audio.data if all_audio is None else torch.cat([all_audio, new_audio.data], dim=-1)
saa_text = transcribe(all_audio, SAA_PROMPT, prefix_text=previous_transcript)
print(f"{t1:06.2f}-{t2:06.2f}:\t{saa_text}")
previous_transcript = (previous_transcript + " " + saa_text).strip()GraniteSpeechPlusConfig
classe transformers.GraniteSpeechPlusConfig
< 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 = 0is_encoder_decoder: bool = Falseid2label: 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 = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneencoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneprojector_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneaudio_token_index: int = 49155initializer_range: float = 0.02has_lora_adapter: bool = Truedownsample_rate: int = 5window_size: int = 15tie_word_embeddings: bool = True )
Parâmetros
- text_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — O objeto de configuração ou dicionário do backbone de texto. - encoder_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — O objeto de configuração ou dicionário do backbone do codificador. - projector_config (
Union[AutoConfig, dict], opcional, padrãoBlip2QFormerConfig) — O objeto de configuração ou dicionário do projetor de áudio. - audio_token_index (
int, opcional, padrão49155) — O índice do token de áudio usado como marcador para o áudio de entrada. - initializer_range (
float, opcional, padrão0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos. - has_lora_adapter (
bool, opcional, padrãoTrue) — Indica se o modelo possui um adaptador lora que deve ser ativado apenas ao processar entradas de áudio. - downsample_rate (
int, opcional, padrão 5) — Taxa de redução de amostragem para o extrator de recursos de áudio. - window_size (
int, opcional, padrão 15) — Tamanho da janela para o projetor de recursos de áudio. - tie_word_embeddings (
bool, opcional, padrãoTrue) — Se deve vincular as embeddings de pesos de acordo com o mapeamentotied_weights_keysdo modelo.
Esta é a classe de configuração para armazenar a configuração de um GraniteSpeechPlusModel. Ela é usada para instanciar um modelo Granite Speech Plus de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do ibm-granite/granite-speech-4.1-2b-plus
Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.
Exemplo:
>>> from transformers import GraniteSpeechPlusConfig, GraniteSpeechPlusForConditionalGeneration
>>> # Initializing a GraniteSpeechPlusConfig
>>> configuration = GraniteSpeechPlusConfig()
>>> # Initializing a GraniteSpeechPlusForConditionalGeneration (with random weights)
>>> model = GraniteSpeechPlusForConditionalGeneration(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configGraniteSpeechPlusEncoderConfig
classe transformers.GraniteSpeechPlusEncoderConfig
< 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 = 0is_encoder_decoder: bool = Falseid2label: 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 = Noneinput_dim: int = 160num_layers: int = 10hidden_dim: int = 1024feedforward_mult: int = 4num_heads: int = 8dim_head: int | None = Noneoutput_dim: int = 42context_size: int = 200max_pos_emb: int = 512dropout: float | int = 0.1conv_kernel_size: int = 15conv_expansion_factor: int = 2cat_hidden_layers: list[int] | None = None )
Parâmetros
- input_dim (int, opcional, padrão 160) — Dimensão das características acústicas de entrada (por exemplo, número de canais do filtro mel).
- num_layers (int, opcional, padrão 10) — Número de camadas ocultas no decodificador do Transformer.
- hidden_dim (int, opcional, padrão 1024) — Dimensão das representações ocultas.
- feedforward_mult (int, opcional, padrão 4) — Multiplicador para as projeções up/down nas camadas feedforward do codificador; As projeções terão uma dimensão intermediária de tamanho hidden_dim feedforward_mult*.
- num_heads (int, opcional, padrão 8) — Número de cabeças de atenção para cada camada de atenção no decodificador do Transformer.
- dim_head (int, opcional) — A dimensão da cabeça de atenção. Se for None, o valor padrão será hidden_size // num_attention_heads
- output_dim (int, opcional, padrão 42) — Dimensão intermediária das projeções feedforward no conformer a ser adicionada à saída de cada outro bloco do codificador.
- context_size (int, opcional, padrão 200) — Tamanho de contexto a ser usado na atenção do conformer.
- max_pos_emb (int, opcional, padrão 512) — Máximo de embeddings posicionais a serem usados na atenção (codificação posicional relativa de Shaw).
- dropout (Union[float, int], opcional, padrão 0.1) — A proporção para todas as camadas de dropout.
- conv_kernel_size (int, opcional, padrão 15) — O tamanho do kernel de convolução.
- conv_expansion_factor (int, opcional, padrão 2) — Dimensão intermediária a ser usada nas convoluções do conformer.
- cat_hidden_layers (list[int], opcional) —
Índices das camadas conformer do codificador cujas saídas são concatenadas com a saída final do codificador (ao longo da dimensão de recursos) antes de serem passadas ao projetor. Quando definido, o
encoder_hidden_sizedo projetor deve ser igual aencoder_config.hidden_dim * (len(cat_hidden_layers) + 1).
Esta é a classe de configuração para armazenar a configuração de um GraniteSpeechPlusModel. Ela é usada para instanciar um modelo Granite Speech Plus de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do ibm-granite/granite-speech-4.1-2b-plus
Os objetos de configuração herdam de [PreTrainedConfig] e podem ser usados para controlar as saídas do modelo. Leia a documentação de [PreTrainedConfig] para mais informações.
Exemplo:
>>> from transformers import GraniteSpeechPlusEncoderConfig, GraniteSpeechPlusCTCEncoder
>>> # Initializing a GraniteSpeechPlusEncoderConfig
>>> configuration = GraniteSpeechPlusEncoderConfig()
>>> # Initializing a GraniteSpeechPlusCTCEncoder (with random weights)
>>> model = GraniteSpeechPlusCTCEncoder(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configGraniteSpeechPlusModel
classe transformers.GraniteSpeechPlusModel
< source >( config: GraniteSpeechPlusConfig )
Parâmetros
- config (GraniteSpeechPlusConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
O modelo Granite Speech, que consiste em um codificador de áudio, um projetor e um modelo de linguagem, sem uma cabeça de modelagem de linguagem.
Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)
Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.Tensor] = Noneinput_features_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → GraniteSpeechPlusModelOutputWithPast or tuple(torch.Tensor)
Parâmetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices dos tokens da sequência de entrada no vocabulário. O padding será ignorado por padrão.Os índices podem ser obtidos usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.
- input_features (
torch.Tensorde forma(batch_size, sequence_length, feature_dim), opcional) — Os tensores correspondentes às características de áudio de entrada. As características de áudio podem ser obtidas usando GraniteSpeechFeatureExtractor. ConsulteGraniteSpeechFeatureExtractor.__call__()para detalhes (GraniteSpeechProcessor usa GraniteSpeechFeatureExtractor para processar áudios). - input_features_mask (
torch.Tensor, opcional) — Máscara a ser aplicada aos recursos de áudio antes de serem dispersos nos embeddings de linguagem. - attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar a execução de atenção nos índices de tokens de preenchimento. Valores de máscara selecionados em[0, 1]:- 1 para tokens que não estão mascarados,
- 0 para tokens que estão mascarados.
- position_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices das posições dos tokens de cada sequência de entrada nos embeddings de posição. Selecionados no intervalo[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção e nos blocos de atenção cruzada) que podem ser usados para acelerar a decodificação sequencial. Isso geralmente consiste nopast_key_valuesretornado pelo modelo em uma etapa anterior da decodificação, quandouse_cache=Trueouconfig.use_cache=True.Apenas uma instância de Cache é permitida como entrada, consulte nosso guia de cache de kv. Se nenhum
past_key_valuesfor passado, DynamicCache será inicializado por padrão.O modelo sairá no mesmo formato de cache que é fornecido como entrada.
Se
past_key_valuesforem usados, espera-se que o usuário insira apenas osinput_idsnão processados (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo) com a forma(batch_size, unprocessed_length), em vez de todos osinput_idscom a forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passarinput_ids, você pode escolher passar diretamente uma representação incorporada. Isso é útil se você quiser ter mais controle sobre como converter os índices deinput_idsnos vetores associados do que a matriz de busca de incorporação interna do modelo. - use_cache (
bool, opcional) — Se definido comoTrue, os estados de chave-valorpast_key_valuessão retornados e podem ser usados para acelerar a decodificação (vejapast_key_values).
Retorna
GraniteSpeechPlusModelOutputWithPast ou tuple(torch.Tensor)
Um GraniteSpeechPlusModelOutputWithPast ou uma tupla de
torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (GraniteSpeechPlusConfig) e das entradas.
O método forward do GraniteSpeechPlusModel substitui o método especial __call__.
Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de
Moduleem seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.
last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size)) — Sequência de estados ocultos na saída da última camada do modelo.Se
past_key_valuesfor usado, apenas o último hidden-state das sequências, com forma(batch_size, 1, hidden_size), é retornado.past_key_values (
Cache, opcional, retornado quandouse_cache=Trueé passado ou quandoconfig.use_cache=True) — É uma instância de Cache. Para mais detalhes, consulte nosso guia de cache kv.Contém estados ocultos pré-computados (chaves e valores nos blocos de autoatenção e, opcionalmente, se
config.is_encoder_decoder=True, nos blocos de atenção cruzada) que podem ser usados (veja a entradapast_key_values) para acelerar a decodificação sequencial.hidden_states (
tuple(torch.Tensor), opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do modelo na saída de cada camada, além das saídas opcionais do embedding inicial.
attentions (
tuple(torch.Tensor), opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
audio_hidden_states (
torch.Tensor, opcional) — Estados ocultos de áudio projetados.
GraniteSpeechPlusForConditionalGeneration
classe transformers.GraniteSpeechPlusForConditionalGeneration
< source >( config: GraniteSpeechPlusConfig )
Parâmetros
- config (GraniteSpeechPlusConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
O modelo Granite Speech Plus, uma variante do Granite Speech cujo projetor consome a concatenação dos estados ocultos finais do codificador com um subconjunto arbitrário de seus estados ocultos intermediários.
Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)
Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.Tensor] = Noneinput_features_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs ) → GraniteSpeechPlusCausalLMOutputWithPast or tuple(torch.Tensor)
Parâmetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices dos tokens da sequência de entrada no vocabulário. O padding será ignorado por padrão.Os índices podem ser obtidos usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.
- input_features (
torch.Tensorde forma(batch_size, sequence_length, feature_dim), opcional) — Os tensores correspondentes às características de áudio de entrada. As características de áudio podem ser obtidas usando GraniteSpeechFeatureExtractor. ConsulteGraniteSpeechFeatureExtractor.__call__()para detalhes (GraniteSpeechProcessor usa GraniteSpeechFeatureExtractor para processar áudios). - input_features_mask (
torch.Tensor, opcional) — Máscara a ser aplicada aos recursos de áudio antes de serem dispersos nos embeddings de linguagem. - attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar a execução de atenção nos índices de tokens de preenchimento. Valores de máscara selecionados em[0, 1]:- 1 para tokens que não estão mascarados,
- 0 para tokens que estão mascarados.
- position_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices das posições dos tokens de cada sequência de entrada nos embeddings de posição. Selecionados no intervalo[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção e nos blocos de atenção cruzada) que podem ser usados para acelerar a decodificação sequencial. Isso geralmente consiste nopast_key_valuesretornado pelo modelo em uma etapa anterior da decodificação, quandouse_cache=Trueouconfig.use_cache=True.Apenas uma instância de Cache é permitida como entrada, consulte nosso guia de cache de kv. Se nenhum
past_key_valuesfor passado, DynamicCache será inicializado por padrão.O modelo sairá no mesmo formato de cache que é fornecido como entrada.
Se
past_key_valuesforem usados, espera-se que o usuário insira apenas osinput_idsnão processados (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo) com a forma(batch_size, unprocessed_length), em vez de todos osinput_idscom a forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passarinput_ids, você pode escolher passar diretamente uma representação incorporada. Isso é útil se você quiser ter mais controle sobre como converter os índices deinput_idsnos vetores associados do que a matriz de busca de incorporação interna do modelo. - labels (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Rótulos para o cálculo da perda de modelagem de linguagem mascarada. Os índices devem estar em[0, ..., config.vocab_size]ou ser -100 (veja a docstring deinput_ids). Tokens com índices definidos como-100são ignorados (mascarados); a perda é calculada apenas para os tokens com rótulos em[0, ..., config.vocab_size]. - use_cache (
bool, opcional) — Se definido comoTrue, os estados de chave-valorpast_key_valuessão retornados e podem ser usados para acelerar a decodificação (vejapast_key_values). - logits_to_keep (
Union[int, torch.Tensor], opcional, padrão0) — Se for umint, calcula os logits para os últimoslogits_to_keeptokens. Se for0, calcula os logits para todos osinput_ids(caso especial). Apenas os logits do último token são necessários para a geração, e calculá-los apenas para esse token pode economizar memória, o que se torna bastante significativo para sequências longas ou tamanho de vocabulário grande. Se for umtorch.Tensor, deve ser 1D, correspondendo aos índices a serem mantidos na dimensão de comprimento da sequência. Isso é útil ao usar o formato de tensor empacotado (uma única dimensão para lote e comprimento da sequência).
Retorna
GraniteSpeechPlusCausalLMOutputWithPast ou tuple(torch.Tensor)
Um GraniteSpeechPlusCausalLMOutputWithPast ou uma tupla de
torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos dependendo da configuração (GraniteSpeechPlusConfig) e das entradas.
O método forward de GraniteSpeechPlusForConditionalGeneration sobrescreve o método especial __call__.
Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de
Moduleem seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.
loss (
torch.Tensorde forma(1,), opcional, retornado quandolabelsé fornecido) — Perda de modelagem de linguagem (para previsão do próximo token).logits (
torch.Tensorde forma(batch_size, sequence_length, config.vocab_size)) — Pontuações de previsão da cabeça de modelagem de linguagem (pontuações para cada token do vocabulário antes do SoftMax).past_key_values (
Cache, opcional, retornado quandouse_cache=Trueé passado ou quandoconfig.use_cache=True) — É uma instância de Cache. Para mais detalhes, consulte nosso guia de cache kv.Contém estados ocultos pré-computados (chaves e valores nos blocos de autoatenção) que podem ser usados (veja a entrada
past_key_values) para acelerar a decodificação sequencial.hidden_states (
tuple[torch.Tensor], opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do modelo na saída de cada camada, além das saídas opcionais do embedding inicial.
attentions (
tuple[torch.Tensor], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
audio_hidden_states (
torch.Tensor, opcional) — Estados ocultos de áudio projetados.
Exemplo:
>>> from transformers import AutoProcessor, GraniteSpeechPlusForConditionalGeneration
>>> 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("ibm-granite/granite-speech-4.1-2b-plus")
>>> model = GraniteSpeechPlusForConditionalGeneration.from_pretrained("ibm-granite/granite-speech-4.1-2b-plus")
>>> # 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)
...