Transformers documentation

GLM-5、GLM-5.1、GLM-5.2、GLM-5.3

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年2月17日にHF papersで公開され、2026年2月9日にHugging Face Transformersに貢献されました。

SDPA Tensor parallelism

GLM-5、GLM-5.1、GLM-5.2、GLM-5.3

概要

GLM-5、GLM-5.1、GLM-5.2、GLM-5.3の言語モデルはこのクラスを使用します。transformersでの実装には、MTPレイヤーは含まれていません。

GLM-5.3

GLM-5.3はGLM-5.2と同じベースモデルを使用しており、すべての性能向上はポストトレーニングによるものです。GLM-5.2と比較して、複雑なコーディングや長期にわたるタスクにおいて大幅に改善されています。

  • より強力なコーディング: GLM-5.3はコーディングに最も優れたオープンウェイトモデルであり、社内ベンチマークであるZ.ai Code BenchにおいてGLM-5.2から50%の性能向上を達成しています。また、Terminal Bench 3.0やAgents’ Last Examなどの公開ベンチマークにおいても、オープンソースモデルとしてSOTA(最高性能)を達成しています。
  • エマージェントなサイバー能力:ポストトレーニングをスケールさせるにつれて、サイバー能力は予想以上に速く発展しました。GLM-5.3は脆弱性発見においてCyberGymで最先端の性能を誇り、その性能向上は特にエクスプロイトチェーンの上流で顕著で、エクスプロイトベンチマークではGLM-5.2のスコアを2倍以上に引き上げています。

bench_53

GLM-5.2

GLM-5.2は、長期タスク向けの最新フラッグシップモデルです。前世代のGLM-5.1と比較して、長期タスクの能力が大幅に向上し、初めて堅牢な100万トークンコンテキスト上でその能力を実現しました。

GLM-5.2の新しい機能には、以下が含まれます。

  • 確実な1Mコンテキスト: 長期にわたるタスクを安定して支える、確実な100万トークンのコンテキスト
  • 柔軟なエフォートレベルによる高度なコーディング:パフォーマンスとレイテンシのバランスを取るための、複数の思考エフォートレベルを備えた強力なコーディング機能
  • アーキテクチャの改善: 4層のスパーズアテンション層すべてで同一のインデクサーを再利用するIndexShareを提案しました。これにより、1Mコンテキスト長においてトークンあたりのFLOPsを2.9倍削減します。また、GLM-5.2のMTP層を推測デコーディング向けに改善し、受入長を最大20%向上させました。

bench_52

標準的なコーディングベンチマークにおいて、GLM-5.2 は最強のオープンソースモデルであり、GLM-5.1 に対して大幅な向上を示しています。Terminal-Bench 2.1 では 81.0 対 62.0、SWE-bench Pro では 62.1 対 58.4 です。また、クローズドソースのフロンティアモデルとの差も大幅に縮めています。Terminal-Bench 2.1(81.0)では Claude Opus 4.8(85.0)に数ポイント差まで迫っており、さらに Gemini 3.1 Pro を上回っています。

詳細については、ブログをご覧ください。

GLM-5.1

GLM-5.1は、エージェント型エンジニアリング向けの次世代フラッグシップモデルであり、前世代モデルと比較してコーディング能力が大幅に強化されています。SWE-Bench Proでは最先端の性能を達成し、NL2Repo(リポジトリ生成)およびTerminal-Bench 2.0(実世界のターミナルタスク)では、GLM-5を大きく上回る結果を記録しています。

bench_51

しかし、最も意味のある飛躍は、初回パスの性能を超えたところにあります。GLM-5を含む従来のモデルは、序盤でレパートリーを使い切ってしまう傾向があります。慣れた手法を適用して初期の素早い向上を図りますが、その後頭打ちになります。さらに時間を割いても効果はありません。

GLM-5.1は、より長い時間軸にわたってエージェント型タスクで効果を維持するように設計されています。当社の調査では、このモデルは曖昧な問題をより良い判断力で処理し、長時間のセッションでも生産性を保つことが確認されています。複雑な問題を分解し、実験を実行し、結果を読み取り、実際の精度でボトルネックを特定します。推論を再検討し、反復的なイテレーションを通じて戦略を修正することで、GLM-5.1は数百ラウンド、数千回のツール呼び出しにわたって最適化を維持します。実行時間が長くなるほど、結果は向上します。

GLM-5

GLM-5 (GlmMoeDsa) は、744BパラメータのMixture-of-Expertsモデルであり、トークンあたり40Bのアクティブパラメータを備えています。DeepSeek Sparse Attention (DSA) を採用することで、200Kトークンに及ぶコンテキストを効率的に処理できます。Huawei Ascendチップのみを用いて完全に学習されており、推論および長文コンテキストのベンチマークにおいて、フロンティアレベルの性能を達成しています。

事前学習と事後学習の両面で進歩を遂げたGLM-5は、広範な学術ベンチマークにおいてGLM-4.7と比較して大幅な性能向上を実現しています。推論、コーディング、エージェントタスクでは、世界中のオープンソースモデルの中で最高クラスの性能を達成し、フロンティアモデルとの差を縮めています。

bench

GlmMoeDsaConfig

クラス transformers.GlmMoeDsaConfig

< >

( 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 = 154880hidden_size: int = 6144intermediate_size: int = 12288moe_intermediate_size: int = 2048num_hidden_layers: int = 78num_attention_heads: int = 64num_key_value_heads: int = 64n_shared_experts: int = 1n_routed_experts: int = 256output_router_logits: bool = Falserouted_scaling_factor: float = 2.5kv_lora_rank: int = 512q_lora_rank: int = 2048qk_rope_head_dim: int = 64v_head_dim: int = 256qk_nope_head_dim: int = 192n_group: int = 1topk_group: int = 1num_experts_per_tok: int = 8norm_topk_prob: bool = Truehidden_act: str = 'silu'max_position_embeddings: int = 202752initializer_range: float = 0.02rms_norm_eps: float = 1e-05use_cache: bool = Truepad_token_id: int | None = Nonebos_token_id: int | None = 0eos_token_id: int | list[int] | None = 1tie_word_embeddings: bool = Falserope_parameters: dict | None = Nonemlp_layer_types: list[str] | None = Noneattention_bias: bool = Falseattention_dropout: float | int = 0.0index_topk: int = 2048index_head_dim: int = 128index_n_heads: int = 32mlp_bias: bool = Falsehead_dim: int = 64first_k_dense_replace: int = 3layer_types: list[str] | None = Noneindexer_types: list[str] | None = None )

パラメータ

  • vocab_size (int、任意、デフォルトは 154880) — モデルの語彙サイズ。input_ids で表現できるトークンの種類数を定義します。
  • hidden_size (int、任意、デフォルトは 6144) — 隠れ表現の次元数。
  • intermediate_size (int、任意、デフォルトは 12288) — MLP 表現の次元数。
  • moe_intermediate_size (int、任意、デフォルトは2048) — ルーティングされたエキスパートのMLPの中間サイズ。
  • num_hidden_layers (int、任意、デフォルトは 78) — Transformer デコーダーの隠れ層の数。
  • num_attention_heads (int、任意、デフォルトは 64) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
  • num_key_value_heads (int、任意、デフォルトは 64) — 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 が使用されます。
  • n_shared_experts (int、任意、デフォルトは 1) — 共有エキスパートの数。
  • n_routed_experts (int、任意、デフォルトは 256) — ルーティング対象のエクスパートの数です。
  • output_router_logits (bool、任意、デフォルトはFalse) — モデルがルーターのロジツを返すかどうかを指定します。これを有効にすると、モデルは補助損失(ロードバランシング損失とルーターのz損失を含む)を出力できるようになります。
  • routed_scaling_factor (float、任意、デフォルトは 2.5) — ルーティングされたエキスパートのスケール係数。
  • kv_lora_rank (int、任意、デフォルトは 512) — キーおよびバリューの射影に使用される LoRA 行列のランクです。
  • q_lora_rank (int、任意、デフォルトは 2048) — クエリ投影用の LoRA 行列のランク。
  • qk_rope_head_dim (int、任意、デフォルトは 64) — 回転位置埋め込みを使用するクエリ/キーヘッドの次元数。
  • v_head_dim (int、任意、デフォルトは 256) — バリューヘッドの次元数。
  • qk_nope_head_dim (int、任意、デフォルトは 192) — 回転位置埋め込みを使用しないクエリ/キーヘッドの次元数。
  • n_group (int、任意、デフォルトは 1) — ルーティングされたエキスパートのグループ数。
  • topk_group (int、任意、デフォルトは 1) — 各トークンについて選択されるグループの数(各トークンにおいて、選択されるエキスパートがtopk_group個のグループ内にのみ含まれることを保証します)。
  • num_experts_per_tok (int、任意、デフォルトは 8) — 各トークンをルーティングするエキスパートの数です。これは、トークン選択ルーティングにおける top-k の値です。
  • norm_topk_prob (bool、任意、デフォルトは True) — ルーティングされたエキスパートの重みを正規化するかどうかを指定します。
  • hidden_act (str、任意、デフォルトは silu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、 "relu"、"silu" など。
  • max_position_embeddings (int、任意、デフォルトは 202752) — このモデルが使用される可能性のある最大シーケンス長です。
  • initializer_range (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • rms_norm_eps (float、任意、デフォルト値は1e-05) — RMS正規化レイヤーで使用するepsilonです。
  • use_cache (bool、任意、デフォルトは True) — モデルが最後のキー/バリューの注意を返すかどうか(すべてのモデルで利用されるわけではありません)。config.is_decoder=True の場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。
  • pad_token_id (int, 任意) — 語彙内でパディングに使用されるトークン ID。
  • bos_token_id (int、任意、デフォルトは 0) — 語彙におけるストリーム開始に使用されるトークン ID。
  • eos_token_id (Union[int, list[int]]、任意、デフォルトは 1) — 語彙内でストリーム終了に使用されるトークン ID。
  • tie_word_embeddings (bool、任意、デフォルトは False) — モデルの tied_weights_keys マッピングに従って重み埋め込みを共有するかどうかを指定します。
  • rope_parameters (dict, 任意) — RoPE 埋め込みの設定パラメータを含む辞書です。辞書には rope_theta の値が含まれており、より長い max_position_embeddings で RoPE を使用する場合、スケーリングに使用されるパラメータが任意で含まれます。
  • mlp_layer_types (list、任意) — 各層の MLP タイプのパターン("dense" または "sparse")。デフォルトでは、最初の 3 層が dense、残りは sparse になります。
  • attention_bias (bool、任意、デフォルトはFalse) — 自己注意機構において、クエリ、キー、バリュー、出力の投影層にバイアスを使用するかどうかを指定します。
  • attention_dropout (Union[float, int]、任意、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
  • index_topk (int、省略可能、デフォルトは 2048) — スパース注意機構においてインデクサーが選択する上位トークンの数。
  • index_head_dim (int、省略可、デフォルトは 128)— インデクサーの射影に使用するヘッド次元(DSA)。
  • index_n_heads (int、任意、デフォルトは 32)— インデクサーの投影に使用するヘッド数(DSA)。
  • mlp_bias (bool、任意、デフォルトはFalse) — MLP層のup_proj、down_proj、gate_proj層でバイアスを使用するかどうかを指定します。
  • head_dim (int、任意、デフォルトは64) — アテンションヘッドの次元です。None の場合、hidden_size // num_attention_heads がデフォルトとして使用されます。
  • first_k_dense_replace (int、任意、デフォルト値は 3) — Dense MLP を使用する先頭レイヤーの数。それ以外のレイヤーは MoE ブロックを使用します。
  • layer_types (list[str]、省略可) — 各レイヤーのインデックスとレイヤータイプを明示的に対応付けるリストです。指定しない場合、config の値に基づいて自動的に生成されます。
  • indexer_types (list[str]、省略可) — レイヤーごとのインデクサーモード("full" はインデクサーを実行し、"shared" は直前の full レイヤーの top-k を再利用します)。デフォルトでは、index_topk_freq / index_skip_topk_offset(または index_topk_pattern)から導出されるパターンが使用されます。

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

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

>>> from transformers import GlmMoeDsaConfig, GlmMoeDsaModel

>>> # Initializing a GLM-MoE-DSA configuration
>>> configuration = GlmMoeDsaConfig()

>>> # Initializing a model from the configuration
>>> model = GlmMoeDsaModel(configuration)

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

GlmMoeDsaModel

クラス transformers.GlmMoeDsaModel

< >

( config: GlmMoeDsaConfig )

パラメータ

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

裸の Glm Moe Dsa 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.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 の場合)。設定(GlmMoeDsaConfig)と入力に応じて、さまざまな要素で構成されます。

GlmMoeDsaModelの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 モデルの補助損失を計算するためにこれらの用語が使用されます。

GlmMoeDsaForCausalLM

クラス transformers.GlmMoeDsaForCausalLM

< >

( config: GlmMoeDsaConfig )

パラメータ

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

因果言語モデリング用の Glm Moe Dsa モデル。

このモデルは 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の場合)です。設定(GlmMoeDsaConfig)や入力に応じて、さまざまな要素で構成されます。

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

例:

>>> from transformers import AutoTokenizer, GlmMoeDsaForCausalLM

>>> model = GlmMoeDsaForCausalLM.from_pretrained("meta-glm_moe_dsa/GlmMoeDsa-2-7b-hf")
>>> tokenizer = AutoTokenizer.from_pretrained("meta-glm_moe_dsa/GlmMoeDsa-2-7b-hf")

>>> 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."
Update on GitHub