Transformers documentation

ModernVBert

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

このモデルは2025年10月1日にHF papersで公開され、2026年2月23日にHugging Face Transformersに貢献されました。

ModernVBert

FlashAttention SDPA

概要

ModernVBert は、ModernBert と SigLIP のビジョンエンコーダーを組み合わせるビジョン・言語エンコーダーです。視覚的なドキュメント理解および検索タスク向けに最適化されています。

このモデルは、ModernVBERT: Towards Smaller Visual Document Retrievers で紹介されました。

Python
import torch
from huggingface_hub import hf_hub_download
from PIL import Image

from transformers import AutoModelForMaskedLM, AutoProcessor


processor = AutoProcessor.from_pretrained("./mvb")
model = AutoModelForMaskedLM.from_pretrained("./mvb", device_map="auto")

image = Image.open(hf_hub_download("HuggingFaceTB/SmolVLM", "example_images/rococo.jpg", repo_type="space"))
text = "This [MASK] is on the wall."

# Create input messages
messages = [
    {
        "role": "user",
        "content": [
            {"type": "image"},
            {"type": "text", "text": text}
        ]
    },
]

# Prepare inputs
prompt = processor.apply_chat_template(messages)
inputs = processor(text=prompt, images=[image], return_tensors="pt").to(model.device)

# Inference
with torch.no_grad():
  outputs = model(**inputs)

# To get predictions for the mask:
masked_index = inputs["input_ids"][0].tolist().index(processor.tokenizer.mask_token_id)
predicted_token_id = outputs.logits[0, masked_index].argmax(axis=-1)
predicted_token = processor.tokenizer.decode(predicted_token_id)
print("Predicted token:", predicted_token)  # Predicted token: painting

ModernVBertConfig

class transformers.ModernVBertConfig

< >

( 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: transformers.configuration_utils.PreTrainedConfig | dict | None = Nonevision_config: transformers.configuration_utils.PreTrainedConfig | dict | None = Noneimage_token_id: int = 50407pixel_shuffle_factor: int = 4initializer_range: float = 0.02initializer_cutoff_factor: float = 2.0classifier_pooling: typing.Literal['cls', 'mean'] = 'cls'classifier_dropout: float | int = 0.0classifier_bias: bool = Falsetie_word_embeddings: bool = False )

パラメータ

  • text_config (Union[~configuration_utils.PreTrainedConfig, dict]、省略可) — テキストバックボーンの config オブジェクトまたは辞書です。
  • vision_config (Union[~configuration_utils.PreTrainedConfig, dict], 任意) — ビジョンバックボーンの config オブジェクトまたは辞書。
  • image_token_id (int、任意、デフォルトは 50407) — 入力画像のプレースホルダーとして使用される画像トークンのインデックスです。
  • pixel_shuffle_factor (int | None、任意、デフォルトは 4)— ビジョンヘッド内のピクセルシャッフル / アップサンプリング操作で使用するスケール係数。
  • initializer_range (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • initializer_cutoff_factor (float | None、任意、デフォルト値は 2.0) — すべての重み行列を初期化するための truncated_normal_initializer のカットオフ係数です。
  • classifier_pooling (Literal["cls", "mean"]、任意、デフォルトは "cls") — 分類タスクで使用するプーリング戦略です。
  • classifier_dropout (Union[float, int]、任意、デフォルトは 0.0) — 分類器のドロップアウト率です。
  • classifier_bias (bool | None、任意、デフォルトは False) — 分類ヘッドにバイアス項を追加するかどうか
  • tie_word_embeddings (bool、任意、デフォルトは False) — モデルの tied_weights_keys マッピングに従って重み埋め込みを共有するかどうかを指定します。

これは ModernVBertModel の設定を保存するための設定クラスです。指定された引数に基づいて Modernvbert モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、ModernVBERT/modernvbert と同様の設定が得られます。

設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。

例:

>>> from transformers import ModernVBertConfig

>>> # Initializing configuration
>>> configuration = ModernVBertConfig()

>>> # Initializing a model from the configuration (model class is implemented in
>>> # `modernvbert.modeling_modernvbert`)

>>> from transformers import ModernVBertModel
>>> model = ModernVBertModel(configuration)

>>> # Accessing the model configuration
>>> cfg = model.config

ModernVBertModel

クラス transformers.ModernVBertModel

< >

( config: ModernVBertConfig )

パラメータ

  • config (ModernVBertConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

ModernVBertModel は、ビジョンエンコーダー(SigLIP)とテキストエンコーダー(ModernBert)を組み合わせるモデルです。

ModernVBert は、ビジュアルリトリーバー ColModernVBert のベースモデルであり、以下の論文で紹介されました: ModernVBERT: Towards Smaller Visual Document Retrievers。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( input_ids: LongTensor = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonepixel_values: typing.Optional[torch.FloatTensor] = Nonepixel_attention_mask: typing.Optional[torch.BoolTensor] = Noneimage_hidden_states: typing.Optional[torch.FloatTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → ModernVBertBaseModelOutput or tuple(torch.FloatTensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • 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].

    ポジションIDとは?

  • inputs_embeds (torch.FloatTensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • pixel_values (torch.FloatTensor、形状 (batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は image_processor_class を使用して取得できます。詳細は image_processor_class.__call__ を参照してください(Idefics3Processor は画像の処理に image_processor_class を使用します)。
  • pixel_attention_mask (torch.Tensor、形状 (batch_size, image_size, image_size)、任意) — パディングピクセルのインデックスに対してアテンションを実行しないためのマスクです。
  • image_hidden_states (torch.FloatTensor、shape (batch_size, num_channels, image_size, image_size)) — モダリティ投影後の画像エンコーダーの隠れ状態です。

戻り値

ModernVBertBaseModelOutput または tuple(torch.FloatTensor)

ModernVBertBaseModelOutput、またはtorch.FloatTensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(ModernVBertConfig)や入力に応じて、さまざまな要素で構成されます。

モデルに入力されるデータには、任意の数の画像が含まれる場合があります。これに対応するため、モデルに渡される pixel_values には画像パディングが適用され、その形状は (batch_size, max_num_images, 3, max_heights, max_widths) となります。ここで max_num_images は、バッチ内の batch_size 個のサンプルの中で最も多い画像数です。パディング画像は、モデルの入口で pixel_values をパディングするためにのみ必要であり、それ以降は不要です。効率化のため、vision_model の forward に渡す際にはパディング画像を破棄し、実在する画像のみを渡します。つまり、pixel_values のサイズは (image_batch_size, 3, height, width) となり、num_images_per_sample=[1, 3, 1, 2] で max_num_images が 3 の場合、image_batch_size は 7 となります。

  • last_hidden_state (torch.FloatTensor、shape (batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンスです。 past_key_values が使用されている場合、shape (batch_size, 1, hidden_size) のシーケンスの最後の隠れ状態のみが出力されます。
  • 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 後のアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。
  • image_hidden_states (tuple(torch.FloatTensor)、optional) — torch.FloatTensor のタプル(画像埋め込みの出力が 1 つ、(batch_size, num_images, sequence_length, hidden_size))。 ビジョンエンコーダーによって生成されたモデルの image_hidden_states

ModernVBertForMaskedLM

クラス transformers.ModernVBertForMaskedLM

< >

( config: ModernVBertConfig )

パラメータ

  • config (ModernVBertConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

language modelingヘッドを上に備えたModernvbertモデル。”

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( input_ids: LongTensor = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonepixel_values: typing.Optional[torch.FloatTensor] = Nonepixel_attention_mask: typing.Optional[torch.BoolTensor] = Noneimage_hidden_states: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → ModernVBertMaskedLMOutput or tuple(torch.FloatTensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • 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].

    ポジションIDとは?

  • inputs_embeds (torch.FloatTensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • pixel_values (torch.FloatTensor、形状 (batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は image_processor_class を使用して取得できます。詳細は image_processor_class.__call__ を参照してください(Idefics3Processor は画像の処理に image_processor_class を使用します)。
  • pixel_attention_mask (torch.Tensor、形状 (batch_size, image_size, image_size)、任意) — パディングピクセルのインデックスに対してアテンションを実行しないためのマスクです。
  • image_hidden_states (torch.FloatTensor、shape (batch_size, num_channels, image_size, image_size)) — モダリティ投影後の画像エンコーダーの隠れ状態です。
  • labels (torch.LongTensor、形状 (batch_size, sequence_length)、任意) — マスク言語モデリング損失を計算するためのラベルです。インデックスは [0, ..., text_config.] または model.image_token_id のいずれかの値である必要があります。model.image_token_id が設定されたトークンは無視(マスク)され、損失は [0, ..., text_config.] の範囲内のラベルを持つトークンに対してのみ計算されます。

戻り値

ModernVBertMaskedLMOutput または tuple(torch.FloatTensor)

ModernVBertMaskedLMOutput、またはtorch.FloatTensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(ModernVBertConfig)と入力に応じて、さまざまな要素で構成されます。

モデルに入力されるデータには、任意の数の画像が含まれる場合があります。これに対応するため、モデルに渡される pixel_values には画像パディングが適用され、その形状は (batch_size, max_num_images, 3, max_heights, max_widths) となります。ここで max_num_images は、バッチ内の batch_size 個のサンプルの中で最も多い画像数です。パディング画像は、モデルの入口で pixel_values をパディングするためにのみ必要であり、それ以降は不要です。効率化のため、vision_model の forward に渡す際にはパディング画像を破棄し、実在する画像のみを渡します。つまり、pixel_values のサイズは (image_batch_size, 3, height, width) となり、num_images_per_sample=[1, 3, 1, 2] で max_num_images が 3 の場合、image_batch_size は 7 となります。

  • loss (torch.FloatTensor、optional、labels が指定された場合のみ返されます) — マスクド言語モデリング (MLM) の損失。
  • logits (torch.FloatTensor) — 言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。
  • 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) です。 各層の出力におけるモデルの隠れ状態と、任意の初期埋め込み出力です。
  • attentions (tuple(torch.FloatTensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。 アテンションの softmax 後のアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。
  • image_hidden_states (tuple(torch.FloatTensor)、optional) — torch.FloatTensor のタプル(画像埋め込みの出力が 1 つ、(batch_size, num_images, sequence_length, hidden_size))。 ビジョンエンコーダーによって生成されたモデルの image_hidden_states

例:

>>> from transformers import AutoTokenizer, ModernVBertForMaskedLM
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("ModernVBERT/modernvbert")
>>> model = ModernVBertForMaskedLM.from_pretrained("ModernVBERT/modernvbert")

>>> inputs = tokenizer("The capital of France is <mask>.", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # retrieve index of <mask>
>>> mask_token_index = (inputs.input_ids == tokenizer.mask_token_id)[0].nonzero(as_tuple=True)[0]

>>> predicted_token_id = logits[0, mask_token_index].argmax(axis=-1)
>>> tokenizer.decode(predicted_token_id)
...

>>> labels = tokenizer("The capital of France is Paris.", return_tensors="pt")["input_ids"]
>>> # mask labels of non-<mask> tokens
>>> labels = torch.where(inputs.input_ids == tokenizer.mask_token_id, labels, -100)

>>> outputs = model(**inputs, labels=labels)
>>> round(outputs.loss.item(), 2)
...

ModernVBertForSequenceClassification

class transformers.ModernVBertForSequenceClassification

< >

( config: ModernVBertConfig )

パラメータ

  • config (ModernVBertConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

プーリングを実行するシーケンス分類ヘッドを上部に備えた ModernVBert モデル。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( input_ids: LongTensor = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonepixel_values: typing.Optional[torch.FloatTensor] = Nonepixel_attention_mask: typing.Optional[torch.BoolTensor] = Noneimage_hidden_states: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.FloatTensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • 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].

    ポジションIDとは?

  • inputs_embeds (torch.FloatTensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • pixel_values (torch.FloatTensor、形状 (batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は image_processor_class を使用して取得できます。詳細は image_processor_class.__call__ を参照してください(Idefics3Processor は画像の処理に image_processor_class を使用します)。
  • pixel_attention_mask (torch.Tensor、形状 (batch_size, image_size, image_size)、任意) — パディングピクセルのインデックスに対してアテンションを実行しないためのマスクです。
  • image_hidden_states (torch.FloatTensor、shape (batch_size, num_channels, image_size, image_size)) — モダリティ投影後の画像エンコーダーの隠れ状態です。
  • labels (torch.LongTensor、shape (batch_size, sequence_length)、任意) — マスク言語モデリング損失を計算するためのラベルです。インデックスは [0, ..., text_config.] または model.image_token_id のいずれかの値である必要があります。model.image_token_id が設定されたトークンは無視(マスク)され、損失は [0, ..., text_config.] の範囲のラベルを持つトークンに対してのみ計算されます。

戻り値

SequenceClassifierOutput または tuple(torch.FloatTensor)

torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)、または SequenceClassifierOutput。設定(ModernVBertConfig)や入力に応じて、さまざまな要素で構成されます。

モデルに入力されるデータには、任意の数の画像が含まれる場合があります。これに対応するため、モデルに渡される pixel_values には画像パディングが適用され、その形状は (batch_size, max_num_images, 3, max_heights, max_widths) となります。ここで max_num_images は、バッチ内の batch_size 個のサンプルの中で最も多い画像数です。パディング画像は、モデルの入口で pixel_values をパディングするためにのみ必要であり、それ以降は不要です。効率化のため、vision_model の forward に渡す際にはパディング画像を破棄し、実在する画像のみを渡します。つまり、pixel_values のサイズは (image_batch_size, 3, height, width) となり、num_images_per_sample=[1, 3, 1, 2] で max_num_images が 3 の場合、image_batch_size は 7 となります。

  • loss (torch.FloatTensor、shape (1,)、optional、labels が指定された場合に返されます) — 分類損失(config.num_labels==1 の場合は回帰損失)。

  • logits (torch.FloatTensor、shape (batch_size, config.num_labels)) — SoftMax 適用前の分類スコア(config.num_labels==1 の場合は回帰スコア)。

  • 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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

単一ラベル分類の例:

>>> import torch
>>> from transformers import AutoTokenizer, ModernVBertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("ModernVBERT/modernvbert")
>>> model = ModernVBertForSequenceClassification.from_pretrained("ModernVBERT/modernvbert")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = ModernVBertForSequenceClassification.from_pretrained("ModernVBERT/modernvbert", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

マルチラベル分類の例:

>>> import torch
>>> from transformers import AutoTokenizer, ModernVBertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("ModernVBERT/modernvbert")
>>> model = ModernVBertForSequenceClassification.from_pretrained("ModernVBERT/modernvbert", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = ModernVBertForSequenceClassification.from_pretrained(
...     "ModernVBERT/modernvbert", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss

ModernVBertForTokenClassification

class transformers.ModernVBertForTokenClassification

< >

( config: ModernVBertConfig )

パラメータ

  • config (ModernVBertConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

トークン分類ヘッドを上部に備えた ModernVBert モデル。例として、固有表現抽出(NER)タスクに使用できます。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( input_ids: LongTensor = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonepixel_values: typing.Optional[torch.FloatTensor] = Nonepixel_attention_mask: typing.Optional[torch.BoolTensor] = Noneimage_hidden_states: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → TokenClassifierOutput or tuple(torch.FloatTensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • 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].

    ポジションIDとは?

  • inputs_embeds (torch.FloatTensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • pixel_values (torch.FloatTensor、形状 (batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は image_processor_class を使用して取得できます。詳細は image_processor_class.__call__ を参照してください(Idefics3Processor は画像の処理に image_processor_class を使用します)。
  • pixel_attention_mask (torch.Tensor、形状 (batch_size, image_size, image_size)、任意) — パディングピクセルのインデックスに対してアテンションを実行しないためのマスクです。
  • image_hidden_states (torch.FloatTensor、shape (batch_size, num_channels, image_size, image_size)) — モダリティ投影後の画像エンコーダーの隠れ状態です。
  • labels (torch.LongTensor、形状 (batch_size, sequence_length)、任意) — マスク言語モデリング損失を計算するためのラベルです。インデックスは [0, ..., text_config.] または model.image_token_id のいずれかの値である必要があります。model.image_token_id が設定されたトークンは無視(マスク)され、損失は [0, ..., text_config.] の範囲内のラベルを持つトークンに対してのみ計算されます。

戻り値

TokenClassifierOutput または tuple(torch.FloatTensor)

torch.FloatTensor のタプル、または TokenClassifierOutput(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(ModernVBertConfig)や入力に応じて、さまざまな要素で構成されます。

モデルに入力されるデータには、任意の数の画像が含まれる場合があります。これに対応するため、モデルに渡される pixel_values には画像パディングが適用され、その形状は (batch_size, max_num_images, 3, max_heights, max_widths) となります。ここで max_num_images は、バッチ内の batch_size 個のサンプルの中で最も多い画像数です。パディング画像は、モデルの入口で pixel_values をパディングするためにのみ必要であり、それ以降は不要です。効率化のため、vision_model の forward に渡す際にはパディング画像を破棄し、実在する画像のみを渡します。つまり、pixel_values のサイズは (image_batch_size, 3, height, width) となり、num_images_per_sample=[1, 3, 1, 2] で max_num_images が 3 の場合、image_batch_size は 7 となります。

  • loss (torch.FloatTensor、shape (1,)、optional、labels が指定された場合に返されます) — 分類損失。

  • logits (torch.FloatTensor、shape (batch_size, sequence_length, config.num_labels)) — SoftMax 適用前の分類スコア。

  • 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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

例:

>>> from transformers import AutoTokenizer, ModernVBertForTokenClassification
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("ModernVBERT/modernvbert")
>>> model = ModernVBertForTokenClassification.from_pretrained("ModernVBERT/modernvbert")

>>> inputs = tokenizer(
...     "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_token_class_ids = logits.argmax(-1)

>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> predicted_tokens_classes
...

>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...
Update on GitHub