Transformers documentation

ビーム

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

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

FlashAttention SDPA Tensor parallelism Expert parallelism

ビーム

概要

Beamは、Reflection社初のオープンウェイトモデルです。これは、総パラメータ数501B、トークンあたりのアクティブパラメータ数23BのスパーズなMixture-of-Experts (MoE) 言語モデルであり、コーディング、推論、エージェント型ワークロード向けに構築されています。23.8Tトークンで事前学習が行われ、大規模な非同期強化学習によって事後学習されています。Beamはテキスト専用であり、すべての回答の前に推論を行います。チャットテンプレート内の推論努力設定により、その推論の度合いを制御できます。

Beamには52のデコーダー層があり、以下の機能を組み合わせています。

  • ハイブリッドなスライディングアテンションとフルアテンション。6層ごとに1層と最終層ではフルアテンションを使用し、それ以外の層では直近のsliding_window(512)トークンにアテンションを適用します。layer_typesでパターンを設定します。
  • スライディング層には RoPE、フル層には NoPE を適用します。 rope_parameters は層タイプをキーとしており、None は位置エンコーディングを持たない層タイプを示します。フルアテンション層ではクエリをスケーリングします(スケーラブル softmax):1 始まりの位置 n のクエリは (1 + n / 2048) ** 0.1 を乗算し、コンテキストが拡大してもアテンションが平坦化しないようにします。
  • ゲート付きアテンション。クエリヘッド48個、キー/バリューヘッド8個のグループドクエリアテンションを採用し、各クエリヘッドおよびキーヘッドにRMSNormを適用します。アテンション入力から計算されるシグモイドゲート(各ヘッドごとに学習されたバイアス付き)が、出力射影の前にアテンション出力を要素ごとにスケーリングします。
  • Sparse MoE。最初の3層はdenseなSwiGLU MLPを使用し、残りの49層では各トークンを256のエキスパートのうち8つにルーティングします(共有エキスパートはありません)。mlp_layer_typesがこのパターンを設定します。ルーターはシグモイド関数でエキスパートをスコアリングし、補助損失ではなく学習されたエキスパートごとのバイアスで負荷をバランスさせ、各トークンをn_groupのエキスパートグループのうち最良のtopk_groupに限定します。ルーティング重みは正規化され、MoEの出力はrouted_scaling_factorでスケーリングされます。
  • 深さスケーリング付き残差を用いたサンドイッチ型ノーム。 各アテンションブロックとMLPブロックは、前後にRMSNormでラップされます。残差の加算は再スケーリングされ、k 回の寄与(埋め込みを最初の1回として数える)の後、残差ストリームはそれらの和を sqrt(k) で割った値になります。
  • 最終logitのsoftcapping。Logitsは30 * tanh(logits / 30)(final_logit_softcapping)によって上限が設定されます。

この実装では、Beam の学習およびサービング時に使用された数値特性と一致させるため、RMSNorm のスケーリング、SwiGLU アクティベーション、RoPE、クエリスケーリング、ルーティング、およびソフトキャッピングを FP32 で計算します。ルーターの重みとエキスパートのバイアスはロード時に FP32 で保持され、返される logits は常に FP32 です。

すべての元の Beam チェックポイントは、Reflection 組織の下で確認できます。

このモデルは、yonigozlan によって提供されました。

使用例

Beam のチャットテンプレートは、会話を Beam の Harmony 形式に整形し、そのレスポンステンプレートは生成されたテキストを、thinking、content、tool_calls フィールドを持つメッセージとして解析します。以下の例では、Pipeline または AutoModelForCausalLM クラスを使用して返信を生成します。

BF16のチェックポイントは約1 TBのため、例ではエキスパート並列を用いて8つのデバイスにシャードし、各デバイスにルーティングされたエキスパート全体を配置します。torchrun --nproc-per-node 8 <script.py>で起動します。

パイプライン
AutoModel
from transformers import DistributedConfig, pipeline

pipe = pipeline(
    task="text-generation",
    model="reflection/Beam-1.0-501B-A23B",
    model_kwargs={"distributed_config": DistributedConfig(tp_size=8, ep_size=8)},
)

messages = [{"role": "user", "content": "Explain in one sentence why the sky is usually blue."}]
output = pipe(messages, max_new_tokens=2048)
reply = output[0]["generated_text"][-1]
print(reply["thinking"])
print(reply["content"])

device_map="auto" は各デバイスにレイヤー全体を配置し、一度に1つのデバイスで実行するため、読み込み中にメモリ不足になる可能性があります。そのため、こちらを優先してください。

temperature=0.7 および top_p=0.99 を使用して生成サンプルを作成します。これらの値は、チェックポイントの GenerationConfig でデフォルトとして設定されています。do_sample=False を渡すと、グリーディデコーディングが実行されます。

推論の努力

reasoning_effort を apply_chat_template() に渡すことで、Beam がどれだけ推論を行うかを制御できます。整数の予算または以下のいずれかのラベルを受け取ります。Beam は 8 未満の effort で学習されていないため、より小さい値は反映されません。

ラベルminimallowmediumhighxhighmax
労力83264128256512

reasoning_effortが設定されていない場合、テンプレートはmaxを使用します。推論中にmax_new_tokensが尽きると、解析されたメッセージにはthinkingが含まれますが、contentは含まれません。

マルチターン会話

解析済みのメッセージをそのまま履歴に追加します。Beam の出力は、以前の推論なしでは劣化します。この推論は、チャットテンプレートが thinking から読み取ります(reasoning_content および reasoning も受け入れられます)。デフォルトでは、推論を含まないアシスタントのターンは、空の推論ブロック付きでレンダリングされます。Beam をサービングする場合、add_generation_prompt=True の際に代わりにエラーを発生させるため、allow_missing_thinking=False を渡すことをお勧めします。

messages.append(message)
messages.append({"role": "user", "content": "And why are sunsets red?"})
inputs = tokenizer.apply_chat_template(
    messages, add_generation_prompt=True, return_tensors="pt", return_dict=True
).to(model.device)

ツール呼び出し

tools を apply_chat_template() と parse_response() の両方に渡します。tools を指定すると、解析された引数は各ツールのスキーマで定義された型にキャストされます。指定しない場合、すべての引数は文字列になります。

def get_weather(city: str):
    """
    Get the current weather in a city.

    Args:
        city: The city name.
    """
    return "Sunny, 22 C"


messages = [{"role": "user", "content": "What's the weather like in Paris right now?"}]
inputs = tokenizer.apply_chat_template(
    messages, tools=[get_weather], add_generation_prompt=True, return_tensors="pt", return_dict=True
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=2048)
generated = tokenizer.decode(outputs[0, inputs["input_ids"].shape[1] :])
message = tokenizer.parse_response(generated, prefix=inputs["input_ids"][0], tools=[get_weather])
print(message["tool_calls"])
# [{'type': 'function', 'function': {'name': 'get_weather', 'arguments': {'city': 'Paris'}}}]

messages.append(message)
for call in message["tool_calls"]:
    result = get_weather(**call["function"]["arguments"])
    messages.append({"role": "tool", "name": call["function"]["name"], "content": result})

次に、messagesから再度生成して最終的な回答を取得します。解析されたツール呼び出しにはidがなく、フォーマットは位置に基づいて結果と呼び出しを対応付けます。そのため、ツール結果は呼び出しの順序で返してください。生成は、最終的な回答(<|return|>)またはツール呼び出し(<|call|>)の後に停止します。generation_config.jsonには両方がリストされています。

ストリーミングの場合、get_response_parser() は、生成されるテキストチャンクを feed() で渡すためのパーサーを返します。詳細は レスポンスの解析 を参照してください。

注記

  • テンプレート引数。 reasoning_effort 以外にも、チャットテンプレートは model_identity(システムメッセージの最初の行を置き換えます)、builtin_tools、および allow_missing_thinking を受け入れます。 builtin_tools には、Beam の学習に使用された定義を持つ search と browse ツールのみを指定してください。その他のツールには tools のみが必要です。 system と developer メッセージは、会話の開始時のみレンダリングされます。
  • 学習。チャットテンプレートは、apply_chat_template(..., return_dict=True, return_assistant_tokens_mask=True) によってアシスタントの出力をマークするため、TRL の SFTConfig(assistant_only_loss=True) を使用すると、アシスタントのトークンのみで学習が行われます。このマスクは、各アシスタントターンにおける推論、回答、およびツール呼び出しをカバーします。
  • 補助損失はありません。ルーターはバイアスによってエキスパートの負荷をバランスさせるため、BeamForCausalLMは負荷分散損失を計算しません。output_router_logits=Trueを指定すると、ルーターのロジットが引き続き返されます。

BeamConfig

クラス transformers.BeamConfig

< >

( 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 = 151936hidden_size: int = 5120intermediate_size: int = 20480num_hidden_layers: int = 52num_attention_heads: int = 48num_key_value_heads: int = 8hidden_act: str = 'silu'max_position_embeddings: int = 8192initializer_range: float = 0.02rms_norm_eps: float = 1e-06use_cache: bool = Truetie_word_embeddings: bool = Falserope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneattention_bias: bool = Falsesliding_window: int | None = 512attention_dropout: float | int = 0.0moe_intermediate_size: int = 2560num_experts_per_tok: int = 8num_experts: int = 256norm_topk_prob: bool = Trueoutput_router_logits: bool = Falsepad_token_id: int | None = Nonebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonehead_dim: int = 128layer_types: list[str] | None = Nonemlp_layer_types: list[str] | None = Nonen_group: int | None = 8topk_group: int | None = 4routed_scaling_factor: int | float = 2.5final_logit_softcapping: int | float | None = 30.0 )

パラメータ

  • vocab_size (int、任意、デフォルトは 151936) — モデルの語彙サイズです。input_ids で表現できるトークンの種類数を定義します。
  • hidden_size (int、任意、デフォルトは 5120) — 隠れ表現の次元数です。
  • intermediate_size (int、任意、デフォルトは 20480) — MLP 表現の次元数。
  • num_hidden_layers (int、任意、デフォルトは52) — Transformer デコーダーの隠れ層の数。
  • num_attention_heads (int、任意、デフォルトは 48) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
  • num_key_value_heads (int、任意、デフォルトは8) — 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 が使用されます。
  • hidden_act (str、任意、デフォルトは silu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、 "relu"、"silu" など。
  • max_position_embeddings (int、任意、デフォルトは 8192) — このモデルが使用される可能性のある最大シーケンス長です。
  • initializer_range (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • rms_norm_eps (float、任意、デフォルトは 1e-06) — RMS 正規化レイヤーで使用する epsilon。
  • use_cache (bool、任意、デフォルトは True) — モデルが最後のキー/バリューの注意を返すかどうか(すべてのモデルで利用されるわけではありません)。config.is_decoder=True の場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。
  • tie_word_embeddings (bool、任意、デフォルトは False) — モデルの tied_weights_keys マッピングに従って重み埋め込みを共有するかどうかを指定します。
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], 省略可) — RoPE 埋め込みの設定パラメータを含む辞書です。この辞書には rope_theta の値が含まれており、より長い max_position_embeddings で RoPE を使用する場合にスケーリングに使用されるパラメータが任意で含まれます。
  • attention_bias (bool、任意、デフォルトはFalse) — 自己注意機構において、クエリ、キー、バリュー、出力の投影層にバイアスを使用するかどうかを指定します。
  • sliding_window (int、任意、デフォルトは512) — スライディングウィンドウアテンションのウィンドウサイズ。Noneの場合、スライディングウィンドウは適用されません。
  • attention_dropout (Union[float, int]、任意、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
  • moe_intermediate_size (int、任意、デフォルトは2560) — ルーティングされたエキスパートのMLPの中間サイズ。
  • num_experts_per_tok (int、任意、デフォルトは 8) — 各トークンをルーティングするエキスパートの数です。これは、トークン選択ルーティングにおける top-k の値です。
  • num_experts (int、任意、デフォルトは 256) — MoE レイヤーにおけるルーティング対象のエキスパートの数。
  • norm_topk_prob (bool、任意、デフォルトは True) — ルーティングされたエキスパートの重みを正規化するかどうかを指定します。
  • output_router_logits (bool、任意、デフォルトはFalse) — モデルがルーターのロジツを返すかどうかを指定します。これを有効にすると、モデルは補助損失(ロードバランシング損失とルーターのz損失を含む)を出力できるようになります。
  • pad_token_id (int, 任意) — 語彙内でパディングに使用されるトークン ID。
  • bos_token_id (int, 省略可) — 語彙におけるストリーム開始に使用されるトークン ID。
  • eos_token_id (Union[int, list[int]], 省略可) — 語彙内でストリーム終了に使用されるトークン ID。
  • head_dim (int、任意、デフォルトは128) — アテンションヘッドの次元です。None の場合、hidden_size // num_attention_heads がデフォルトとして使用されます。
  • layer_types (list[str]、省略可) — 各レイヤーのインデックスとレイヤータイプを明示的に対応付けるリストです。指定しない場合、config の値に基づいて自動的に生成されます。
  • mlp_layer_types (list[str]、省略可) — レイヤーごとの MLP タイプ。SwiGLU MLP には "dense"、MoE ブロックには "sparse" を指定します。長さは num_hidden_layers と等しくなければなりません。デフォルトでは、3 つの dense レイヤーの後に sparse レイヤーが続きます。
  • n_group (int、任意、デフォルトは 8) — ルーティングされたエキスパートのグループ数。
  • topk_group (int、任意、デフォルトは4) — 各トークンについて選択されるグループの数です(各トークンにおいて、選択されるエキスパートがtopk_group個のグループの範囲内にのみ収まることを保証します)。
  • routed_scaling_factor (Union[int, float]、任意、デフォルトは2.5) — ルーティングされたエキスパートのスケール係数。
  • final_logit_softcapping (Union[int, float]、任意、デフォルト値は30.0) — 確率分布を計算する前に、最終的な logits に適用されるソフトキャップの値です。logits はtanh(logit / cap) * capによってスケーリングされます。

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

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

>>> from transformers import BeamConfig

>>> # Initializing a Beam configuration
>>> configuration = BeamConfig()

BeamModel

class transformers.BeamModel

< >

( config: BeamConfig )

パラメータ

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

特定のヘッドを上に載せず、生のhidden-statesを出力する素のBeam Model。

このモデルは 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.FloatTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeModelOutputWithPast 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とは?

  • past_key_values (~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した past_key_values であり、 use_cache=True または config.use_cache=True.

    入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。 past_key_values が渡されない場合、デフォルトで DynamicCache が初期化されます。

    モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

    past_key_values を使用する場合、すべての input_ids(形状 (batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理の input_ids(形状 (batch_size, unprocessed_length))のみを入力することになります。

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

戻り値

MoeModelOutputWithPast または tuple(torch.FloatTensor)

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

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

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

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

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

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

BeamForCausalLM

クラス transformers.BeamForCausalLM

< >

( config: BeamConfig )

パラメータ

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

因果言語モデリング用の Beam Model。

このモデルは 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.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeCausalLMOutputWithPast 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とは?

  • past_key_values (~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した past_key_values であり、 use_cache=True または config.use_cache=True.

    入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。 past_key_values が渡されない場合、デフォルトで DynamicCache が初期化されます。

    モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

    past_key_values を使用する場合、すべての input_ids(形状 (batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理の input_ids(形状 (batch_size, unprocessed_length))のみを入力することになります。

  • inputs_embeds (torch.FloatTensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • labels (torch.LongTensor、shape (batch_size, sequence_length)、任意) — マスク言語モデリング損失を計算するためのラベルです。インデックスは [0, ..., config.vocab_size] の範囲内であるか、-100 である必要があります(input_ids の docstring を参照)。インデックスが -100 に設定されたトークンは無視(マスク)され、損失は [0, ..., config.vocab_size] の範囲内のラベルを持つトークンに対してのみ計算されます。
  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。
  • logits_to_keep (Union[int, torch.Tensor]、省略可、デフォルトは 0) — int の場合、最後の logits_to_keep トークンについて logits を計算します。0 の場合、すべての input_ids について logits を計算します(特殊ケース)。生成には最後のトークンの logits だけで十分であり、そのトークンのみについて計算することでメモリを節約できます。これは、長いシーケンスや大規模な語彙サイズの場合に特に顕著な効果があります。 torch.Tensor の場合、シーケンス長次元で保持するインデックスに対応する 1 次元テンソルである必要があります。これは、パックされたテンソル形式(バッチとシーケンス長を単一の次元にまとめた形式)を使用する場合に有用です。

戻り値

MoeCausalLMOutputWithPast または tuple(torch.FloatTensor)

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

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

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

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

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

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

  • router_logits (tuple(torch.FloatTensor)、任意、output_router_logits=True が渡された場合または config.output_router_logits=True の場合に返されます) — 各スパース層に対応する torch.FloatTensor のタプルで、形状は (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.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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

例:

Update on GitHub