# NemotronH Omni

NemotronH Omniは、NVIDIAによるマルチモーダル推論モデルです。[NemotronH](./nemotron_h)ハイブリッドMamba-Transformer言語モデルに、[RADIO](./radio)ビジョンエンコーダーと、オプションのParakeetベースのサウンドエンコーダーを組み合わせます。画像（および動画）のパッチは、RADIOタワーとピクセルシャッフルMLPを介して、`<image>` / `<video>`コンテキストトークンの位置で、言語モデルの埋め込み空間に射影されます。音声クリップも同様に、`<audio>`の位置で射影されます。その結果、テキスト、画像、動画、音声を統合的に推論する単一の自己回帰モデルが得られます。

以下の例では、[AutoModelForImageTextToText](/docs/transformers/main/ja/model_doc/auto#transformers.AutoModelForImageTextToText) を使用して画像とテキストプロンプトを推論する方法を示しています。

```python
from transformers import AutoModelForImageTextToText, AutoProcessor

model_id = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16"

processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(
    model_id,
    device_map="auto",
    # the Parakeet audio encoder has no flash-attention kernel, so pin that tower to sdpa
    attn_implementation={"": "flash_attention_2", "audio_config": "sdpa"},
)

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image",
                "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg",
            },
            {"type": "text", "text": "Describe this image in detail."},
        ],
    }
]
inputs = processor.apply_chat_template(
    messages,
    add_generation_prompt=True,
    tokenize=True,
    return_dict=True,
    return_tensors="pt",
).to(model.device)

output = model.generate(**inputs, max_new_tokens=128, do_sample=False)
print(processor.decode(output[0, inputs["input_ids"].shape[-1] :], skip_special_tokens=True))
```

## NemotronH_Omni_Reasoning_V3_Config[[transformers.NemotronH_Omni_Reasoning_V3_Config]]

#### transformers.NemotronH_Omni_Reasoning_V3_Config[[transformers.NemotronH_Omni_Reasoning_V3_Config]]

```python
transformers.NemotronH_Omni_Reasoning_V3_Config(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, text_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, audio_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, force_image_size: int | None = None, downsample_ratio: float = 0.5, projector_hidden_size: int = 4096, vision_hidden_size: int = 1280, video_pruning_rate: float = 0.0, video_temporal_patch_size: int = 2, image_token_id: int | None = None, video_token_id: int | None = None, audio_token_id: int | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/nemotron_h_omni/configuration_nemotron_h_omni.py#L28)

**パラメータ:**

vision_config (`dict` または `RadioConfig`、*任意*) : RADIO ビジョンエンコーダーの設定。デフォルトではデフォルトの [RadioConfig](/docs/transformers/main/ja/model_doc/radio#transformers.RadioConfig) が使用されます。

text_config (`dict` または `NemotronHConfig`、*任意*) : NemotronH 言語モデルの設定。デフォルトではデフォルトの [NemotronHConfig](/docs/transformers/main/ja/model_doc/nemotron_h#transformers.NemotronHConfig) が使用されます。

audio_config (`dict` または `ParakeetEncoderConfig`、*任意*) : 任意の Parakeet 音声エンコーダーの設定。`None` を指定すると、音声ブランチが無効になります。

force_image_size (`int`, *optional*) : ビジョンタワーが想定する固定の入力画像解像度（ピクセル単位）。

downsample_ratio (`float`、*optional*、デフォルトは 0.5) : 視覚特徴に適用されるピクセルシャッフルによる空間的下位サンプリング比率。

projector_hidden_size (`int`、*optional*、デフォルトは 4096) : vision-to-LLM MLP プロジェクターの隠れ層サイズ。

vision_hidden_size (`int`、*optional*、デフォルトは 1280) : RADIO の視覚特徴の隠れ層サイズ。

video_pruning_rate (`float`、*任意*、デフォルト値は 0.0) : Efficient-Video-Sampling のトークンプルーニング率。`0.0` を設定するとプルーニングが無効になります。

video_temporal_patch_size (`int`、*optional*、デフォルトは 2) : ビデオエンベッダーによって 1 つの時間的パッチに集約されるフレーム数。

image_token_id (`int`, *任意*) : `input_ids`内で画像コンテキストのプレースホルダーとして使用されるトークンID。

video_token_id (`int`, *任意*) : `input_ids`内で、動画コンテキストのプレースホルダーとして使用されるトークンID。

audio_token_id (`int`, *任意*) : `input_ids`内で音声コンテキストのプレースホルダーとして使用されるトークンID。

これは、Nemotron H OmniModel の設定を保存するための設定クラスです。指定された引数に基づいて Nemotron H Omni モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16) と同様の設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

## NemotronH_Omni_Reasoning_V3ImageProcessor[[transformers.NemotronH_Omni_Reasoning_V3ImageProcessor]]

#### transformers.NemotronH_Omni_Reasoning_V3ImageProcessor[[transformers.NemotronH_Omni_Reasoning_V3ImageProcessor]]

```python
transformers.NemotronH_Omni_Reasoning_V3ImageProcessor(**kwargs: *<class 'transformers.models.nemotron_h_omni.image_processing_nemotron_h_omni.NemotronH_Omni_Reasoning_V3ImageProcessorKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/nemotron_h_omni/image_processing_nemotron_h_omni.py#L98)

**パラメータ:**

do_convert_rgb (`bool`, *kwargs*, *optional*, デフォルトは `True`) : 画像を RGB に変換するかどうか。

do_resize (`bool`, *kwargs*, *optional*) : 画像をリサイズするかどうか。

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : モデルへの最大入力次元を記述します。

default_to_square (`bool`, *kwargs*, *任意*、デフォルトは `True`) : 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*, *optional*, デフォルトは `True`) : 画像をリスケールするかどうか。

rescale_factor (`float`, *kwargs*, *optional*, デフォルトは `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*, *任意*) : 画像にパディングを適用するかどうか。パディングは、バッチ内の最大サイズに合わせるか、画像ごとに固定の正方形サイズに合わせるかのいずれかで行われます。正確なパディング戦略はモデルによって異なります。

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*、*optional*) : 対応するのは `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`: (height, width, num_channels) 形式の画像。 - `"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*, *optional*) : 画像をサイズごとにグループ化してバッチ処理するのではなく、個別に処理するためにグループ化を無効にするかどうかを指定します。None の場合、画像が CPU にある場合は True、それ以外の場合は False に設定されます。この選択は、https://github.com/huggingface/transformers/pull/38157 に詳しく記載されている実証的な観察に基づいています。

image_seq_length (`int`, *kwargs*, *任意*) : 入力内の各画像に使用される画像トークンの数です。後方互換性のために追加されましたが、将来のモデルではプロセッサの属性として設定されるべきです。

patch_size (`int`, *kwargs*, *optional*, デフォルトは 16) : ビジョン・タワーの 1 つのパッチの辺の長さ（ピクセル単位）。

downsample_ratio (`float`, *kwargs*, *optional*, デフォルト値は 0.5) : モデルが適用するピクセルシャッフルによる空間的下サンプリング比率。パッチグリッドの各辺は、この比率の逆数の整数倍になります。

min_num_patches (`int`, *kwargs*, *optional*, デフォルトは 1024) : 画像がリサイズされる際の、`patch_size` パッチの最小数。

max_num_patches (`int`, *kwargs*, *optional*, デフォルトは 13312) : 画像がリサイズされる際の `patch_size` パッチの最大数。`0` を指定すると上限が解除されます。

max_model_len (`int`, *kwargs*, *optional*, デフォルトは 16384) : 言語モデルのコンテキスト長です。1回の呼び出しにおける画像のパッチ予算の上限を決定します。

NemotronH_Omni_Reasoning_V3ImageProcessor 画像プロセッサを構築します。

#### preprocess[[transformers.NemotronH_Omni_Reasoning_V3ImageProcessor.preprocess]]

```python
preprocess(images, **kwargs: *<class 'transformers.models.nemotron_h_omni.image_processing_nemotron_h_omni.NemotronH_Omni_Reasoning_V3ImageProcessorKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/nemotron_h_omni/image_processing_nemotron_h_omni.py#L122)

**パラメータ:**

images (``) : Image to preprocess. Expects a single or batch of images with pixel values ranging from 0 to 255. If passing in images with pixel values between 0 and 1, set `do_rescale=False`.

do_convert_rgb (`bool`, *kwargs*, *optional*) : 画像を RGB に変換するかどうか。

do_resize (`bool`, *kwargs*, *optional*) : 画像をリサイズするかどうか。

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : モデルへの最大入力次元を記述します。

default_to_square (`bool`, *kwargs*, *optional*) : size が int の場合、リサイズ時に正方形の画像をデフォルトとするかどうか。

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*, *任意*) : 画像をリスケールするかどうか。

rescale_factor (`float`, *kwargs*, *optional*) : `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*, *任意*) : 画像にパディングを適用するかどうか。パディングは、バッチ内の最大サイズに合わせるか、画像ごとに固定の正方形サイズに合わせるかのいずれかで行われます。正確なパディング戦略はモデルによって異なります。

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*、*optional*) : 対応するのは `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`: (height, width, num_channels) 形式の画像。 - `"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*, *optional*) : 画像をサイズごとにグループ化してバッチ処理するのではなく、個別に処理するためにグループ化を無効にするかどうかを指定します。None の場合、画像が CPU にある場合は True、それ以外の場合は False に設定されます。この選択は、https://github.com/huggingface/transformers/pull/38157 に詳しく記載されている実証的な観察に基づいています。

image_seq_length (`int`, *kwargs*, *任意*) : 入力内の各画像に使用される画像トークンの数です。後方互換性のために追加されましたが、将来のモデルではプロセッサの属性として設定されるべきです。

patch_size (`int`, *kwargs*, *optional*, デフォルトは 16) : ビジョン・タワーの 1 つのパッチの辺の長さ（ピクセル単位）。

downsample_ratio (`float`, *kwargs*, *optional*, デフォルト値は 0.5) : モデルが適用するピクセルシャッフルによる空間的下サンプリング比率。パッチグリッドの各辺は、この比率の逆数の整数倍になります。

min_num_patches (`int`, *kwargs*, *optional*, デフォルトは 1024) : 画像がリサイズされる際の、`patch_size` パッチの最小数。

max_num_patches (`int`, *kwargs*, *optional*, デフォルトは 13312) : 画像がリサイズされる際の `patch_size` パッチの最大数。`0` を指定すると上限が解除されます。

max_model_len (`int`, *kwargs*, *optional*, デフォルトは 16384) : 言語モデルのコンテキスト長です。1回の呼び出しにおける画像のパッチ予算の上限を決定します。

**戻り値:** `~image_processing_base.BatchFeature`

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

## NemotronH_Omni_Reasoning_V3VideoProcessor[[transformers.NemotronH_Omni_Reasoning_V3VideoProcessor]]

#### transformers.NemotronH_Omni_Reasoning_V3VideoProcessor[[transformers.NemotronH_Omni_Reasoning_V3VideoProcessor]]

```python
transformers.NemotronH_Omni_Reasoning_V3VideoProcessor(**kwargs: *<class 'transformers.models.nemotron_h_omni.video_processing_nemotron_h_omni.NemotronH_Omni_Reasoning_V3VideoProcessorInitKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/nemotron_h_omni/video_processing_nemotron_h_omni.py#L54)

**パラメータ:**

- ****kwargs** (`NemotronH_Omni_Reasoning_V3VideoProcessorInitKwargs`, *optional*) : 各モダリティ（テキスト、画像、動画、音声）の追加処理オプションです。モデル固有のパラメータは上記にリストされています。サポートされている引数の完全なリストについては、TypedDict クラスを参照してください。

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

## NemotronH_Omni_Reasoning_V3Processor[[transformers.NemotronH_Omni_Reasoning_V3Processor]]

#### transformers.NemotronH_Omni_Reasoning_V3Processor[[transformers.NemotronH_Omni_Reasoning_V3Processor]]

```python
transformers.NemotronH_Omni_Reasoning_V3Processor(image_processor = None, video_processor = None, tokenizer = None, feature_extractor = None, chat_template = None, audio_sampling_rate: int = 16000, audio_subsampling_factor: int = 8, audio_hop_length: int = 160, video_temporal_patch_dim: int = 2, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/nemotron_h_omni/processing_nemotron_h_omni.py#L44)

**パラメータ:**

image_processor (`NemotronH_Omni_Reasoning_V3ImageProcessor`) : 画像プロセッサは必須の入力です。

video_processor (`NemotronH_Omni_Reasoning_V3VideoProcessor`) : 動画プロセッサは必須の入力です。

tokenizer (`tokenizer_class`) : トークナイザーは必須の入力です。

feature_extractor (`feature_extractor_class`) : 特徴量抽出器は必須の入力です。

chat_template (`str`) : チャット内のメッセージのリストをトークン化可能な文字列に変換するための Jinja テンプレート。

audio_sampling_rate (`int`、*optional*、デフォルトは 16000) : 音声波形が想定されるサンプリングレート (Hz)。

audio_subsampling_factor (`int`、*optional*、デフォルトは 8) : サウンドエンコーダーがメルフレームをサブサンプリングする倍率。オーディオプレースホルダーランのサイズを決定するために使用されます。

audio_hop_length (`int`, *optional*, デフォルトは 160) : 連続する mel フレーム間のホップ長（サンプル数）。

video_temporal_patch_dim (`int`、*optional*、デフォルトは 2) : モデルのビデオエンベッダーによって 1 つの時間的パッチに集約されるフレーム数。

画像プロセッサ、動画プロセッサ、トークナイザ、特徴抽出器を単一のプロセッサにラップする NemotronH_Omni_Reasoning_V3Processor を構築します。

[NemotronH_Omni_Reasoning_V3Processor](/docs/transformers/main/ja/model_doc/nemotron_h_omni#transformers.NemotronH_Omni_Reasoning_V3Processor) は、[NemotronH_Omni_Reasoning_V3ImageProcessor](/docs/transformers/main/ja/model_doc/nemotron_h_omni#transformers.NemotronH_Omni_Reasoning_V3ImageProcessor)、[NemotronH_Omni_Reasoning_V3VideoProcessor](/docs/transformers/main/ja/model_doc/nemotron_h_omni#transformers.NemotronH_Omni_Reasoning_V3VideoProcessor)、`tokenizer_class`、および `feature_extractor_class` のすべての機能を提供します。詳細については、[~NemotronH_Omni_Reasoning_V3ImageProcessor](/docs/transformers/main/ja/model_doc/nemotron_h_omni#transformers.NemotronH_Omni_Reasoning_V3ImageProcessor)、[~NemotronH_Omni_Reasoning_V3VideoProcessor](/docs/transformers/main/ja/model_doc/nemotron_h_omni#transformers.NemotronH_Omni_Reasoning_V3VideoProcessor)、`~tokenizer_class`、および `~feature_extractor_class` を参照してください。

#### batch_decode[[transformers.NemotronH_Omni_Reasoning_V3Processor.batch_decode]]

```python
batch_decode(*args, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/nemotron_h_omni/processing_nemotron_h_omni.py#L287)

トークナイザーの[batch_decode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.batch_decode)にフォワードします。

#### decode[[transformers.NemotronH_Omni_Reasoning_V3Processor.decode]]

```python
decode(*args, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/nemotron_h_omni/processing_nemotron_h_omni.py#L291)

トークナイザーの[decode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.decode)にフォワードします。

#### post_process_image_text_to_text[[transformers.NemotronH_Omni_Reasoning_V3Processor.post_process_image_text_to_text]]

```python
post_process_image_text_to_text(generated_outputs, skip_special_tokens = True, clean_up_tokenization_spaces = False, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/nemotron_h_omni/processing_nemotron_h_omni.py#L295)

モデルが生成したトークンIDをテキストにデコードします。

#### replace_video_token[[transformers.NemotronH_Omni_Reasoning_V3Processor.replace_video_token]]

```python
replace_video_token(video_inputs: dict, video_idx: int, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/nemotron_h_omni/processing_nemotron_h_omni.py#L169)

`<video>`を、temporal patch（tubelet）ごとに1つの`<img>...</img>`チャンクに展開します。

各チャンクには、そのチャンクが格納するフレームのタイムスタンプがラベルとして付与され、" and " で結合されます（チューレット内の最初のフレームは "Frame"、それ以外は "frame"）。トークナイザーには実際の `<video>` トークンは存在しないため、チャンクは画像トークンを使用します。モデルは、どの `pixel_values_*` 引数が渡されたかによって、画像と動画を区別します。

## NemotronH_Omni_Reasoning_V3[[transformers.NemotronH_Omni_Reasoning_V3]]

#### transformers.NemotronH_Omni_Reasoning_V3[[transformers.NemotronH_Omni_Reasoning_V3]]

```python
transformers.NemotronH_Omni_Reasoning_V3(config: NemotronH_Omni_Reasoning_V3_Config)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/nemotron_h_omni/modeling_nemotron_h_omni.py#L142)

#### forward[[transformers.NemotronH_Omni_Reasoning_V3.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, pixel_values: typing.Optional[torch.FloatTensor] = None, image_grid_hw: typing.Optional[torch.LongTensor] = None, pixel_values_videos: typing.Optional[torch.FloatTensor] = None, input_features: typing.Optional[torch.FloatTensor] = None, input_features_mask: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, labels: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.FloatTensor] = None, use_cache: bool | None = None, mm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/nemotron_h_omni/modeling_nemotron_h_omni.py#L347)

**パラメータ:**

input_ids (`torch.LongTensor`、shape `(batch_size, sequence_length)`、*任意*) : 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスは [AutoTokenizer](/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer) を使用して取得できます。詳細については、[PreTrainedTokenizer.encode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) および [PreTrainedTokenizer.__call__()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) を参照してください。 [入力IDとは何ですか？](../glossary#input-ids)

pixel_values (`torch.FloatTensor`、形状 `(total_patches, num_channels * patch_size**2)`、*任意*) : 画像プロセッサによって返される、すべての画像のフラット化されたパッチを連結したもの。

image_grid_hw (`torch.LongTensor`、形状 `(num_images, 2)`、*任意*) : `pixel_values` 内の各画像の Patch グリッド `(height, width)`。

pixel_values_videos (`torch.FloatTensor`、形状 `(batch_size, num_frames, num_channels, frame_size, frame_size)`、*任意*) : 入力動画に対応するテンソルです。動画のピクセル値は、[NemotronH_Omni_Reasoning_V3VideoProcessor](/docs/transformers/main/ja/model_doc/nemotron_h_omni#transformers.NemotronH_Omni_Reasoning_V3VideoProcessor) を使用して取得できます。詳細については、[NemotronH_Omni_Reasoning_V3Processor.__call__()](/docs/transformers/main/ja/model_doc/molmo2#transformers.Molmo2VideoProcessor.__call__) を参照してください（[NemotronH_Omni_Reasoning_V3Processor](/docs/transformers/main/ja/model_doc/nemotron_h_omni#transformers.NemotronH_Omni_Reasoning_V3Processor) は、動画の処理に [NemotronH_Omni_Reasoning_V3VideoProcessor](/docs/transformers/main/ja/model_doc/nemotron_h_omni#transformers.NemotronH_Omni_Reasoning_V3VideoProcessor) を使用します）。

input_features (`torch.FloatTensor`、形状 `(batch_size, num_frames, num_mel_bins)`、*任意*) : プロセッサによって生成され、エンコードおよび分散処理された Mel 特徴量。

input_features_mask (`torch.Tensor`、形状 `(batch_size, num_frames)`、*任意*) : パディングされた各クリップの実際のメルフレームを示すマスク。

attention_mask (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : padding トークンのインデックスに対する attention を回避するためのマスクです。マスクの値は `[0, 1]` から選択されます:  - **マスクされない**トークンは 1、- **マスクされる**トークンは 0。  [attention マスクとは?](../glossary#attention-mask)

position_ids (`torch.LongTensor`、shape `(batch_size, sequence_length)`、*任意*) : 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックスです。`[0, config.n_positions - 1]` の範囲から選択されます。 [位置 ID とは何か？](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`, *任意*) : 逐次デコードを高速化するために使用できる、事前計算された hidden-states（self-attention ブロックおよび cross-attention ブロック内の key と value）です。通常、`use_cache=True` または `config.use_cache=True` の場合、モデルがデコードの以前の段階で返した `past_key_values` で構成されます。入力として許可されるのは [Cache](/docs/transformers/main/ja/internal/generation_utils#transformers.Cache) インスタンスのみです。[kv cache ガイド](https://huggingface.co/docs/transformers/en/kv_cache)を参照してください。`past_key_values` が渡されない場合、デフォルトで [DynamicCache](/docs/transformers/main/ja/internal/generation_utils#transformers.DynamicCache) が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。`past_key_values` を使用する場合は、すべての `input_ids`（形状 `(batch_size, sequence_length)`）の代わりに、このモデルに過去の key value 状態が与えられていない未処理の `input_ids`（形状 `(batch_size, unprocessed_length)`）のみを入力する必要があります。

labels (`torch.LongTensor`、形状 `(batch_size, sequence_length)`、*任意*) : マスク言語モデリング損失を計算するためのラベル。インデックスは `[0, ..., config.vocab_size]` の範囲内であるか、-100 である必要があります（`input_ids` のドキュメント文字列を参照）。インデックスが `-100` に設定されたトークンは無視（マスク）され、損失は `[0, ..., config.vocab_size]` の範囲内のラベルを持つトークンに対してのみ計算されます。

inputs_embeds (`torch.FloatTensor`、shape `(batch_size, sequence_length, hidden_size)`、*任意*) : `input_ids` を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、`input_ids` のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。

use_cache (`bool`, *任意*) : `True`に設定すると、`past_key_values`のキーバリュー状態が返され、デコーディングの高速化に利用できます（`past_key_values`を参照）。

mm_encoder_outputs (`dict[str, ~modeling_outputs.BaseModelOutputWithPooling]`, *任意*) : キーがサポートされているモダリティ、値がそのモダリティのエンコード済み出力である辞書。各エンコード済み出力は、(`pooler_output`、*任意*: `last_hidden_states`、*任意*: `hidden_states`、*任意*: `attentions`) という形式のタプルで、`pooler_output` の形状は `(batch_size, sequence_length, hidden_size)`、*任意*) であり、エンコーダーのマルチモーダル特徴量をテキスト埋め込みにマージしたシーケンスです。

**戻り値:** [CausalLMOutputWithPast](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) または `tuple(torch.FloatTensor)`

[CausalLMOutputWithPast](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) または、`return_dict=False` が渡された場合、または `config.return_dict=False` の場合の `torch.FloatTensor` のタプル。構成要素は、設定（[NemotronH_Omni_Reasoning_V3_Config](/docs/transformers/main/ja/model_doc/nemotron_h_omni#transformers.NemotronH_Omni_Reasoning_V3_Config)）および入力に応じて異なります。

[NemotronH_Omni_Reasoning_V3](/docs/transformers/main/ja/model_doc/nemotron_h_omni#transformers.NemotronH_Omni_Reasoning_V3)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

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

- **loss** (`torch.FloatTensor`、shape `(1,)`、*optional*、`labels` が指定された場合に返されます) -- 言語モデリングの損失(次のトークンの予測用)。
- **logits** (`torch.FloatTensor`、shape `(batch_size, sequence_length, config.vocab_size)`) -- 言語モデリングヘッドの予測スコア（SoftMax 適用前の各語彙トークンのスコア）。
- **past_key_values** (`Cache`、*任意*、`use_cache=True` が渡された場合または `config.use_cache=True` の場合に返されます) -- [Cache](/docs/transformers/main/ja/internal/generation_utils#transformers.Cache) のインスタンスです。詳細については、[kv cache ガイド](https://huggingface.co/docs/transformers/en/kv_cache)を参照してください。

  逐次デコーディングを高速化するために使用できる（`past_key_values` 入力参照）、事前計算済みの隠れ状態（自己注意ブロックのキーとバリュー）が含まれます。
- **hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **attentions** (`tuple(torch.FloatTensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.FloatTensor` のタプル（各レイヤーごとに1つ）で、形状は `(batch_size, num_heads, sequence_length, sequence_length)` です。

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

例:

```python
>>> from PIL import Image
>>> from transformers import AutoProcessor, NemotronH_Omni_Reasoning_V3

>>> model = NemotronH_Omni_Reasoning_V3.from_pretrained("nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16")
>>> processor = AutoProcessor.from_pretrained("nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16")

>>> messages = [
...     {
...         "role": "user", "content": [
...             {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
...             {"type": "text", "text": "Where is the cat standing?"},
...         ]
...     },
... ]

>>> inputs = processor.apply_chat_template(
...     messages,
...     tokenize=True,
...     return_dict=True,
...     return_tensors="pt",
...     add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]
```

#### generate[[transformers.NemotronH_Omni_Reasoning_V3.generate]]

```python
generate(inputs: typing.Optional[torch.Tensor] = None, generation_config: transformers.generation.configuration_utils.GenerationConfig | None = None, logits_processor: transformers.generation.logits_process.LogitsProcessorList | None = None, stopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = None, prefix_allowed_tokens_fn: collections.abc.Callable[[int, torch.Tensor], list[int]] | None = None, synced_gpus: bool | None = None, assistant_model: typing.Optional[ForwardRef('PreTrainedModel')] = None, streamer: typing.Optional[ForwardRef('BaseStreamer')] = None, negative_prompt_ids: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, custom_generate: str | collections.abc.Callable | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/utils.py#L2573)

**パラメータ:**

inputs (`torch.Tensor`、モダリティによって形状が異なる、*任意*) : 生成のプロンプトとして使用されるシーケンス、またはエンコーダーへのモデル入力です。`None` の場合、`bos_token_id` とバッチサイズ 1 で初期化されます。デコーダー専用モデルの場合、`inputs` は `input_ids` の形式である必要があります。エンコーダーデコーダーモデルの場合、*inputs* は `input_ids`、`input_values`、`input_features`、`pixel_values` のいずれかを表すことができます。

generation_config ([GenerationConfig](/docs/transformers/main/ja/main_classes/text_generation#transformers.GenerationConfig), *任意*) : 生成呼び出しのベースパラメータ化として使用される生成設定です。 `**kwargs` で `generation_config` の属性に一致するものが generate に渡された場合、それらは上書きされます。 `generation_config` が指定されない場合、デフォルトが使用されます。その読み込み優先順位は以下の通りです: 1) 存在する場合、`generation_config.json` モデルファイルから; 2) モデル設定から。未指定のパラメータは [GenerationConfig](/docs/transformers/main/ja/main_classes/text_generation#transformers.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つの引数を受け取ります: バッチID `batch_id` と `input_ids`。バッチID `batch_id` と以前に生成されたトークン `inputs_ids` に条件付けられた次の生成ステップの許可トークンのリストを返す必要があります。この引数は、[Autoregressive Entity Retrieval](https://huggingface.co/papers/2010.00904) に記載されているような、プレフィックスに条件付けられた制約付き生成に有用です。

synced_gpus (`bool`, *optional*) : `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`、shape `(batch_size, sequence_length)`、*optional*) : 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 を呼び出します。詳細については、[ドキュメント](../../generation_strategies#custom-generation-methods)を参照してください。

kwargs (`dict[str, Any]`、*任意*) : `generation_config` のアドホックなパラメータ化、およびモデルの `forward` 関数に転送される追加のモデル固有の kwargs です。モデルがエンコーダー・デコーダーモデルの場合、エンコーダー固有の kwargs にはプレフィックスを付与せず、デコーダー固有の kwargs には *decoder_* をプレフィックスとして付与してください。

**戻り値:** [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) または `torch.LongTensor`

`return_dict_in_generate=True` の場合、または `config.return_dict_in_generate=True` の場合は [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput)、それ以外は `torch.LongTensor`。

モデルがエンコーダー・デコーダーモデルで*ない*場合（`model.config.is_encoder_decoder=False`）、考えられる[ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput)の型は以下の通りです：

- [GenerateDecoderOnlyOutput](/docs/transformers/main/ja/internal/generation_utils#transformers.generation.GenerateDecoderOnlyOutput)、
- [GenerateBeamDecoderOnlyOutput](/docs/transformers/main/ja/internal/generation_utils#transformers.generation.GenerateBeamDecoderOnlyOutput)

モデルがエンコーダー・デコーダーモデル（`model.config.is_encoder_decoder=True`）の場合、考えられる[ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput)の型は以下の通りです：

- [GenerateEncoderDecoderOutput](/docs/transformers/main/ja/internal/generation_utils#transformers.generation.GenerateEncoderDecoderOutput)、
- [GenerateBeamEncoderDecoderOutput](/docs/transformers/main/ja/internal/generation_utils#transformers.generation.GenerateBeamEncoderDecoderOutput)

言語モデリングヘッドを持つモデルに対して、トークンIDのシーケンスを生成します。

生成を制御するほとんどのパラメータは`generation_config`で設定されます。この引数が渡されない場合、モデルのデフォルトの生成設定が使用されます。`generation_config`の任意の値は、generate()に該当するパラメータを渡すことで上書きできます。例: `.generate(inputs, num_beams=4, do_sample=True)`。

生成戦略の概要とコード例については、[次のガイド](../generation_strategies)を参照してください。

