Transformers documentation
Granite Speech Plus
このモデルは2026年4月29日にHugging Face Transformersに貢献されました。
Granite Speech Plus
概要
Granite Speech Plus は Granite Speech のバリアントであり、そのプロジェクターは、エンコーダーの最終層の隠れ状態と、その中間層の隠れ状態の任意の部分集合を(特徴量次元に沿って)連結したものを消費します。選択される中間層は、GraniteSpeechPlusEncoderConfig の cat_hidden_layers 設定フィールドによって制御されます。None の場合、モデルは Granite Speech と完全に同じ挙動をします。設定されている場合、プロジェクターの encoder_hidden_size は encoder_config.hidden_dim * (len(cat_hidden_layers) + 1) と等しくなければなりません。
アーキテクチャの残りの部分、すなわち音声エンコーダー、クエリトランスフォーマープロジェクター、言語モデル、および任意のLoRAアダプターは、Granite Speechから変更なしに継承されています。使用例については、Granite Speechのドキュメントを参照してください。ここでは、同じGraniteSpeechProcessorとGraniteSpeechFeatureExtractorが使用されます。
使用方法
Granite Speech Plus は、テキストプロンプトへの応答を通じて、音声の文字起こし、話者アノテーション、単語レベルのタイムスタンプの提供を行うことができるマルチモーダルな音声認識モデルです。各機能の使用方法は以下の通りです。
セットアップ — モデルとテスト用の音声クリップを読み込みます:
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"異なるタスクで使用されるプロンプトを定義します:
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]"モデルを読み込み、オーディオのデコードを行う汎用関数を定義します:
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_textAMIデータセットからサンプル音声データを読み込みます
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)タスク 1: ASR — 通常の音声からテキストへの書き起こし:
asr_text = transcribe(audio.data, ASR_PROMPT)
print(asr_text)タスク 2: 話者属性付き ASR — 話者ラベル付きの文字起こし:
saa_text = transcribe(audio.data, SAA_PROMPT)
for segment in re.split(r"(\[Speaker \d+\]:)", saa_text):
print(segment.strip())タスク 3: ワードレベルのタイムスタンプ — ワードごとのタイミング付き転写:
タイムスタンプは1/100秒単位で、1000(=10秒)でモジュロになっています。そのため、10秒の整数倍を加算してアンラップする必要があります。
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")タスク 4: 増分デコーディング — 音声コンテキストを蓄積しながらセグメントを文字起こしします:
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
class 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 )
パラメータ
- text_config (
Union[dict, ~configuration_utils.PreTrainedConfig]、省略可) — テキストバックボーンの設定オブジェクトまたは辞書。 - encoder_config (
Union[dict, ~configuration_utils.PreTrainedConfig]、任意) — エンコーダーのバックボーンの設定オブジェクトまたは辞書です。 - projector_config (
Union[AutoConfig, dict]、任意、デフォルトはBlip2QFormerConfig) — オーディオプロジェクターの config オブジェクトまたは辞書。 - audio_token_index (
int、任意、デフォルトは49155) — 入力音声のプレースホルダーとして使用されるオーディオトークンのインデックスです。 - initializer_range (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。 - has_lora_adapter (
bool、任意、デフォルトはTrue) — モデルに LoRA アダプターが存在し、オーディオ入力の処理時のみ有効化すべきかどうかを示します。 - downsample_rate (
int、省略可、デフォルト値は 5)— 音声特徴抽出器のダウンサンプリング率。 - window_size (
int、任意、デフォルトは 15) — オーディオ特徴量プロジェクターのウィンドウサイズ。 - tie_word_embeddings (
bool、任意、デフォルトはTrue) — モデルのtied_weights_keysマッピングに従って重み埋め込みを共有するかどうかを指定します。
これはGraniteSpeechPlusModelの設定を保存するための設定クラスです。指定された引数に基づいてGranite Speech Plusモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、ibm-granite/granite-speech-4.1-2b-plusと類似した設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> 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
class 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 )
パラメータ
- input_dim (int、任意、デフォルトは 160) — 入力音声特徴の次元数(例:メルフィルタバンクのチャネル数)。
- num_layers (int、任意、デフォルトは 10) — Transformer デコーダーの隠れ層の数です。
- hidden_dim (int、optional、デフォルトは 1024) — 隠れ表現の次元数。
- feedforward_mult (int、任意、デフォルトは 4) — エンコーダーのフィードフォワード層におけるアップ/ダウン射影の倍率です。 射影の中間次元は hidden_dim feedforward_mult* のサイズになります。
- num_heads (int、任意、デフォルトは 8) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
- dim_head (int, optional) — アテンションヘッドの次元数です。None の場合、hidden_size // num_attention_heads がデフォルトとして使用されます。
- output_dim (int、任意、デフォルトは 42) — conformer のフィードフォワード投影の中間次元。他のすべてのエンコーダーブロックの出力に追加されます。
- context_size (int、任意、デフォルトは 200) — Conformer アテンションで使用するコンテキストサイズ。
- max_pos_emb (int、optional、デフォルト値は 512) — attention で使用する最大位置埋め込み数(shaw の相対位置エンコーディング)。
- dropout (Union[float, int]、任意、デフォルトは 0.1) — すべての dropout 層の比率です。
- conv_kernel_size (int、optional、デフォルトは 15) — 畳み込みカーネルのサイズです。
- conv_expansion_factor (int、optional、デフォルト値は 2) — Conformer の畳み込みで使用する中間次元。
- cat_hidden_layers (list[int]、optional) —
エンコーダの conformer レイヤーのうち、最終的なエンコーダ出力(特徴次元に沿って)と連結される出力のインデックスを指定します。この連結された出力が projector に渡されます。設定した場合、projector の
encoder_hidden_sizeはencoder_config.hidden_dim * (len(cat_hidden_layers) + 1)と等しくなければなりません。
これはGraniteSpeechPlusModelの設定を保存するための設定クラスです。指定された引数に基づいてGranite Speech Plusモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、ibm-granite/granite-speech-4.1-2b-plusと類似した設定が得られます。
Configuration オブジェクトは [PreTrainedConfig] を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig] のドキュメントを参照してください。
例:
>>> 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
クラス transformers.GraniteSpeechPlusModel
< source >( config: GraniteSpeechPlusConfig )
パラメータ
- config (GraniteSpeechPlusConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
音声エンコーダー、プロジェクター、言語モデルで構成される Granite Speech モデル(言語モデリングヘッドなし)。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.FloatTensor] = 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.FloatTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → GraniteSpeechPlusModelOutputWithPast or tuple(torch.FloatTensor)
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- input_features (
torch.FloatTensor、形状(batch_size, sequence_length, feature_dim)、任意) — 入力音声特徴に対応するテンソルです。音声特徴は GraniteSpeechFeatureExtractor を使用して取得できます。詳細はGraniteSpeechFeatureExtractor.__call__()を参照してください(GraniteSpeechProcessor は音声の処理に GraniteSpeechFeatureExtractor を使用します)。 - input_features_mask (
torch.Tensor, 任意) — 言語埋め込みに散乱させる前に、音声特徴量に適用するマスク。 - attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- position_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返したpast_key_valuesであり、use_cache=Trueまたはconfig.use_cache=True.入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。
past_key_valuesが渡されない場合、デフォルトで DynamicCache が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。
past_key_valuesを使用する場合、すべてのinput_ids(形状(batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理のinput_ids(形状(batch_size, unprocessed_length))のみを入力することになります。 - inputs_embeds (
torch.FloatTensor、形状(batch_size, sequence_length, hidden_size)、任意) —input_idsを渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_idsのインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。
戻り値
GraniteSpeechPlusModelOutputWithPast または tuple(torch.FloatTensor)
GraniteSpeechPlusModelOutputWithPast、またはtorch.FloatTensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(GraniteSpeechPlusConfig)や入力に応じて、さまざまな要素で構成されます。
GraniteSpeechPlusModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
last_hidden_state (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンス。past_key_valuesが使用されている場合、出力されるのは、形状(batch_size, 1, hidden_size)のシーケンスの最後の隠れ状態のみです。past_key_values (
Cache、任意、use_cache=Trueが渡された場合またはconfig.use_cache=Trueの場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。自己アテンションブロック(および
config.is_encoder_decoder=Trueの場合、クロスカレンションブロック)の事前計算済みヒドゥンステート(キーとバリュー)を保持します。これらは逐次デコーディングを高速化するために使用できます(past_key_values入力参照)。hidden_states (
tuple(torch.FloatTensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます)—torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
audio_hidden_states (
torch.FloatTensor、任意) — 投影されたオーディオの隠れ状態。
GraniteSpeechPlusForConditionalGeneration
class transformers.GraniteSpeechPlusForConditionalGeneration
< source >( config: GraniteSpeechPlusConfig )
パラメータ
- config (GraniteSpeechPlusConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
Granite Speech Plus モデルは、Granite Speech のバリアントであり、その projector は、エンコーダーの最終的な隠れ状態と、その中間隠れ状態の任意の部分集合の連結を消費します。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.FloatTensor] = 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.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs ) → GraniteSpeechPlusCausalLMOutputWithPast or tuple(torch.FloatTensor)
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- input_features (
torch.FloatTensor、形状(batch_size, sequence_length, feature_dim)、任意) — 入力音声特徴に対応するテンソルです。音声特徴は GraniteSpeechFeatureExtractor を使用して取得できます。詳細はGraniteSpeechFeatureExtractor.__call__()を参照してください(GraniteSpeechProcessor は音声の処理に GraniteSpeechFeatureExtractor を使用します)。 - input_features_mask (
torch.Tensor, 任意) — 言語埋め込みに散乱させる前に、音声特徴量に適用するマスク。 - attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- position_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返したpast_key_valuesであり、use_cache=Trueまたはconfig.use_cache=True.入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。
past_key_valuesが渡されない場合、デフォルトで DynamicCache が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。
past_key_valuesを使用する場合、すべてのinput_ids(形状(batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理のinput_ids(形状(batch_size, unprocessed_length))のみを入力することになります。 - inputs_embeds (
torch.FloatTensor、形状(batch_size, sequence_length, hidden_size)、任意) —input_idsを渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_idsのインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。 - labels (
torch.LongTensor、shape(batch_size, sequence_length)、任意) — マスク言語モデリング損失を計算するためのラベルです。インデックスは[0, ..., config.vocab_size]の範囲内であるか、-100 である必要があります(input_idsの docstring を参照)。インデックスが-100に設定されたトークンは無視(マスク)され、損失は[0, ..., config.vocab_size]の範囲内のラベルを持つトークンに対してのみ計算されます。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。 - logits_to_keep (
Union[int, torch.Tensor]、省略可、デフォルトは0) —intの場合、最後のlogits_to_keepトークンについて logits を計算します。0の場合、すべてのinput_idsについて logits を計算します(特殊ケース)。生成には最後のトークンの logits だけで十分であり、そのトークンのみについて計算することでメモリを節約できます。これは、長いシーケンスや大規模な語彙サイズの場合に特に顕著な効果があります。torch.Tensorの場合、シーケンス長次元で保持するインデックスに対応する 1 次元テンソルである必要があります。これは、パックされたテンソル形式(バッチとシーケンス長を単一の次元にまとめた形式)を使用する場合に有用です。
戻り値
GraniteSpeechPlusCausalLMOutputWithPast または tuple(torch.FloatTensor)
GraniteSpeechPlusCausalLMOutputWithPast、またはtorch.FloatTensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(GraniteSpeechPlusConfig)や入力に応じて、さまざまな要素で構成されます。
GraniteSpeechPlusForConditionalGenerationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
loss (
torch.FloatTensor、shape(1,)、optional、labelsが指定された場合に返されます) — 言語モデリングの損失(次のトークン予測用)。logits (
torch.FloatTensor、shape(batch_size, sequence_length, config.vocab_size)) — 言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。past_key_values (
Cache、任意、use_cache=Trueが渡された場合またはconfig.use_cache=Trueの場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。逐次デコーディングを高速化するために使用できる(
past_key_values入力参照)、事前計算済みの隠れ状態(自己注意ブロックのキーとバリュー)が含まれます。hidden_states (
tuple[torch.FloatTensor]、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返される) —torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (
tuple[torch.FloatTensor]、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
audio_hidden_states (
torch.FloatTensor、任意) — 投影されたオーディオの隠れ状態。
例:
>>> 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)
...