Transformers documentation
ESMC
このモデルは2026年8月19日にHugging Face Transformersに貢献されました。
ESMC
概要
ESMC (ESM Cambrian) は、BioHub によって公開されたタンパク質言語モデルのファミリーです。 アミノ酸配列に対してマスク言語モデリングの目的で訓練された双方向 Transformer エンコーダーです。 ESM-2 と同様に、ESMC は下流のタンパク質モデリングタスクに有用な、残基ごとの表現を生成します。
ESMCは、タンパク質分類やトークン分類タスクでのファインチューニングに適しています。また、ESMFold2のバックボーンとしても使用されており、フォールディングヘッドへの入力として用いられる表現を生成します。
事前学習済みチェックポイントは Hugging Face Hub で利用できます:
使用例
ESMC は auto クラス(AutoModel、AutoModelForMaskedLM、AutoModelForSequenceClassification、AutoModelForTokenClassification)に登録されています。
import torch
from transformers import pipeline
extractor = pipeline(
task="feature-extraction",
model="biohub/ESMC-300M",
)
# Per-residue representations of shape (batch, sequence_length, hidden_size).
representations = extractor("MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQ", return_tensors="pt")import torch
from transformers import AutoModel, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("biohub/ESMC-300M")
model = AutoModel.from_pretrained("biohub/ESMC-300M")
inputs = tokenizer("MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQ", return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
# Per-residue representations of shape (batch, sequence_length, hidden_size).
representations = outputs.last_hidden_stateEsmcConfig
クラス transformers.EsmcConfig
< source >( 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 = 64hidden_size: int = 2560intermediate_size: int = 6912num_hidden_layers: int = 80num_attention_heads: int = 40num_key_value_heads: int | None = Nonehidden_act: str = 'silu'max_position_embeddings: int = 2048initializer_range: float = 0.02pad_token_id: int | None = 1bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 2tie_word_embeddings: bool = Falserope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneattention_bias: bool = Falseattention_dropout: int | float | None = 0.0mlp_bias: bool = Falsehead_dim: int | None = Nonemask_token_id: int | None = 32classifier_dropout: float | None = 0.1 )
パラメータ
- vocab_size (int、任意、デフォルトは 64) — モデルの語彙サイズ。input_ids で表現できるトークンの種類数を定義します。
- hidden_size (int、任意、デフォルトは 2560) — 隠れ表現の次元数。
- intermediate_size (int、任意、デフォルトは 6912) — MLP 表現の次元数です。
- num_hidden_layers (int、任意、デフォルトは 80) — Transformer デコーダーの隠れ層の数です。
- num_attention_heads (int、optional、デフォルトは 40) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
- num_key_value_heads (int, optional) — 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、optional、デフォルトは silu) — デコーダーで使用される非線形活性化関数(関数または文字列)。例えば、“gelu”、 “relu”、“silu” など。
- max_position_embeddings (int、任意、デフォルトは 2048) — このモデルが使用される可能性のある最大シーケンス長です。
- initializer_range (float、任意、デフォルトは 0.02) — すべての重み行列の初期化に使用される truncated_normal_initializer の標準偏差です。
- pad_token_id (int、任意、デフォルトは 1) — 語彙内でパディングに使用されるトークン ID です。
- bos_token_id (int、optional、デフォルトは 0) — 語彙内でストリームの開始に使用されるトークン ID。
- eos_token_id (Union[int, list[int]]、optional、デフォルトは 2) — 語彙内でストリーム終了に使用されるトークン ID。
- tie_word_embeddings (bool、任意、デフォルトは False) — モデルの tied_weights_keys マッピングに従って重み埋め込みを共有するかどうかを指定します。
- rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], optional) — RoPE 埋め込みの設定パラメータを含む辞書です。辞書には rope_theta の値が含まれており、より長い max_position_embeddings で RoPE を使用する場合にスケーリングに使用されるパラメータが任意で含まれます。
- attention_bias (bool、任意、デフォルトは False) — 自己注意機構において、クエリ、キー、バリュー、出力の投影層にバイアスを使用するかどうか。
- attention_dropout (Union[int, float]、optional、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
- mlp_bias (bool、任意、デフォルトは False) — MLP層の up_proj、down_proj、gate_proj 層でバイアスを使用するかどうか。
- head_dim (int、任意) — アテンションヘッドの次元です。None の場合、hidden_size // num_attention_heads がデフォルトとして使用されます。
- mask_token_id (int、optional、デフォルト値は 32) —
語彙におけるマスクトークンのインデックス(
"<mask>")。マスク言語モデリングに使用されます。 - classifier_dropout (float、optional、デフォルト値は 0.1) — 分類ヘッドのドロップアウト率。
これは EsmcModel の設定を保存するための設定クラスです。指定された引数に基づいて Esmc モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、biohub/ESMC-6B と同様の設定が得られます。
Configuration オブジェクトは [PreTrainedConfig] を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig] のドキュメントを参照してください。
例:
>>> from transformers import EsmcConfig, EsmcModel
>>> # Initializing an ESMC biohub/ESMC-6B style configuration
>>> configuration = EsmcConfig()
>>> # Initializing a model (with random weights) from the configuration
>>> model = EsmcModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configEsmcTokenizer
class transformers.EsmcTokenizer
< source >( unk_token = '<unk>'cls_token = '<cls>'pad_token = '<pad>'mask_token = '<mask>'eos_token = '<eos>'bos_token = Nonechain_break_token = '|'extra_special_tokens = None**kwargs )
パラメータ
- unk_token (str、optional、デフォルトは ”
” ) — 不明トークンです。 - cls_token (str、optional、デフォルトは ”
” ) — 分類トークン(すべてのシーケンスの先頭に付加されます)。 - pad_token (str、optional、デフォルトは ”
” ) — パディングトークンです。 - mask_token (str、optional、デフォルトは ”
” ) — マスク言語モデリングに使用されるマスクトークンです。 - eos_token (str、optional、デフォルトは ”
” ) — シーケンスの終了トークン(すべてのシーケンスの末尾に追加されます)。 - bos_token (str、optional、デフォルトは ”
” ) — シーケンスの開始トークンです(すべてのシーケンスの先頭に付加されます)。未設定の場合、cls_token が使用されます。 - chain_break_token (str、optional、デフォルトは ”|”) — マルチチェーンタンパク質入力において、チェーン間に挿入されるトークンです。モデル固有の特殊トークンとして登録されるため、chain_break_token / chain_break_token_id として公開されます。
- extra_special_tokens (list[str]、任意) — トークナイザに登録する追加の特殊トークン(保存された設定からラウンドトリップされます)。
ESMC トークナイザーを構築します。
このトークナイザーは、HuggingFaceのtokenizersライブラリを基盤とする文字レベルのトークナイザーです。すべてのシーケンスを<cls>トークンと<eos>トークンでラップし、マルチチェーン入力用の|チェーンブレイクトークンをサポートします。
EsmcModel
class transformers.EsmcModel
< source >( config: EsmcConfig )
パラメータ
- config (EsmcConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
特定のヘッドを付加せず、生のhidden-statesを出力する素のEsmcモデル。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonesequence_id: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → [~modeling_outputs.BaseModelOutput] or tuple(torch.FloatTensor)
パラメータ
- input_ids (torch.Tensor の形状 (batch_size, sequence_length), 省略可) —
語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。
インデックスは [AutoTokenizer] を使用して取得できます。詳細については、[PreTrainedTokenizer.encode] および [PreTrainedTokenizer.call] を参照してください。
- attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 省略可能) —
パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- position_ids (torch.Tensor の形状 (batch_size, sequence_length), 省略可) —
シーケンス内の各トークンの位置。RoPE で使用されます。デフォルトは
arange(sequence_length).ESMC の位置は入力全体に対して絶対値であり、マルチチェーン入力ではチェーンの境界をまたいで 連続 して数えられます。チェーン構造は
sequence_idによって別途保持され、アテンションをマスクするために使用されます。ライブラリの他の部分で使用されているパックシーケンス形式とは異なり、これらは 0 から再開するチェーンごとの位置 ID ではなく、チェーン構造は意図的にそれらから推論されません。 - sequence_id (torch.Tensor、形状 (batch_size, sequence_length)、任意) —
チェーン認識型アテンションマスキング用の整数チェーンIDテンソルです。同じ非負整数値を持つトークンは互いにアテンションできますが、異なる値を持つトークンはアテンションできません(クロスチェーンマスキング)。パディング位置は
-1に設定し、入力は 右パディング である必要があります(RoPE は 0 から始まる絶対位置を使用します)。指定された場合、attention_maskは無視されます。sequence_idを渡すとカスタムアテンションマスクが構築されますが、これにはtorch>=2.6が必要です。マルチチェーンの入力には、非フラッシュのattn_implementation('sdpa'/'eager'/'flex_attention')が追加で必要です。フラッシュアテンションはシングルチェーンのケースのみサポートしています。
戻り値
[~modeling_outputs.BaseModelOutput] または tuple(torch.FloatTensor)
~modeling_outputs.BaseModelOutput または、torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定([EsmcConfig])や入力に応じて、さまざまな要素で構成されます。
[EsmcModel] の forward メソッドは、call という特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく [Module] インスタンスを呼び出すべきです。前者は前処理と後処理の実行を管理するのに対し、後者はそれらを黙って無視するためです。
last_hidden_state (torch.FloatTensor、shape: (batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンス。
hidden_states (tuple(torch.FloatTensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返される) — torch.FloatTensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。
各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (tuple(torch.FloatTensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。
アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
例:
>>> from transformers import AutoTokenizer, EsmcModel
>>> model = EsmcModel.from_pretrained("biohub/ESMC-300M")
>>> tokenizer = AutoTokenizer.from_pretrained("biohub/ESMC-300M")
>>> inputs = tokenizer(["MLKNVQVQLV"], return_tensors="pt")
>>> outputs = model(**inputs)
>>> outputs.last_hidden_state.shape
torch.Size([1, 12, 960])EsmcForMaskedLM
class transformers.EsmcForMaskedLM
< source >( config: EsmcConfig )
パラメータ
- config (EsmcConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
language modelingヘッドを上に備えたEsmcモデル。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonesequence_id: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → [~modeling_outputs.MaskedLMOutput] or tuple(torch.FloatTensor)
パラメータ
- input_ids (torch.Tensor の形状 (batch_size, sequence_length), 省略可) —
語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。
インデックスは [AutoTokenizer] を使用して取得できます。詳細については、[PreTrainedTokenizer.encode] および [PreTrainedTokenizer.call] を参照してください。
- attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 省略可能) —
パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- position_ids (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲 [0, config.n_positions - 1].
- sequence_id (torch.Tensor、形状 (batch_size, sequence_length)、任意) — エンコーダーに転送される整数のチェーンIDテンソルです。チェーン認識アテンションマスキングに使用されます。エンコーディングの詳細は EsmcModel.forward() を参照してください。
- labels (torch.LongTensor、shape (batch_size, sequence_length)、optional) —
マスク言語モデリング損失用のラベルです。ラベルが
-100の位置は無視されます。その他の位置は[0, config.vocab_size)の範囲内である必要があります。
戻り値
[~modeling_outputs.MaskedLMOutput] または tuple(torch.FloatTensor)
~modeling_outputs.MaskedLMOutput、または torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定([EsmcConfig])や入力に応じて、さまざまな要素で構成されます。
[EsmcForMaskedLM] の forward メソッドは、call という特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく [Module] インスタンスを呼び出すべきです。前者は前処理と後処理の実行を管理するのに対し、後者はそれらを黙って無視するためです。
loss (torch.FloatTensor、shape (1,)、optional、labels が指定された場合に返されます) — マスクド言語モデリング (MLM) の損失。
logits (torch.FloatTensor、shape (batch_size, sequence_length, config.vocab_size)) — 言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。
hidden_states (tuple(torch.FloatTensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返される) — torch.FloatTensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。
各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (tuple(torch.FloatTensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。
アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
例:
>>> from transformers import AutoTokenizer, EsmcForMaskedLM
>>> import torch
>>> model = EsmcForMaskedLM.from_pretrained("biohub/ESMC-300M")
>>> tokenizer = AutoTokenizer.from_pretrained("biohub/ESMC-300M")
>>> inputs = tokenizer(["MLKNVQ<mask>LV"], return_tensors="pt")
>>> outputs = model(**inputs)
>>> outputs.logits.shape
torch.Size([1, 11, 64])EsmcForSequenceClassification
クラス transformers.EsmcForSequenceClassification
< source >( config: EsmcConfig )
パラメータ
- config (EsmcConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
ESMCモデルのtransformerで、プーリングされた出力の上に線形層を配置したシーケンス分類/回帰ヘッドを備えています。GLUEタスクなどに使用できます。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.FloatTensor)
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- 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]. - inputs_embeds (
torch.FloatTensor、形状(batch_size, sequence_length, hidden_size)、任意) —input_idsを渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_idsのインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。 - labels (
torch.LongTensor、shape(batch_size,)、任意) — シーケンス分類/回帰の損失を計算するためのラベル。インデックスは[0, ..., config.num_labels - 1]の範囲である必要があります。config.num_labels == 1の場合は回帰損失(平均二乗誤差)が計算され、config.num_labels > 1の場合は分類損失(クロスエントロピー)が計算されます。
戻り値
SequenceClassifierOutput または tuple(torch.FloatTensor)
torch.FloatTensor のタプル、または SequenceClassifierOutput(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(EsmcConfig)や入力に応じて、さまざまな要素で構成されます。
EsmcForSequenceClassification の forward メソッドは、__call__ という特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
loss (
torch.FloatTensor、shape(1,)、optional、labelsが指定された場合に返されます) — 分類損失(config.num_labels==1 の場合は回帰損失)。logits (
torch.FloatTensor、shape(batch_size, config.num_labels)) — SoftMax 適用前の分類スコア(config.num_labels==1 の場合は回帰スコア)。hidden_states (
tuple(torch.FloatTensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます)—torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
単一ラベル分類の例:
>>> import torch
>>> from transformers import AutoTokenizer, EsmcForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("biohub/ESMC-6B")
>>> model = EsmcForSequenceClassification.from_pretrained("biohub/ESMC-6B")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = EsmcForSequenceClassification.from_pretrained("biohub/ESMC-6B", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...マルチラベル分類の例:
>>> import torch
>>> from transformers import AutoTokenizer, EsmcForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("biohub/ESMC-6B")
>>> model = EsmcForSequenceClassification.from_pretrained("biohub/ESMC-6B", problem_type="multi_label_classification")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = EsmcForSequenceClassification.from_pretrained(
... "biohub/ESMC-6B", num_labels=num_labels, problem_type="multi_label_classification"
... )
>>> labels = torch.sum(
... torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).lossEsmcForTokenClassification
forward
< source >( input_ids: torch.LongTensor | None = Noneattention_mask: torch.Tensor | None = Noneposition_ids: torch.LongTensor | None = Nonepast_key_values: Cache | None = Noneinputs_embeds: torch.FloatTensor | None = Nonelabels: torch.LongTensor | None = Noneuse_cache: bool | None = None**kwargs: Unpack[TransformersKwargs] ) → TokenClassifierOutput
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- 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]. - past_key_values (
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、形状(batch_size, sequence_length)、任意) — トークン分類の損失を計算するためのラベル。インデックスは[0, ..., config.num_labels - 1]の範囲である必要があります。 - use_cache (
bool、任意) —Trueに設定すると、past_key_valuesのキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_valuesを参照)。
戻り値
TokenClassifierOutput
GenericForTokenClassificationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。