Transformers documentation

MiniMax-M3-VL

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

このモデルは2026年6月12日に Hugging Face Transformers に貢献されました。

MiniMax-M3-VL

概要

MiniMax-M3-VL は、MiniMax-M3 ファミリーのビジョン・言語モデルです。CLIP スタイルのビジョン・タワー(3D 回転位置埋め込みを備えた Conv3d パッチ埋め込み)と、MiniMax-M3 テキスト・バックボーンを組み合わせます。このバックボーンは、SwiGLU-OAI ゲート付きエキスパートとブロックスパース注意のためのライトニング・インデクサーを使用する、密結合/スパース混合型の Mixture-of-Experts デコーダーです。

アーキテクチャ

ブロックスパースアテンション(Lightning Indexer)

各レイヤーは GQA(num_key_value_heads = 4)であり、ヘッドごとの QK-norm と、最初の rotary_dim に対する 部分 RoPE を採用しています。config.layer_types[i] によって "full_attention"(密な因果的アテンション)または "minimax_m3_sparse" が選択され、後者では MiniMaxM3VLIndexer がクエリごとに、メインアテンションが参照できるキーのブロックを決定します。

インデクサーはすべてのキーにスコアを付与し、その後キーごとのスコアをindex_block_size個のキーからなるブロック単位でmax-poolingします。そのため、選択はキーのブロックの粒度で行われます。クエリごとに、上位index_topk_blocksのキーブロックと、常に有効なindex_local_blocksのローカルウィンドウブロック(ブロックレベルの因果性のもとで)を保持し、ブロックごとの0/-infの選択をそのブロック内のすべてのキーにブロードキャストします。その結果、因果マスクに足し算される[B, 1, S_q, S_k]の加法的バイアスが得られます。理論的には、アテンションは選択されたキーのブロックに対してのみ計算されることを意味しますが、transformersはこの計算を効率的に行うカーネルをサポートしていません! 私たちはこれをkernelsにできるだけ早く追加する予定です!

MiniMax M3 Lightning Indexer mask

ビジョンタワー

MiniMaxM3VLVisionModel: [N_patches, C·T·P·P] のフラット化された入力に対する Conv3d パッチ埋め込み、および 3D 回転 位置埋め込み(時間 / 高さ / 幅のバンド)を持つ CLIP スタイルのエンコーダ層のスタック。MiniMaxM3VLPatchMerger は、2 層の GELU を持つ MiniMaxM3VLMultiModalProjector が視覚特徴をテキストの隠れサイズにマッピングする前に、spatial_merge_size² のパッチをチャネル次元にグループ化します。

使用例

以下の例では、load_image()で読み込んだ実際の画像に対してモデルを実行します。

import torch
from transformers import AutoModelForImageTextToText, AutoProcessor
from transformers.image_utils import load_image


model = AutoModelForImageTextToText.from_pretrained(
    "MiniMaxAI/MiniMax-M3-preview", dtype=torch.bfloat16, device_map="auto",
)
processor = AutoProcessor.from_pretrained("MiniMaxAI/MiniMax-M3-preview")

image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg")
messages = [
    {
        "role": "user",
        "content": [
            {"type": "image"},
            {"type": "text", "text": "Describe this image briefly."},
        ],
    }
]
text = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
inputs = processor(images=[image], text=text, return_tensors="pt").to(model.device)

generated_ids = model.generate(**inputs, max_new_tokens=32, do_sample=False)
print(processor.batch_decode(generated_ids, skip_special_tokens=True)[0])

Appleの例

この例では、load_image() を使用して実際の画像を読み込み、リンゴの画像についてモデルに質問します。

import torch
from transformers import AutoModelForImageTextToText, AutoProcessor
from transformers.image_utils import load_image


model = AutoModelForImageTextToText.from_pretrained(
    "MiniMaxAI/MiniMax-M3-preview", dtype=torch.bfloat16, device_map="auto",
)
processor = AutoProcessor.from_pretrained("MiniMaxAI/MiniMax-M3-preview")

image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg")
messages = [
    {
        "role": "user",
        "content": [
            {"type": "image"},
            {"type": "text", "text": "How many apples are in this image, and what color are they?"},
        ],
    }
]
text = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
inputs = processor(images=[image], text=text, return_tensors="pt").to(model.device)

generated_ids = model.generate(**inputs, max_new_tokens=32, do_sample=False)
print(processor.batch_decode(generated_ids, skip_special_tokens=True)[0])

最速の推論設定

ctxSDPAデコードMSAデコードMSAデコード adv.SDPAプリフィルMSAプリフィルMSA prefill adv.
2K27.8 tok/s31.0+12%303 ms257 ms1.18×
4K23.4 tok/s30.5+30%684 ms460 ms1.49×
8K17.8 tok/s29.6+66%1906 ms976 ms1.95×
16K12.0 tok/s27.6+130%6110 ms2344 ms2.61×

チェックポイントはネイティブのMXFP8形式で提供されています。デコードスループットにおいて、検証済みの最速構成は、bf16(ロード時にデクアンタイズ)+ MSAブロックスパースアテンションカーネル + テンソル並列およびエキスパート並列 + reduce-overhead cudagraphコンパイルです。2048トークンのプリフィル条件下で、8×B200環境では約31 tok/sのデコード速度を実現します。

ネイティブ FP8 で重みを保持することは、メモリフットプリントを削減する選択肢に過ぎません。この構成では決して高速化されません。 FP8 の Triton によるエキスパート/線形カーネルは、不透明な inductor フォールバックカーネルとして低レベル化され、ホットなエキスパートパスでは cudagraph がキャプチャできません。そのため、torch.compile(fullgraph=True) を使用した場合でも、ネイティブ FP8 のデコードは約 4.2 tok/s(bf16 パスより約 7 倍遅い)に留まります。FP8 は、bf16 の重みがメモリに収まらない場合にのみ使用してください。

config (sdpa ベースライン、TP+EP、2048トークンのプリフィル、8×B200)decode
bf16 のロード時デクアンタイズ + MSA + compile/cudagraph~31 tok/s
bf16 でのロード時デクアンタイズ + sdpa + compile/cudagraph~28 tok/s
ネイティブ FP8 + compile/cudagraph~4 tok/s(メモリのみ、速度を目的としない)

bf16 へのデクォンタイズは、GPU 間の偶数シャード(TP/EP)でのみ動作し、device_map="auto"(パイプライン配置はロード時に OOM する)では動作しません。torchrun を使用して、GPU ごとに 1 プロセスを起動してください。

torchrun --nproc_per_node=8 fastest_m3_vl.py
# fastest_m3_vl.py
import os, sys
import torch
import torch.distributed as dist
from transformers import (
    AutoModelForImageTextToText,
    AutoTokenizer,
    CompileConfig,
    FineGrainedFP8Config,
)
from transformers.distributed import DistributedConfig

# The indexer feeds SDPA an additive float mask; the cuDNN SDP backend segfaults on it (B200).
torch.backends.cuda.enable_cudnn_sdp(False)

model = AutoModelForImageTextToText.from_pretrained(
    "MiniMaxAI/MiniMax-M3-preview",
    dtype=torch.bfloat16,
    # Dequantize the native MXFP8 weights to bf16 at load (the speed win); needs even TP/EP sharding.
    quantization_config=FineGrainedFP8Config(dequantize=True),
    distributed_config=DistributedConfig(
        tp_size=int(os.environ["WORLD_SIZE"]),
        ep_size=int(os.environ["WORLD_SIZE"]),
    ),
    attn_implementation="kernels-staging/msa@v0",  # MSA block-sparse attention kernel
)
model.eval()

tokenizer = AutoTokenizer.from_pretrained("MiniMaxAI/MiniMax-M3-preview")
messages = [{"role": "user", "content": "Summarize the history of computing."}]
inputs = tokenizer.apply_chat_template(
    messages, add_generation_prompt=True, return_tensors="pt", return_dict=True
).to(f"cuda:{os.environ.get('LOCAL_RANK', '0')}")

generated_ids = model.generate(
    **inputs,
    max_new_tokens=128,
    do_sample=False,
    # Static cache + reduce-overhead cudagraph capture is what pushes decode to ~31 tok/s.
    cache_implementation="static",
    compile_config=CompileConfig(mode="reduce-overhead", fullgraph=True),
)
if int(os.environ.get("RANK", "0")) == 0:
    print(tokenizer.decode(generated_ids[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True))

# cudagraph-captured NCCL collectives deadlock the NCCL/CUDA destructors at teardown; the output is
# already produced, so hard-exit to skip the hanging cleanup.
if dist.is_initialized():
    sys.stdout.flush()
    os._exit(0)

MiniMaxM3VLConfig

クラス transformers.MiniMaxM3VLConfig

< >

( 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 = Nonevision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneimage_token_index: int = 200025video_token_index: int = 200026projector_hidden_size: int = 6144tie_word_embeddings: bool = False )

パラメータ

  • vision_config (Union[dict, ~configuration_utils.PreTrainedConfig]、任意) — ビジョンバックボーンの config オブジェクトまたは辞書です。
  • text_config (Union[dict, ~configuration_utils.PreTrainedConfig]、省略可) — テキストバックボーンの設定オブジェクトまたは辞書。
  • image_token_index (int、任意、デフォルトは 200025) — 入力画像のプレースホルダーとして使用される画像トークンのインデックスです。
  • video_token_index (int、任意、デフォルトは 200026) — 入力動画のプレースホルダーとして使用される動画トークンのインデックスです。
  • projector_hidden_size (int、任意、デフォルトは 6144) — テキストおよびビジョンの投影層の次元数。
  • tie_word_embeddings (bool、任意、デフォルトは False) — モデルの tied_weights_keys マッピングに従って重み埋め込みを共有するかどうかを指定します。

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

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

MiniMaxM3VLTextConfig

class transformers.MiniMaxM3VLTextConfig

< >

( 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 = Nonevocab_size: int = 200064hidden_size: int = 6144intermediate_size: int = 3072num_hidden_layers: int = 60num_attention_heads: int = 64num_key_value_heads: int = 4head_dim: int = 128hidden_act: str = 'silu'max_position_embeddings: int = 524288initializer_range: float = 0.02rms_norm_eps: float = 1e-06use_cache: bool = Truepad_token_id: int | None = Nonebos_token_id: int | None = 200034eos_token_id: int | list[int] | None = 200020tie_word_embeddings: bool = Falseattention_dropout: float | int = 0.0num_experts_per_tok: int = 4num_local_experts: int = 128output_router_logits: bool = Falserouter_aux_loss_coef: float = 0.001router_jitter_noise: float = 0.0rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Nonedense_intermediate_size: int = 12288shared_intermediate_size: int = 3072routed_scaling_factor: float = 2.0rotary_dim: int = 64swiglu_alpha: float = 1.702swiglu_limit: float = 7.0mlp_layer_types: list[str] | None = Noneindex_n_heads: int = 4index_head_dim: int = 128index_block_size: int = 128index_topk_blocks: int = 16index_local_blocks: int = 1layer_types: list[str] | None = None )

パラメータ

  • vocab_size (int、任意、デフォルトは 200064) — モデルの語彙サイズ。input_ids で表現できるトークンの種類数を定義します。
  • hidden_size (int、任意、デフォルトは 6144) — 隠れ表現の次元数。
  • intermediate_size (int、任意、デフォルトは3072) — MLP 表現の次元数。
  • num_hidden_layers (int、任意、デフォルトは 60) — Transformer デコーダーの隠れ層の数。
  • num_attention_heads (int、任意、デフォルトは 64) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
  • num_key_value_heads (int、任意、デフォルトは4) — Grouped Query Attention の実装に使用する key_value ヘッドの数を指定します。 num_key_value_heads=num_attention_heads の場合、モデルは Multi Head Attention (MHA) を使用し、 num_key_value_heads=1 の場合は Multi Query Attention (MQA) を使用し、それ以外の場合は GQA が使用されます。 マルチヘッドのチェックポイントを GQA のチェックポイントに変換する際は、各グループの key と value ヘッドは、そのグループ内の元のすべてのヘッドを平均プーリングして構築する必要があります。詳細については、この論文を参照してください。指定しない場合、デフォルトで num_attention_heads が使用されます。
  • head_dim (int、任意、デフォルトは128) — アテンションヘッドの次元です。None の場合、hidden_size // num_attention_heads がデフォルトとして使用されます。
  • hidden_act (str、任意、デフォルトは silu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、 "relu"、"silu" など。
  • max_position_embeddings (int、任意、デフォルトは 524288) — このモデルが使用される可能性のある最大シーケンス長です。
  • initializer_range (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • rms_norm_eps (float、任意、デフォルトは 1e-06) — RMS 正規化レイヤーで使用する epsilon。
  • use_cache (bool、任意、デフォルトは True) — モデルが最後のキー/バリューの注意を返すかどうか(すべてのモデルで利用されるわけではありません)。config.is_decoder=True の場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。
  • pad_token_id (int, 任意) — 語彙内でパディングに使用されるトークン ID。
  • bos_token_id (int、任意、デフォルトは 200034) — 語彙におけるストリーム開始に使用されるトークン ID。
  • eos_token_id (Union[int, list[int]]、任意、デフォルトは 200020) — 語彙におけるストリーム終了に使用されるトークン ID。
  • tie_word_embeddings (bool、任意、デフォルトは False) — モデルの tied_weights_keys マッピングに従って重み埋め込みを共有するかどうかを指定します。
  • attention_dropout (Union[float, int]、任意、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
  • num_experts_per_tok (int、任意、デフォルトは4) — 各トークンをルーティングするエキスパートの数です。これは、トークン選択ルーティングにおける top-k の値です。
  • num_local_experts (int、任意、デフォルトは128) — 各デバイス上のローカルエキスパートの数。num_expertsはnum_local_expertsで割り切れる必要があります。
  • output_router_logits (bool、任意、デフォルトはFalse) — モデルがルーターのロジツを返すかどうかを指定します。これを有効にすると、モデルは補助損失(ロードバランシング損失とルーターのz損失を含む)を出力できるようになります。
  • router_aux_loss_coef (float、任意、デフォルト値は0.001) — 補助的なロードバランシング損失の係数です。MoEモデルにおける不均一なエキスパートルーティングをペナルティするために使用されます。
  • router_jitter_noise (float、任意、デフォルト値は0.0) — トレーニング中にルーターのロジットに追加するノイズの量。負荷分散を改善するために使用します。
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], 省略可) — RoPE 埋め込みの設定パラメータを含む辞書です。この辞書には rope_theta の値が含まれており、より長い max_position_embeddings で RoPE を使用する場合にスケーリングに使用されるパラメータが任意で含まれます。
  • dense_intermediate_size (int, 任意, デフォルトは 12288) — mlp_layer_types のエントリが "dense" であるレイヤーで使用する dense MLP の中間サイズ。
  • shared_intermediate_size (int、任意、デフォルト値は 3072) — MoE レイヤーにおける 1 つの共有エキスパートの中間サイズ。
  • routed_scaling_factor (float、任意、デフォルトは 2.0) — ルーティングされたエキスパートのスケール係数。
  • rotary_dim (int、任意、デフォルトは 64) — RoPE によって回転されるヘッドチャネルの数です。残りのチャネルは変更なしでそのまま渡されます。
  • swiglu_alpha (float、任意、デフォルト値は 1.702) — SwiGLU-OAI 活性化関数のシグモイドゲインです。
  • swiglu_limit (float、任意、デフォルトは 7.0) — SwiGLU-OAI 活性化の gate 投影と up 投影に適用されるクランプの上限値。
  • mlp_layer_types (list[str]、省略可) — レイヤーごとの MLP 選択子: MoE ブロックには "sparse"、dense MLP には "dense" を指定します。
  • index_n_heads (int、任意、デフォルトは 4)— Lightning indexer のドット積スコアリングブランチにおけるヘッド数。
  • index_head_dim (int、任意、デフォルトは 128) — Lightning indexer のヘッドごとのチャネル次元です。
  • index_block_size (int、任意、デフォルトは 128) — 1 つのスコアリング対象ブロックにプーリングされるキートークンの数。
  • index_topk_blocks (int、任意、デフォルトは 16)— 各クエリがアテンションを適用できる、スコア上位のキーブロックの数です。
  • index_local_blocks (int、任意、デフォルトは 1) — クエリ直前のキーブロックのうち、常に可視化され / 注意されるブロックの数。
  • layer_types (list[str]、省略可) — 各レイヤーのインデックスとレイヤータイプを明示的に対応付けるリストです。指定しない場合、config の値に基づいて自動的に生成されます。

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

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

MiniMaxM3VLVisionConfig

class transformers.MiniMaxM3VLVisionConfig

< >

( 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 = Nonehidden_size: int = 1280intermediate_size: int = 5120num_hidden_layers: int = 32num_attention_heads: int = 16num_channels: int = 3image_size: int = 2016patch_size: int = 14temporal_patch_size: int = 2spatial_merge_size: int = 2hidden_act: str = 'gelu'layer_norm_eps: float = 1e-05attention_dropout: float = 0.0rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneinitializer_range: float = 0.02 )

パラメータ

  • hidden_size (int、任意、デフォルトは 1280) — 隠れ表現の次元数です。
  • intermediate_size (int、任意、デフォルトは 5120) — MLP 表現の次元数。
  • num_hidden_layers (int、任意、デフォルトは 32) — Transformer デコーダーの隠れ層の数。
  • num_attention_heads (int、任意、デフォルトは 16) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
  • num_channels (int、任意、デフォルトは3) — 入力チャネル数。
  • image_size (int、任意、デフォルトは 2016) — 各画像のサイズ(解像度)。
  • patch_size (int、任意、デフォルトは 14) — 各パッチのサイズ(解像度)です。
  • temporal_patch_size (int、任意、デフォルトは 2) — 動画入力における3Dパッチ埋め込みで使用する時間方向のパッチサイズです。
  • spatial_merge_size (int, 省略可、デフォルトは 2) — 隣接するパッチをマージしてビジュアルトークンの数を削減するために使用される、空間マージウィンドウのサイズです。
  • hidden_act (str、任意、デフォルトは gelu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、 "relu"、"silu" など。
  • layer_norm_eps (float、任意、デフォルトは 1e-05) — レイヤーノーマル層で使用する epsilon です。
  • attention_dropout (float、任意、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
  • rope_parameters (RopeParameters, 任意) — ビジョンタワーの3D回転位置埋め込み用の標準的なRoPE設定です。
  • initializer_range (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。

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

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

MiniMaxM3VLProcessor

クラス transformers.MiniMaxM3VLProcessor

< >

( image_processor = Nonetokenizer = Nonevideo_processor = Nonechat_template = None**kwargs )

パラメータ

  • image_processor (MiniMaxM3VLImageProcessor) — 画像プロセッサは必須の入力です。
  • tokenizer (tokenizer_class) — トークナイザーは必須の入力です。
  • video_processor (MiniMaxM3VLVideoProcessor) — 動画プロセッサは必須の入力です。
  • chat_template (str) — チャット内のメッセージのリストをトークン化可能な文字列に変換するための Jinja テンプレート。

画像プロセッサ、トークナイザ、および動画プロセッサを単一のプロセッサにラップするMiniMaxM3VLProcessorを構築します。

MiniMaxM3VLProcessor は、MiniMaxM3VLImageProcessor、tokenizer_class、および MiniMaxM3VLVideoProcessor のすべての機能を提供します。詳細については、~MiniMaxM3VLImageProcessor、~tokenizer_class、および ~MiniMaxM3VLVideoProcessor を参照してください。

post_process_image_text_to_text

< >

( generated_outputsskip_special_tokens = Trueclean_up_tokenization_spaces = False**kwargs ) → list[str]

パラメータ

  • generated_outputs (torch.Tensor または np.ndarray) — モデルの generate 関数の出力です。出力は、(batch_size, sequence_length) または (sequence_length,) の形状のテンソルであることが期待されます。
  • skip_special_tokens (bool、省略可、デフォルトはTrue) — 出力から特殊トークンを除去するかどうか。トークナイザーのbatch_decodeメソッドに渡される引数です。
  • clean_up_tokenization_spaces (bool、任意、デフォルトはFalse) — トークン化のスペースを整理するかどうか。トークナイザーのbatch_decodeメソッドに渡される引数です。
  • **kwargs — batch_decode methodに渡す追加の引数。

戻り値

list[str]

デコードされたテキスト。

モデルの出力を後処理して、テキストをデコードします。

MiniMaxM3VLImageProcessor

これは独立した(モジュール化されていない)画像プロセッサです。Qwen2VLImageProcessor と同じパッチ平坦化のアイデアを共有していますが、この 2 つはクラスの大部分に関わる点で分岐しているため、継承していません。リサイズ予算は、Qwen の shortest_edge/longest_edge スキームではなく、max_pixels 属性と {"height", "width"} の size によって駆動されます。smart_resize ヘルパーは max(factor, ...) で初期丸めをクランプし、_preprocess は Qwen の grid_t = 1 + expand の代わりに、実際の時間処理(5D パッチ、temporal_patch_size を満たすための最終フレームの繰り返し、および grid_t 次元)を実行します。したがって、Qwen へのマッピングやサブクラス化は、動作を変更するか、ほぼすべてをオーバーライドする必要があり、プロセッサは独立して保持されています。

class transformers.MiniMaxM3VLImageProcessor

< >

( **kwargs: *<class 'transformers.models.minimax_m3_vl.image_processing_minimax_m3_vl.MiniMaxM3VLImageProcessorKwargs'> )

パラメータ

  • do_convert_rgb (bool、kwargs、optional、デフォルトは True) — 画像を RGB に変換するかどうか。
  • do_resize (bool、kwargs、任意、デフォルトはTrue) — 画像をリサイズするかどうか。
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs、デフォルトは {'shortest_edge' -- 3136, 'longest_edge': 451584}): モデルへの最大入力サイズを指定します。
  • default_to_square (bool、kwargs、任意、デフォルトは False) — size が整数の場合、リサイズ時に正方形の画像をデフォルトとするかどうか。
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — center_crop を適用した後の出力画像のサイズ。
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs、デフォルトは 3) — 画像のリサイズ時に使用するリサンプリングフィルタです。PILImageResampling の列挙型のいずれかを使用できます。do_resize が True に設定されている場合のみ、効果が現れます。
  • do_rescale (bool、kwargs、任意、デフォルトはTrue) — 画像をリスケールするかどうかを指定します。
  • rescale_factor (float、kwargs、任意、デフォルト値は 0.00392156862745098) — do_rescale が True に設定されている場合、画像をリスケールするための係数です。
  • do_normalize (bool、kwargs、optional、デフォルトはTrue) — 画像を正規化するかどうかを指定します。
  • image_mean (Union[float, list[float], tuple[float, ...]]、kwargs、optional、デフォルトは [0.48145466, 0.4578275, 0.40821073]) — 正規化に使用する画像の平均値です。do_normalize が True に設定されている場合のみ有効です。
  • image_std (Union[float, list[float], tuple[float, ...]], kwargs, optional, デフォルト値は [0.26862954, 0.26130258, 0.27577711]) — 正規化に使用する画像の標準偏差です。do_normalize が True に設定されている場合のみ、効果が現れます。
  • do_pad (bool, kwargs, optional) — 画像をパディングするかどうかを指定します。パディングは、バッチ内の最大サイズに合わせるか、画像ごとに固定の正方形サイズに合わせるかのいずれかで行われます。具体的なパディング戦略はモデルによって異なります。
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 画像をパディングする {"height": int, "width" int} のサイズです。前処理に提供されるすべての画像サイズより大きくなければなりません。pad_size が指定されない場合、バッチ内の最大の幅と高さにパディングされます。do_pad=True. の場合のみ適用されます。
  • do_center_crop (bool, kwargs, optional) — 画像を中央クロップするかどうかを指定します。
  • data_format (Union[str, ~image_utils.ChannelDimension]、kwargs、任意) — サポートされているのは ChannelDimension.FIRST のみです。slow processors との互換性のために追加されました。
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 省略可) — 入力画像のチャネル次元の形式です。設定されていない場合、入力画像からチャネル次元の形式が推測されます。次のいずれかになります:
    • "channels_first" または ChannelDimension.FIRST: (num_channels, height, width) 形式の画像。
    • "channels_last" または ChannelDimension.LAST: (高さ, 幅, チャネル数) 形式の画像。
    • "none" または ChannelDimension.NONE: (height, width) 形式の画像。
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — 動画を処理するデバイスです。未設定の場合、入力動画からデバイスが推論されます。
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 'pt' に設定されている場合はスタックされたテンソルを返し、それ以外の場合はテンソルのリストを返します。
  • disable_grouping (bool、kwargs、任意) — サイズごとに画像をグループ化してバッチ処理するのではなく、個別に処理するためにグループ化を無効にするかどうか。None の場合、画像が CPU にある場合は True、それ以外の場合は False に設定されます。この選択は、https://github.com/huggingface/transformers/pull/38157 に詳しく記載されている経験則に基づいています。
  • image_seq_length (int、kwargs、任意) — 入力内の各画像に使用される画像トークンの数です。 後方互換性のために追加されましたが、将来のモデルではプロセッサの属性として設定されるべきです。
  • min_pixels (int, kwargs, 任意, デフォルトは 56 * 56) — 画像をリサイズする際の最小ピクセル数。
  • max_pixels (int, kwargs, optional, デフォルト値は 28 * 28 * 1280) — 画像をリサイズする際の最大ピクセル数。
  • patch_size (int、kwargs、任意、デフォルト値は 14) — ビジョンエンコーダーの空間パッチサイズです。
  • temporal_patch_size (int、kwargs、任意、デフォルト値は 2)— ビジョンエンコーダーの時間方向のパッチサイズです。
  • merge_size (int, kwargs, 任意, デフォルト値は 2) — ビジョンエンコーダから LLM エンコーダへのマージサイズです。

MiniMaxM3VLImageProcessor イメージプロセッサを構築します。

get_number_of_image_patches

< >

( height: intwidth: intimages_kwargs: dict | None = None ) → int

パラメータ

  • height (int) — 入力画像の高さ。
  • width (int) — 入力画像の幅。
  • images_kwargs (dict, 任意) — 画像プロセッサのデフォルト値を上書きするための任意のキーワード引数。

戻り値

int

1枚の画像あたりの画像パッチの数。

指定された画像サイズに対する画像パッチの数を返すユーティリティです。

注: このメソッドを削除しないでください。vLLM が画像入力を伴わずにパッチ数とプレースホルダー数を推定するために使用されます。

patchify

< >

( images: torch.Tensorpatch_size: intmerge_size: inttemporal_patch_size: int )

seq_len、patch_dim の形状のフラットなレイアウトに各画像をパッチ化し、動的な形状を持つピクセルを連結できるようにします。

preprocess

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]**kwargs: *<class 'transformers.models.minimax_m3_vl.image_processing_minimax_m3_vl.MiniMaxM3VLImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature

パラメータ

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — 前処理対象の画像です。ピクセル値が 0 から 255 の範囲にある単一の画像またはバッチを想定しています。ピクセル値が 0 から 1 の範囲にある画像を渡す場合は、do_rescale=False を設定してください。
  • do_convert_rgb (bool、kwargs、任意) — 画像を RGB に変換するかどうかを指定します。
  • do_resize (bool、kwargs、optional) — 画像をリサイズするかどうか。
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — モデルへの最大入力次元を記述します。
  • default_to_square (bool、kwargs、任意) — サイズが整数の場合、リサイズ時に正方形の画像をデフォルトとするかどうか。
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — center_crop を適用した後の出力画像のサイズ。
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — 画像のリサイズ時に使用するリサンプリングフィルタ。PILImageResampling の列挙型のいずれかを使用できます。do_resize が True に設定されている場合のみ有効です。
  • do_rescale (bool、kwargs、optional) — 画像をリスケールするかどうかを指定します。
  • rescale_factor (float、kwargs、任意) — do_rescale が True に設定されている場合、画像をリスケールするための係数。
  • do_normalize (bool, kwargs, optional) — 画像を正規化するかどうかを指定します。
  • image_mean (Union[float, list[float], tuple[float, ...]]、kwargs、optional) — 正規化に使用する画像の平均値。do_normalize が True に設定されている場合のみ有効です。
  • image_std (Union[float, list[float], tuple[float, ...]], kwargs, optional) — 正規化に使用する画像の標準偏差。do_normalize が True に設定されている場合のみ有効です。
  • do_pad (bool, kwargs, optional) — 画像をパディングするかどうかを指定します。パディングは、バッチ内の最大サイズに合わせるか、画像ごとに固定の正方形サイズに合わせるかのいずれかで行われます。具体的なパディング戦略はモデルによって異なります。
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 画像をパディングする {"height": int, "width" int} のサイズです。前処理に提供されるすべての画像サイズより大きくなければなりません。pad_size が指定されない場合、バッチ内の最大の幅と高さにパディングされます。do_pad=True. の場合のみ適用されます。
  • do_center_crop (bool, kwargs, optional) — 画像を中央クロップするかどうかを指定します。
  • data_format (Union[str, ~image_utils.ChannelDimension]、kwargs、任意) — サポートされているのは ChannelDimension.FIRST のみです。slow processors との互換性のために追加されました。
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 省略可) — 入力画像のチャネル次元の形式です。設定されていない場合、入力画像からチャネル次元の形式が推測されます。次のいずれかになります:
    • "channels_first" または ChannelDimension.FIRST: (num_channels, height, width) 形式の画像。
    • "channels_last" または ChannelDimension.LAST: (高さ, 幅, チャネル数) 形式の画像。
    • "none" または ChannelDimension.NONE: (height, width) 形式の画像。
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — 動画を処理するデバイスです。未設定の場合、入力動画からデバイスが推論されます。
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 'pt' に設定されている場合はスタックされたテンソルを返し、それ以外の場合はテンソルのリストを返します。
  • disable_grouping (bool、kwargs、任意) — サイズごとに画像をグループ化してバッチ処理するのではなく、個別に処理するためにグループ化を無効にするかどうか。None の場合、画像が CPU にある場合は True、それ以外の場合は False に設定されます。この選択は、https://github.com/huggingface/transformers/pull/38157 に詳しく記載されている経験則に基づいています。
  • image_seq_length (int、kwargs、任意) — 入力内の各画像に使用される画像トークンの数です。 後方互換性のために追加されましたが、将来のモデルではプロセッサの属性として設定されるべきです。
  • min_pixels (int, kwargs, 任意, デフォルトは 56 * 56) — 画像をリサイズする際の最小ピクセル数。
  • max_pixels (int, kwargs, optional, デフォルト値は 28 * 28 * 1280) — 画像をリサイズする際の最大ピクセル数。
  • patch_size (int、kwargs、任意、デフォルト値は 14) — ビジョンエンコーダーの空間パッチサイズです。
  • temporal_patch_size (int、kwargs、任意、デフォルト値は 2)— ビジョンエンコーダーの時間方向のパッチサイズです。
  • merge_size (int, kwargs, 任意, デフォルト値は 2) — ビジョンエンコーダから LLM エンコーダへのマージサイズです。

戻り値

~image_processing_base.BatchFeature

  • data (dict) — call メソッド(‘pixel_values’ など)によって返される、リスト/配列/テンソルの辞書。
  • tensor_type (Union[None, str, TensorType]、省略可) — 初期化時に PyTorch/Numpy の Tensor 内の整数リストを変換するために、ここで tensor_type を指定できます。

リサイズ

< >

( images: torch.Tensorsize: SizeDictresample: PILImageResampling | tvF.InterpolationMode | int | Nonefactor: int**kwargs )

入力画像のアスペクト比に基づいて動的にリサイズします。

MiniMaxM3VLVideoProcessor

class transformers.MiniMaxM3VLVideoProcessor

< >

( **kwargs: *<class 'transformers.models.minimax_m3_vl.video_processing_minimax_m3_vl.MiniMaxM3VLVideoProcessorKwargs'> )

パラメータ

  • do_convert_rgb (bool、kwargs、optional、デフォルトは True) — 画像を RGB に変換するかどうか。
  • do_resize (bool、kwargs、任意、デフォルトはTrue) — 画像をリサイズするかどうか。
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, デフォルトは {'height' -- 672, 'width': 672}): モデルへの最大入力サイズを指定します。
  • default_to_square (bool、kwargs、任意、デフォルトは False) — size が整数の場合、リサイズ時に正方形の画像をデフォルトとするかどうか。
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs、デフォルトは 3) — 画像のリサイズ時に使用するリサンプリングフィルタです。PILImageResampling の列挙型のいずれかを使用できます。do_resize が True に設定されている場合のみ、効果が現れます。
  • do_rescale (bool、kwargs、任意、デフォルトはTrue) — 画像をリスケールするかどうかを指定します。
  • rescale_factor (float、kwargs、任意、デフォルト値は 0.00392156862745098) — do_rescale が True に設定されている場合、画像をリスケールするための係数です。
  • do_normalize (bool、kwargs、optional、デフォルトはTrue) — 画像を正規化するかどうかを指定します。
  • image_mean (Union[float, list[float], tuple[float, ...]]、kwargs、optional、デフォルトは [0.48145466, 0.4578275, 0.40821073]) — 正規化に使用する画像の平均値です。do_normalize が True に設定されている場合のみ有効です。
  • image_std (Union[float, list[float], tuple[float, ...]], kwargs, optional, デフォルト値は [0.26862954, 0.26130258, 0.27577711]) — 正規化に使用する画像の標準偏差です。do_normalize が True に設定されている場合のみ、効果が現れます。
  • do_center_crop (bool, kwargs, optional) — 画像を中央クロップするかどうかを指定します。
  • do_pad (bool, kwargs, optional) — 画像をパディングするかどうかを指定します。パディングは、バッチ内の最大サイズに合わせるか、画像ごとに固定の正方形サイズに合わせるかのいずれかで行われます。具体的なパディング戦略はモデルによって異なります。
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — center_crop を適用した後の出力画像のサイズ。
  • data_format (Union[str, ~image_utils.ChannelDimension]、kwargs、任意) — サポートされているのは ChannelDimension.FIRST のみです。slow processors との互換性のために追加されました。
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 省略可) — 入力画像のチャネル次元の形式です。設定されていない場合、入力画像からチャネル次元の形式が推測されます。次のいずれかになります:
    • "channels_first" または ChannelDimension.FIRST: (num_channels, height, width) 形式の画像。
    • "channels_last" または ChannelDimension.LAST: (高さ, 幅, チャネル数) 形式の画像。
    • "none" または ChannelDimension.NONE: (height, width) 形式の画像。
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — 動画を処理するデバイスです。未設定の場合、入力動画からデバイスが推論されます。
  • do_sample_frames (bool、kwargs、任意、デフォルトは False) — 処理前に動画からフレームをサンプリングするか、動画全体を処理するかを指定します。
  • video_metadata (Annotated[~video_utils.VideoMetadata | dict | list[dict | ~video_utils.VideoMetadata] | list[list[dict | ~video_utils.VideoMetadata]] | None, None], kwargs) — 動画のメタデータで、総再生時間、fps、総フレーム数に関する情報を含みます。動画からのフレームサンプリングやタイムスタンプの計算に使用されます。動画を処理する前に手動でデコードしようとしている場合を除き、メタデータは渡さないでください。
  • fps (Union[float, int]、kwargs、デフォルトは 1.0) — do_sample_frames=True の場合、1 秒あたりにサンプリングするターゲットフレーム数。
  • num_frames (Annotated[int | None, None], kwargs) — do_sample_frames=True の場合、サンプリングするフレームの最大数。
  • return_metadata (bool、kwargs、任意、デフォルトは False) — 動画メタデータを返すかどうかを指定します。動画メタデータは、動画の長さ、fps、デコードバックエンドなどの情報を含むオブジェクトです。
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 設定されている場合、特定のフレームワークのテンソルを返します。受け入れられる値は以下の通りです:
    • 'pt': PyTorchのtorch.Tensorオブジェクトを返します。
    • 'np': NumPyのnp.ndarrayオブジェクトを返します。
  • patch_size (int、kwargs、任意、デフォルト値は 14) — ビジョンエンコーダーの空間パッチサイズです。
  • temporal_patch_size (int、kwargs、任意、デフォルト値は 2)— ビジョンエンコーダーの時間方向のパッチサイズです。
  • merge_size (int, kwargs, 任意, デフォルト値は 2) — ビジョンエンコーダから LLM エンコーダへのマージサイズです。
  • min_pixels (int、kwargs、任意、デフォルトは 4 * 28 * 28) — フレームをリサイズする際の最小ピクセル数。
  • max_pixels (int, kwargs, 任意, デフォルト値は 768 * 28 * 28) — フレームをリサイズする際の最大ピクセル数。
  • total_pixels (int、kwargs、任意、デフォルトは int(64000 * 28 * 28 * 0.9)) — 動画の全フレームにわたるピクセル数の最大値です。
  • min_frames (int, kwargs, 任意, デフォルト値は 4) — サンプリング可能な最小フレーム数です。
  • max_frames (int、kwargs、任意、デフォルト値は 768) — サンプリング可能な最大フレーム数です。
  • vision_segment_max_frames (int、kwargs、オプション、デフォルト値は4)— ビジョンアテンションセグメントあたりの最大時間パッチ数。Noneに設定すると、各動画を1つのセグメントとして保持します。
  • **kwargs (ProcessingKwargs、任意) — 各モダリティ(テキスト、画像、動画、音声)の追加処理オプション。モデル固有のパラメータは上記にリストされています。サポートされている引数の完全なリストについては、TypedDictクラスを参照してください。

MiniMaxM3VLVideoProcessor ビデオプロセッサを構築します。

get_num_of_video_patches

< >

( num_frames: intheight: intwidth: intvideos_kwargs: dict | None = None ) → int

パラメータ

  • num_frames (int) — 入力動画のフレーム数。
  • height (int) — 入力動画の高さ。
  • width (int) — 入力動画の幅。
  • videos_kwargs (dict, 省略可) — 動画プロセッサのデフォルト値を上書きするための任意のキーワード引数。

戻り値

int

1つの動画あたりの動画パッチの数。

指定された動画サイズに対する動画パッチの数を返すユーティリティです。

注: このメソッドを削除しないでください。vLLM が、動画入力を伴わずにパッチ数とプレースホルダー数を推定するために使用しています。

MiniMaxM3VLVisionModel

class transformers.MiniMaxM3VLVisionModel

< >

( config: MiniMaxM3VLVisionConfig )

パラメータ

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

Minimax M3 Vlのベースモデルで、特定のヘッドを上に載せず、生のhidden-statesを出力します。

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

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

forward

< >

( pixel_values: Tensorgrid_thw: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)

パラメータ

  • pixel_values (torch.Tensor、形状 (batch_size, num_channels, image_size, image_size)) — 入力画像に対応するテンソルです。ピクセル値は MiniMaxM3VLImageProcessor を使用して取得できます。詳細については MiniMaxM3VLImageProcessor.call() を参照してください(MiniMaxM3VLProcessor は画像の処理に MiniMaxM3VLImageProcessor を使用します)。
  • grid_thw (torch.Tensor、形状 (num_images, 3)) — 各画像のフィーチャー形状の時間軸、高さ、幅。

戻り値

BaseModelOutputWithPooling または tuple(torch.Tensor)

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

MiniMaxM3VLVisionModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • last_hidden_state (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンス。

  • pooler_output (torch.Tensor、shape (batch_size, hidden_size)) — シーケンスの最初のトークン(分類トークン)の最終層の隠れ状態を、補助的な事前学習タスクに使用される層でさらに処理した後の出力。例えば、BERT系のモデルでは、線形層とtanh活性化関数を経て処理された分類トークンを返します。この線形層の重みは、事前学習中の次の文予測(分類)目的から学習されます。

  • hidden_states (tuple(torch.Tensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple(torch.Tensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.Tensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

MiniMaxM3VLTextModel

class transformers.MiniMaxM3VLTextModel

< >

( config: MiniMaxM3VLTextConfig )

パラメータ

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

Minimax M3 Vl Text Modelの生モデルで、特定のヘッドを上に載せず、生のhidden-statesを出力します。

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = 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'> ) → MoeModelOutputWithPast or tuple(torch.Tensor)

パラメータ

  • 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とは?

  • 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.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。

戻り値

MoeModelOutputWithPast または tuple(torch.Tensor)

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

MiniMaxM3VLTextModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • last_hidden_state (torch.Tensor、形状 (batch_size, sequence_length, 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.Tensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple(torch.Tensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.Tensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

  • router_logits (tuple(torch.Tensor)、optional、output_router_probs=True と config.add_router_probs=True が渡された場合、または config.output_router_probs=True の場合に返されます) — 各層に対応する torch.Tensor のタプルで、形状は (batch_size, sequence_length, num_experts) です。

    MoE ルーターによって計算される生(raw)のルーター logits(softmax 適用後)であり、Mixture of Experts モデルの補助損失を計算するためにこれらの用語が使用されます。

MiniMaxM3VLModel

class transformers.MiniMaxM3VLModel

< >

( config: MiniMaxM3VLConfig )

パラメータ

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

MiniMax M3 VL バックボーン(ビジョン + プロジェクター + テキスト)、LM ヘッドなし。

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Nonepixel_values_videos: typing.Optional[torch.Tensor] = Noneimage_grid_thw: typing.Optional[torch.Tensor] = Nonevideo_grid_thw: 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] = Nonemm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MiniMaxM3VLModelOutputWithPast or tuple(torch.Tensor)

パラメータ

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

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

    入力IDとは何ですか?

  • pixel_values (torch.Tensor、形状 (batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は MiniMaxM3VLImageProcessor を使用して取得できます。詳細は MiniMaxM3VLImageProcessor.call() を参照してください(MiniMaxM3VLProcessor は画像の処理に MiniMaxM3VLImageProcessor を使用します)。
  • pixel_values_videos (torch.Tensor、形状 (batch_size, num_frames, num_channels, frame_size, frame_size)、任意) — 入力動画に対応するテンソルです。動画のピクセル値は、MiniMaxM3VLVideoProcessor を使用して取得できます。詳細については、MiniMaxM3VLVideoProcessor.call() を参照してください(MiniMaxM3VLProcessor は、動画の処理に MiniMaxM3VLVideoProcessor を使用します)。
  • image_grid_thw (torch.Tensor、形状 (num_images, 3)、任意) — LLM における各画像のフィーチャー形状の時間軸、高さ、幅です。
  • video_grid_thw (torch.Tensor、形状 (num_videos, 3)、任意) — LLM における各動画のフィーチャー形状の時間軸、高さ、幅です。
  • 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とは?

  • 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.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • mm_encoder_outputs (dict[str, ~modeling_outputs.BaseModelOutputWithPooling], 省略可) — キーがサポートされているモダリティ、値がそのモダリティのエンコード済み出力である辞書。各エンコード済み出力は、(pooler_output, 省略可: last_hidden_states, 省略可: hidden_states, 省略可: attentions) pooler_output (形状 (batch_size, sequence_length, hidden_size), 省略可) からなるタプルです。pooler_output は、エンコーダーのマルチモーダル特徴量をテキスト埋め込みにマージしたシーケンスです。

戻り値

MiniMaxM3VLModelOutputWithPast または tuple(torch.Tensor)

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

MiniMaxM3VLModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • last_hidden_state (torch.Tensor、形状 (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 ガイドを参照してください。

    逐次デコーディングを高速化するために使用できる(past_key_values 入力参照)、事前計算済みの隠れ状態(自己注意ブロックのキーとバリュー)が含まれます。

  • hidden_states (tuple(torch.Tensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple(torch.Tensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.Tensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

  • image_hidden_states (torch.Tensor、任意) — サイズが(num_image_patches, hidden_size)のtorch.Tensor。 ビジョンエンコーダーによって生成され、最後の隠れ状態を投影した後のモデルのimage_hidden_statesです。

  • video_hidden_states (torch.Tensor、任意) — サイズが(num_video_patches, hidden_size)のtorch.Tensor。 ビジョンエンコーダーによって生成され、最後の隠れ状態を投影した後のモデルのvideo_hidden_statesです。

  • router_logits (tuple(torch.Tensor)、optional、output_router_logits=True が渡された場合に返されます) — 各層に対応する torch.Tensor のタプルで、形状は (batch_size, sequence_length, num_experts) です。

MiniMaxM3VLForCausalLM

クラス transformers.MiniMaxM3VLForCausalLM

< >

( config: MiniMaxM3VLTextConfig )

パラメータ

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

因果言語モデリング用の Minimax M3 Vl モデル。

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = 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 = Noneoutput_router_logits: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeCausalLMOutputWithPast or tuple(torch.Tensor)

パラメータ

  • 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とは?

  • 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.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • labels (torch.LongTensor 形状 (batch_size, sequence_length), 任意) — 因果言語モデリングの損失を計算するためのラベル。インデックスは [-100, 0, ..., config.vocab_size] (参照 input_ids のドキュメント文字列を参照)。インデックスが -100 に設定されたトークンは無視(マスク)され、損失はラベルが [0, ..., config.vocab_size].

    ラベルは内部でシフトされるため、labels[..., 1:]を使用してlogits[..., :-1, :]を予測します。 input_idsと一致するシフトされていないラベル(つまりlabels = input_ids)を渡してください。ラベルを渡す前に、ご自身でシフトしないでください。

    ラベルがすでにシフトされている場合(シーケンス並列化など)、shift_labels キーワード引数として渡すと、そのまま使用されます。損失を計算するには、labels も引き続き渡す必要があります。

  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。
  • output_router_logits (bool, 省略可) — すべてのルーターの logits を返すかどうか。ルーター損失の計算に有用ですが、推論時には返すべきではありません。
  • logits_to_keep (Union[int, torch.Tensor]、省略可、デフォルトは 0) — int の場合、最後の logits_to_keep トークンについて logits を計算します。0 の場合、すべての input_ids について logits を計算します(特殊ケース)。生成には最後のトークンの logits だけで十分であり、そのトークンのみについて計算することでメモリを節約できます。これは、長いシーケンスや大規模な語彙サイズの場合に特に顕著な効果があります。 torch.Tensor の場合、シーケンス長次元で保持するインデックスに対応する 1 次元テンソルである必要があります。これは、パックされたテンソル形式(バッチとシーケンス長を単一の次元にまとめた形式)を使用する場合に有用です。

戻り値

MoeCausalLMOutputWithPast または tuple(torch.Tensor)

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

MiniMaxM3VLForCausalLMのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • loss (torch.Tensor、形状 (1,)、任意、labels が指定された場合に返されます) — 言語モデリングの損失(次のトークンの予測用)。

  • logits (torch.Tensor、形状 (batch_size, sequence_length, config.vocab_size)) — 言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。

  • aux_loss (torch.Tensor、任意、output_router_logits=True が渡された場合、または config.output_router_logits=True かつモデルがロードバランシング損失でルーターを学習する場合に返されます) — スパースモジュールのロードバランシング補助損失。ルーターバイアスでエキスパートをバランスさせるモデル(DeepSeek-V3 とそこから派生したアーキテクチャ)は、router_logits を返しながらも、ここでは None を返します。

  • router_logits (tuple(torch.Tensor)、optional、output_router_logits=True が渡された場合または config.output_router_logits=True の場合に返されます) — torch.Tensor のタプル(スパース層ごとに1つ)、形状は (batch_size * sequence_length, num_experts)。

    MoEルーターによって計算される生のルーターロジットです。ロードバランシング損失の計算や、トークンがどのようにエキスパートにディスパッチされるかの確認に使用できます。

  • past_key_values (Cache、任意、use_cache=True が渡された場合または config.use_cache=True の場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。

    逐次デコーディングを高速化するために使用できる(past_key_values 入力参照)、事前計算済みの隠れ状態(自己注意ブロックのキーとバリュー)が含まれます。

  • hidden_states (tuple(torch.Tensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple(torch.Tensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.Tensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

例:

>>> from transformers import AutoTokenizer, MiniMaxM3VLForCausalLM

>>> model = MiniMaxM3VLForCausalLM.from_pretrained("mistralai/MiniMaxM3VL-8x7B-v0.1")
>>> tokenizer = AutoTokenizer.from_pretrained("mistralai/MiniMaxM3VL-8x7B-v0.1")

>>> prompt = "Hey, are you conscious? Can you talk to me?"
>>> inputs = tokenizer(prompt, return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, max_length=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."

MiniMaxM3SparseForConditionalGeneration

クラス transformers.MiniMaxM3SparseForConditionalGeneration

< >

( config: MiniMaxM3VLConfig )

パラメータ

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

LM head(テキスト + ビジョン)付きの MiniMax M3 VL フルモデル。

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Nonepixel_values_videos: typing.Optional[torch.Tensor] = Noneimage_grid_thw: typing.Optional[torch.Tensor] = Nonevideo_grid_thw: 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] = Noneoutput_router_logits: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0mm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MiniMaxM3VLCausalLMOutputWithPast or tuple(torch.Tensor)

パラメータ

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

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

    入力IDとは何ですか?

  • pixel_values (torch.Tensor、形状 (batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は MiniMaxM3VLImageProcessor を使用して取得できます。詳細は MiniMaxM3VLImageProcessor.call() を参照してください(MiniMaxM3VLProcessor は画像の処理に MiniMaxM3VLImageProcessor を使用します)。
  • pixel_values_videos (torch.Tensor、形状 (batch_size, num_frames, num_channels, frame_size, frame_size)、任意) — 入力動画に対応するテンソルです。動画のピクセル値は、MiniMaxM3VLVideoProcessor を使用して取得できます。詳細については、MiniMaxM3VLVideoProcessor.call() を参照してください(MiniMaxM3VLProcessor は、動画の処理に MiniMaxM3VLVideoProcessor を使用します)。
  • image_grid_thw (torch.Tensor、形状 (num_images, 3)、任意) — LLM における各画像のフィーチャー形状の時間軸、高さ、幅です。
  • video_grid_thw (torch.Tensor、形状 (num_videos, 3)、任意) — LLM における各動画のフィーチャー形状の時間軸、高さ、幅です。
  • 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とは?

  • 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.Tensor、形状 (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] の範囲内のラベルを持つトークンに対してのみ計算されます。
  • output_router_logits (bool, 省略可) — すべてのルーターの logits を返すかどうか。ルーター損失の計算に有用ですが、推論時には返すべきではありません。
  • logits_to_keep (Union[int, torch.Tensor]、省略可、デフォルトは 0) — int の場合、最後の logits_to_keep トークンについて logits を計算します。0 の場合、すべての input_ids について logits を計算します(特殊ケース)。生成には最後のトークンの logits だけで十分であり、そのトークンのみについて計算することでメモリを節約できます。これは、長いシーケンスや大規模な語彙サイズの場合に特に顕著な効果があります。 torch.Tensor の場合、シーケンス長次元で保持するインデックスに対応する 1 次元テンソルである必要があります。これは、パックされたテンソル形式(バッチとシーケンス長を単一の次元にまとめた形式)を使用する場合に有用です。
  • mm_encoder_outputs (dict[str, ~modeling_outputs.BaseModelOutputWithPooling], 省略可) — キーがサポートされているモダリティ、値がそのモダリティのエンコード済み出力である辞書。各エンコード済み出力は、(pooler_output, 省略可: last_hidden_states, 省略可: hidden_states, 省略可: attentions) pooler_output (形状 (batch_size, sequence_length, hidden_size), 省略可) からなるタプルです。pooler_output は、エンコーダーのマルチモーダル特徴量をテキスト埋め込みにマージしたシーケンスです。

戻り値

MiniMaxM3VLCausalLMOutputWithPast または tuple(torch.Tensor)

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

MiniMaxM3SparseForConditionalGenerationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • loss (torch.Tensor、形状 (1,)、任意、labels が指定された場合に返されます) — 言語モデリングの損失(次のトークンの予測用)。

  • logits (torch.Tensor、形状 (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.Tensor]、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(モデルに埋め込み層がある場合は埋め込みの出力用 1 つ、各層の出力用 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor]、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.Tensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

  • image_hidden_states (torch.Tensor、任意) — サイズが(num_image_patches, hidden_size)のtorch.Tensor。 ビジョンエンコーダーによって生成され、最後の隠れ状態を投影した後のモデルのimage_hidden_statesです。

  • video_hidden_states (torch.Tensor、任意) — サイズが(num_video_patches, hidden_size)のtorch.Tensor。 ビジョンエンコーダーによって生成され、最後の隠れ状態を投影した後のモデルのvideo_hidden_statesです。

  • aux_loss (torch.Tensor、任意、output_router_logits=True が渡された場合に返されます) — スパースモジュール用の負荷分散補助損失です。

  • router_logits (tuple(torch.Tensor)、optional、output_router_logits=True が渡された場合に返されます) — 各層に対応する torch.Tensor のタプルで、形状は (batch_size, sequence_length, num_experts) です。

例:

>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, MiniMaxM3SparseForConditionalGeneration

>>> model = MiniMaxM3SparseForConditionalGeneration.from_pretrained("mini_max_m3_sparse-hf/mini_max_m3_sparse-1.5-7b-hf")
>>> processor = AutoProcessor.from_pretrained("mini_max_m3_sparse-hf/mini_max_m3_sparse-1.5-7b-hf")

>>> prompt = "USER: <image>\nWhat's the content of the image? ASSISTANT:"
>>> url = "https://www.ilankelman.org/stopsigns/australia.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> inputs = processor(images=image, text=prompt, return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(**inputs, max_new_tokens=15)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"USER:  \nWhat's the content of the image? ASSISTANT: The image features a busy city street with a stop sign prominently displayed"
Update on GitHub