Transformers documentation
Moonshine
このモデルは2024年10月21日にHF papersで公開され、2025年1月10日にHugging Face Transformersに貢献されました。
Moonshine
Moonshineは、リアルタイム文字起こしと音声コマンドの認識に最適化されたエンコーダー・デコーダー型の音声認識モデルです。従来の絶対位置埋め込みではなく、Rotary Position Embedding (RoPE) を使用することで、パディングなしで長さが異なる音声を処理します。これにより推論時の効率が向上し、リソースが限られたデバイスでの利用に最適です。
すべての Moonshine のオリジナルチェックポイントは、Useful Sensors組織の下で確認できます。
Moonshine を異なる音声認識タスクに適用する方法の例については、右側のサイドバーにある Moonshine モデルをクリックしてください。
以下の例では、PipelineまたはAutoModelクラスを使用して、音声からテキストへの変換(文字起こし)を行う方法を示しています。
from transformers import pipeline
pipeline = pipeline(
task="automatic-speech-recognition",
model="UsefulSensors/moonshine-base",
device=0
)
pipeline("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac")from datasets import load_dataset
from transformers import AutoProcessor, MoonshineForConditionalGeneration
processor = AutoProcessor.from_pretrained("UsefulSensors/moonshine-base")
model = MoonshineForConditionalGeneration.from_pretrained("UsefulSensors/moonshine-base", device_map="auto")
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", split="validation")
audio_sample = ds[0]["audio"]
input_features = processor(
audio_sample["array"],
sampling_rate=audio_sample["sampling_rate"],
return_tensors="pt"
)
input_features = input_features.to(model.device, dtype=model.dtype)
predicted_ids = model.generate(**input_features, cache_implementation="static")
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
print(transcription)MoonshineConfig
クラス transformers.MoonshineConfig
< 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 = 32768hidden_size: int = 288intermediate_size: int = 1152encoder_num_hidden_layers: int = 6decoder_num_hidden_layers: int = 6encoder_num_attention_heads: int = 8decoder_num_attention_heads: int = 8encoder_num_key_value_heads: int | None = Nonedecoder_num_key_value_heads: int | None = Nonepad_head_dim_to_multiple_of: int | None = Noneencoder_hidden_act: str = 'gelu'decoder_hidden_act: str = 'silu'max_position_embeddings: int = 512initializer_range: float = 0.02decoder_start_token_id: int = 1use_cache: bool = Truerope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneattention_bias: bool = Falseattention_dropout: float | int = 0.0bos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2pad_token_id: int | None = Nonetie_word_embeddings: bool = True )
パラメータ
- is_encoder_decoder (
bool、任意、デフォルトはTrue) — モデルがエンコーダー/デコーダーとして使用されるかどうかを示します。 - vocab_size (
int、任意、デフォルトは32768) — モデルの語彙サイズです。input_idsで表現できるトークンの種類数を定義します。 - hidden_size (
int、任意、デフォルトは288) — 隠れ表現の次元数です。 - intermediate_size (
int、任意、デフォルトは1152) — MLP 表現の次元数。 - encoder_num_hidden_layers (
int、任意、デフォルトは6) — Transformer エンコーダーの隠れ層の数です。設定されていない場合は、num_layersと同じ値が使用されます。 - decoder_num_hidden_layers (
int、任意、デフォルトは6) — Transformer デコーダーの隠れ層の数です。設定されていない場合は、num_layersと同じ値が使用されます。 - encoder_num_attention_heads (
int、任意、デフォルトは8) — Transformer エンコーダーの各アテンション層におけるアテンションヘッドの数。 - decoder_num_attention_heads (
int、任意、デフォルトは8) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。 - encoder_num_key_value_heads (
int, 省略可) — Grouped Query Attention を実装するために使用する key_value ヘッドの数を指定します。encoder_num_key_value_heads=encoder_num_attention_headsの場合、モデルは Multi Head Attention (MHA) を使用し、encoder_num_key_value_heads=1の場合は Multi Query Attention (MQA) を使用し、それ以外の場合は GQA が使用されます。 マルチヘッドのチェックポイントを GQA チェックポイントに変換する際は、各グループの key ヘッドおよび value ヘッドを、そのグループ内の元のすべてのヘッドの平均プーリングによって構築する必要があります。詳細については、この論文を参照してください。指定しない場合、デフォルトでnum_attention_headsが使用されます。 - decoder_num_key_value_heads (
int, 省略可) — Grouped Query Attention の実装に使用する key_value ヘッドの数を指定します。decoder_num_key_value_heads=decoder_num_attention_headsの場合、モデルは Multi Head Attention (MHA) を使用し、decoder_num_key_value_heads=1の場合は Multi Query Attention (MQA) を使用し、それ以外の場合は GQA が使用されます。 マルチヘッドのチェックポイントを GQA のチェックポイントに変換する際は、各グループの key ヘッドおよび value ヘッドを、そのグループ内の元のすべてのヘッドの平均プーリングによって構築する必要があります。詳細については、この論文を参照してください。指定しない場合、デフォルトでdecoder_num_attention_headsが使用されます。 - pad_head_dim_to_multiple_of (
int, 任意) — エンコーダーとデコーダーのヘッド次元を、この値の次の倍数にパディングします。特定の最適化されたアテンション実装を使用するために必要です。 - encoder_hidden_act (
strまたはfunction、任意、デフォルトは"gelu") — エンコーダーで使用する非線形活性化関数(関数または文字列)。 - decoder_hidden_act (
strまたはfunction、任意、デフォルトは"silu") — デコーダー内で使用される非線形活性化関数(関数または文字列)。 - max_position_embeddings (
int、任意、デフォルトは512) — このモデルが使用される可能性のある最大シーケンス長です。 - initializer_range (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。 - decoder_start_token_id (
int、任意、デフォルトは1) — エンコーダー・デコーダーモデルがbosとは異なるトークンでデコーディングを開始する場合、そのトークンの ID。 - use_cache (
bool、任意、デフォルトはTrue) — モデルが最後のキー/バリューの注意を返すかどうか(すべてのモデルで利用されるわけではありません)。config.is_decoder=Trueの場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。 - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], 省略可) — RoPE 埋め込みの設定パラメータを含む辞書です。この辞書にはrope_thetaの値が含まれており、より長いmax_position_embeddingsで RoPE を使用する場合にスケーリングに使用されるパラメータが任意で含まれます。 - attention_bias (
bool、任意、デフォルトはFalse) — 自己注意機構において、クエリ、キー、バリュー、出力の投影層にバイアスを使用するかどうかを指定します。 - attention_dropout (
Union[float, int]、任意、デフォルトは0.0) — アテンション確率のドロップアウト率です。 - bos_token_id (
int、任意、デフォルトは1) — 語彙におけるストリーム開始に使用されるトークン ID。 - eos_token_id (
Union[int, list[int]]、任意、デフォルトは2) — 語彙内でストリーム終了に使用されるトークン ID。 - pad_token_id (
int, 任意) — 語彙内でパディングに使用されるトークン ID。 - tie_word_embeddings (
bool、任意、デフォルトはTrue) — モデルのtied_weights_keysマッピングに従って重み埋め込みを共有するかどうかを指定します。
これはMoonshineModelの設定を保存するための設定クラスです。指定された引数に基づいてMoonshineモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、UsefulSensors/moonshine-tinyと類似した設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import MoonshineModel, MoonshineConfig
>>> # Initializing a Moonshine style configuration
>>> configuration = MoonshineConfig().from_pretrained("UsefulSensors/moonshine-tiny")
>>> # Initializing a model from the configuration
>>> model = MoonshineModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configMoonshineModel
クラス transformers.MoonshineModel
< source >( config: MoonshineConfig )
パラメータ
- config (MoonshineConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
特定のヘッドを付加せずに、生のhidden-statesを出力する素のMoonshine Model。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_values: typing.Optional[torch.FloatTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.FloatTensor]] | None = Nonepast_key_values: transformers.cache_utils.EncoderDecoderCache | None = Nonedecoder_inputs_embeds: tuple[torch.FloatTensor] | None = Nonedecoder_position_ids: tuple[torch.LongTensor] | None = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqModelOutput or tuple(torch.FloatTensor)
パラメータ
- input_values (
torch.FloatTensor、shape(batch_size, audio_length)) — 生の音声波形の浮動小数点値。生の音声波形は、.flacまたは.wavのオーディオファイルをlist[float]型、numpy.ndarray、またはtorch.Tensor型の配列として読み込むことで取得できます。例えば、torchcodec ライブラリ(pip install torchcodec)や soundfile ライブラリ(pip install soundfile)を通じて取得できます。input_valuesとして配列を準備するには、AutoFeatureExtractor を使用してパディングとtorch.FloatTensor型への変換を行う必要があります。 - attention_mask (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- decoder_input_ids (
torch.LongTensorの形状(batch_size, target_sequence_length), 、任意) — 語彙におけるデコーダー入力シーケンスのトークンインデックスです。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- decoder_attention_mask (
torch.LongTensor、shape(batch_size, target_sequence_length)、任意) — 特定のトークンインデックスに対するアテンションの計算を回避するためのマスクです。デフォルトでは因果マスクが使用され、モデルが未来を予測する際に過去の入力のみを参照できるようにします。 - encoder_outputs (
tuple[tuple[torch.FloatTensor]], 任意) — (last_hidden_state, 任意:hidden_states, 任意:attentions) のタプルlast_hidden_stateは形状(batch_size, sequence_length, hidden_size)、任意) で、エンコーダーの最終層の出力における隠れ状態のシーケンスです。デコーダーのクロスアテンションで使用されます。 - past_key_values (
~cache_utils.EncoderDecoderCache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算済みヒデンステート(セルフアテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した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))のみを入力することになります。 - decoder_inputs_embeds (
tuple[torch.FloatTensor]の形状(batch_size, target_sequence_length, hidden_size), 、任意) — 、任意で、decoder_input_idsの代わりに、埋め込み表現を直接渡すこともできます。past_key_valuesを使用する場合、最後のdecoder_inputs_embedsのみを入力すれば十分です(past_key_values). 、decoder_input_idsのインデックスを関連するベクトルに変換する方法を、モデル内部の埋め込みルックアップ行列よりも細かく制御したい場合に便利です。decoder_input_idsとdecoder_inputs_embedsの両方が設定されていない場合、decoder_inputs_embedsはinputs_embedsの値を採ります。 - decoder_position_ids (
torch.LongTensor、shape(batch_size, target_sequence_length)) — 位置埋め込みにおける、各入力シーケンスのトークンの位置のインデックスです。config.decoder_config.max_position_embeddingsまでの位置埋め込みを計算するために使用されます。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。
戻り値
Seq2SeqModelOutput または tuple(torch.FloatTensor)
torch.FloatTensor のタプル、または Seq2SeqModelOutput(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(MoonshineConfig)や入力に応じて、さまざまな要素で構成されます。
MoonshineModelの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 (
EncoderDecoderCache、任意、use_cache=Trueが渡された場合またはconfig.use_cache=Trueの場合に返されます) — EncoderDecoderCache のインスタンスです。詳細については、kv cache ガイドを参照してください。自己注意ブロックおよび相互注意ブロック内のキーとバリューの事前計算済み隠れ状態(hidden-states)を保持しており、シーケンシャルデコーディングを高速化するために使用できます(
past_key_values入力参照)。decoder_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、および任意の初期埋め込み出力。
decoder_attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。
cross_attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返される) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。
encoder_last_hidden_state (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)、optional) — モデルのエンコーダーの最終層の出力における、隠れ状態のシーケンス。encoder_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、および任意の初期埋め込み出力。
encoder_attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返される) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。
例:
>>> import torch
>>> from transformers import AutoFeatureExtractor, MoonshineModel
>>> from datasets import load_dataset
>>> model = MoonshineModel.from_pretrained("UsefulSensors/moonshine-tiny")
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("UsefulSensors/moonshine-tiny")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> inputs = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_values = inputs.input_values
>>> decoder_input_ids = torch.tensor([[1, 1]]) * model.config.decoder_start_token_id
>>> last_hidden_state = model(input_values, decoder_input_ids=decoder_input_ids).last_hidden_state
>>> list(last_hidden_state.shape)
[1, 2, 288]SpecAugment に従って、時間軸および/または特徴量軸に沿った特徴をマスクします。
MoonshineForConditionalGeneration
class transformers.MoonshineForConditionalGeneration
< source >( config: MoonshineConfig )
パラメータ
- config (MoonshineConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
言語モデリングヘッドを備えたMoonshineモデル。自動音声認識に使用できます。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_values: typing.Optional[torch.FloatTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.FloatTensor]] | None = Nonepast_key_values: transformers.cache_utils.EncoderDecoderCache | None = Nonedecoder_inputs_embeds: tuple[torch.FloatTensor] | None = Nonedecoder_position_ids: tuple[torch.LongTensor] | None = Noneuse_cache: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.FloatTensor)
パラメータ
- input_values (
torch.FloatTensor、shape(batch_size, audio_length)) — 生の音声波形の浮動小数点値。生の音声波形は、.flacまたは.wavのオーディオファイルをlist[float]型、numpy.ndarray、またはtorch.Tensor型の配列として読み込むことで取得できます。例えば、torchcodec ライブラリ(pip install torchcodec)や soundfile ライブラリ(pip install soundfile)を通じて取得できます。input_valuesとして配列を準備するには、AutoFeatureExtractor を使用してパディングとtorch.FloatTensor型への変換を行う必要があります。 - attention_mask (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- decoder_input_ids (
torch.LongTensorの形状(batch_size, target_sequence_length), 、任意) — 語彙におけるデコーダー入力シーケンスのトークンインデックスです。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- decoder_attention_mask (
torch.LongTensor、shape(batch_size, target_sequence_length)、任意) — 特定のトークンインデックスに対するアテンションの計算を回避するためのマスクです。デフォルトでは因果マスクが使用され、モデルが未来を予測する際に過去の入力のみを参照できるようにします。 - encoder_outputs (
tuple[tuple[torch.FloatTensor]], 任意) — (last_hidden_state, 任意:hidden_states, 任意:attentions) のタプルlast_hidden_stateは形状(batch_size, sequence_length, hidden_size)、任意) で、エンコーダーの最終層の出力における隠れ状態のシーケンスです。デコーダーのクロスアテンションで使用されます。 - past_key_values (
~cache_utils.EncoderDecoderCache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算済みヒデンステート(セルフアテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した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))のみを入力することになります。 - decoder_inputs_embeds (
tuple[torch.FloatTensor]の形状(batch_size, target_sequence_length, hidden_size), 、任意) — 、任意で、decoder_input_idsの代わりに、埋め込み表現を直接渡すこともできます。past_key_valuesを使用する場合、最後のdecoder_inputs_embedsのみを入力すれば十分です(past_key_values). 、decoder_input_idsのインデックスを関連するベクトルに変換する方法を、モデル内部の埋め込みルックアップ行列よりも細かく制御したい場合に便利です。decoder_input_idsとdecoder_inputs_embedsの両方が設定されていない場合、decoder_inputs_embedsはinputs_embedsの値を採ります。 - decoder_position_ids (
torch.LongTensor、shape(batch_size, target_sequence_length)) — 位置埋め込みにおける、各入力シーケンスのトークンの位置のインデックスです。config.decoder_config.max_position_embeddingsまでの位置埋め込みを計算するために使用されます。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。 - labels (
torch.LongTensor、shape(batch_size, sequence_length)、任意) — マスク言語モデリング損失を計算するためのラベルです。インデックスは[0, ..., config.vocab_size]の範囲内であるか、-100 である必要があります(input_idsの docstring を参照)。インデックスが-100に設定されたトークンは無視(マスク)され、損失は[0, ..., config.vocab_size]の範囲内のラベルを持つトークンに対してのみ計算されます。
戻り値
Seq2SeqLMOutput または tuple(torch.FloatTensor)
torch.FloatTensor のタプル、または return_dict=False が渡された場合、または config.return_dict=False の場合は torch.FloatTensor のタプルとして、設定 (MoonshineConfig) や入力に応じてさまざまな要素を含む Seq2SeqLMOutput を返します。
MoonshineForConditionalGenerationの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 (
EncoderDecoderCache、任意、use_cache=Trueが渡された場合またはconfig.use_cache=Trueの場合に返されます) — EncoderDecoderCache のインスタンスです。詳細については、kv cache ガイドを参照してください。自己注意ブロックおよび相互注意ブロック内のキーとバリューの事前計算済み隠れ状態(hidden-states)を保持しており、シーケンシャルデコーディングを高速化するために使用できます(
past_key_values入力参照)。decoder_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)です。各層の出力および初期埋め込み出力における、デコーダーの隠れ状態。
decoder_attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。
cross_attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返される) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。
encoder_last_hidden_state (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)、optional) — モデルのエンコーダーの最終層の出力における、隠れ状態のシーケンス。encoder_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)です。各層の出力および初期埋め込み出力におけるエンコーダーの隠れ状態。
encoder_attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返される) —torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。
例:
>>> import torch
>>> from transformers import AutoProcessor, MoonshineForConditionalGeneration
>>> from datasets import load_dataset
>>> processor = AutoProcessor.from_pretrained("UsefulSensors/moonshine-tiny")
>>> model = MoonshineForConditionalGeneration.from_pretrained("UsefulSensors/moonshine-tiny")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> inputs = processor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_values = inputs.input_values
>>> generated_ids = model.generate(input_values, max_new_tokens=100)
>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> transcription
'Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.'generate
< source >( inputs: typing.Optional[torch.Tensor] = Nonegeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonelogits_processor: transformers.generation.logits_process.LogitsProcessorList | None = Nonestopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = Noneprefix_allowed_tokens_fn: collections.abc.Callable[[int, torch.Tensor], list[int]] | None = Nonesynced_gpus: bool | None = Noneassistant_model: typing.Optional[ForwardRef('PreTrainedModel')] = Nonestreamer: typing.Optional[ForwardRef('BaseStreamer')] = Nonenegative_prompt_ids: typing.Optional[torch.Tensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.Tensor] = Nonecustom_generate: str | collections.abc.Callable | None = None**kwargs ) → ModelOutput or torch.LongTensor
パラメータ
- inputs(
torch.Tensor、モダリティによって形状が異なり、省略可) — 生成のプロンプトとして使用されるシーケンス、またはエンコーダーへのモデル入力です。Noneの場合、bos_token_idとバッチサイズ 1 で初期化されます。デコーダー専用モデルでは、inputsはinput_idsの形式である必要があります。エンコーダーデコーダーモデルでは、inputs はinput_ids、input_values、input_features、またはpixel_valuesのいずれかを表すことができます。 - generation_config (GenerationConfig、任意) —
生成呼び出しのベースパラメータ化として使用される生成設定です。
**kwargsで generate に渡され、generation_configの属性と一致するものは、それらをオーバーライドします。generation_configが指定されない場合、デフォルトが使用されます。その読み込み優先順位は以下の通りです: 1) 存在する場合、generation_config.jsonモデルファイルから; 2) モデル設定から。未指定のパラメータは GenerationConfig のデフォルト値を継承することに注意してください。生成をパラメータ化するには、そのドキュメントを確認する必要があります。 - logits_processor (
LogitsProcessorList、省略可) — 引数や生成設定から構築されるデフォルトの logits プロセッサを補完する、カスタムの logits プロセッサです。引数や生成設定によってすでに作成済みの logits プロセッサが渡された場合、エラーが発生します。この機能は上級ユーザー向けに設計されています。 - stopping_criteria (
StoppingCriteriaList、省略可) — 引数と生成設定から構築されるデフォルトの停止条件を補完する、カスタムの停止条件です。引数や生成設定からすでに作成された停止条件が渡された場合、エラーが発生します。停止条件がscores入力を参照する場合、generateにreturn_dict_in_generate=True, output_scores=Trueを渡すことを確認してください。この機能は上級ユーザー向けです。 - prefix_allowed_tokens_fn (
Callable[[int, torch.Tensor], list[int]], 省略可) — 指定された場合、この関数は各ステップにおいてビームサーチを許可されたトークンのみに制限します。指定されない場合、制限は適用されません。この関数は 2 つの引数を受け取ります: バッチ IDbatch_idとinput_idsです。バッチ IDbatch_idと以前に生成されたトークンinputs_idsに基づいて、次の生成ステップで許可されるトークンのリストを返す必要があります。この引数は、Autoregressive Entity Retrieval に記載されているような、プレフィックスに条件付けられた制約付き生成に有用です。 - synced_gpus (
bool, 省略可) — max_length まで while ループの実行を継続するかどうか。上書きされない場合、FullyShardedDataParallelまたは DeepSpeed ZeRO Stage 3 を複数の GPU で使用している場合は、ある GPU が他の GPU より先に生成を終了した場合のデッドロックを回避するために、このフラグはTrueに設定されます。それ以外の場合は、デフォルトでFalseになります。 - assistant_model (
PreTrainedModel, 任意) — 生成を高速化するために使用できるアシスタントモデルです。アシスタントモデルは、呼び出し元のモデルと完全に同一のトークナイザーを持つ必要があります。アシスタントモデルによる候補トークンの予測が、呼び出し元のモデルで generate を実行するよりもはるかに高速な場合に、高速化が実現されます。そのため、アシスタントモデルは呼び出し元のモデルよりもはるかに小さいものである必要があります。 - streamer (
BaseStreamer、任意) — 生成されたシーケンスをストリーミングするために使用される Streamer オブジェクトです。生成されたトークンはstreamer.put(token_ids)を介して渡され、その後の処理はすべて streamer が担当します。 - negative_prompt_ids (
torch.LongTensor、形状(batch_size, sequence_length)、任意) — CFG などの一部のプロセッサに必要となるネガティブプロンプトです。バッチサイズは、入力バッチサイズと一致する必要があります。これは実験的な機能であり、将来のバージョンで API が破壊的に変更される可能性があります。 - negative_prompt_attention_mask (
torch.LongTensor、形状(batch_size, sequence_length)、任意) —negative_prompt_ids用の Attention_mask です。 - custom_generate (
strまたはCallable, 省略可) — 次のいずれか:str(Hugging Face Hub リポジトリ名): 標準のgenerateメソッドではなく、そのリポジトリ内のcustom_generate/generate.pyで定義されたカスタムのgenerate関数を実行します。リポジトリが生成ロジックを完全に置き換え、戻り値の型が異なる場合があります。str(ローカルリポジトリのパス):上記と同様ですが、ローカルパスから読み込みます。ローカルディレクトリの場合も、ローカルのcustom_generate/generate.pyが実行されるため、trust_remote_code=Trueが必要です。Callable:generateは通常の入力準備手順を実行し、その後、デコーディングループを実行するために指定された callable を呼び出します。詳細については、ドキュメントを参照してください。
- kwargs (
dict[str, Any]、省略可) —generation_configのアドホックなパラメータ化、およびモデルのforward関数に転送されるモデル固有の追加 kwargs です。モデルがエンコーダー・デコーダーモデルの場合、エンコーダー固有の kwargs にはプレフィックスを付与せず、デコーダー固有の kwargs には decoder_ をプレフィックスとして付与してください。
戻り値
ModelOutput または torch.LongTensor
return_dict_in_generate=True の場合、または config.return_dict_in_generate=True の場合は ModelOutput、それ以外は torch.LongTensor。
モデルがエンコーダー・デコーダーモデルでない場合(model.config.is_encoder_decoder=False)、考えられるModelOutputの型は以下の通りです:
モデルがエンコーダー・デコーダーモデル(model.config.is_encoder_decoder=True)の場合、考えられるModelOutputの型は以下の通りです:
言語モデリングヘッドを持つモデルに対して、トークンIDのシーケンスを生成します。
生成を制御するほとんどのパラメータは
generation_configで設定されます。この引数が渡されない場合、モデルのデフォルトの生成設定が使用されます。generation_configの任意の値は、generate() に対応するパラメータを渡すことで上書きできます。例えば、.generate(inputs, num_beams=4, do_sample=True)のように指定します。生成戦略の概要とコード例については、次のガイドを参照してください。