Transformers documentation
ESMC
이 모델은 2026-08-19에 Hugging Face Transformers에 기여되었습니다.
ESMC
개요
ESMC(ESM Cambrian)는 BioHub에서 공개한 단백질 언어 모델 계열입니다. 아미노산 시퀀스에 대해 masked-language-modelling 목적 함수로 학습된 양방향 Transformer 인코더입니다. ESM-2와 마찬가지로, ESMC는 하위 단백질 모델링 작업에 유용한 잔기별 표현을 생성합니다.
ESMC은 단백질 분류 또는 토큰 분류 작업의 fine-tuning에 적합합니다. 또한 ESMFold2의 backbone으로 사용되며, 여기서 생성된 표현(representation)은 folding head의 입력으로 활용됩니다.
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 decoder의 hidden layer 수입니다.
- num_attention_heads (int, 선택 사항, 기본값 40) — Transformer decoder의 각 attention layer에 사용되는 attention head의 수입니다.
- 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 헤드는 해당 그룹 내 모든 원래 헤드를 meanpooling하여 구성해야 합니다. 자세한 내용은 이 논문을 확인하세요. 지정되지 않은 경우 기본값은 num_attention_heads입니다.
- hidden_act (str, 선택 사항, 기본값 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, 선택 사항, 기본값 0) — 어휘에서 스트림 시작에 사용되는 토큰 ID입니다.
- eos_token_id (Union[int, list[int]], 선택 사항, 기본값 2) — 어휘에서 스트림 종료에 사용되는 토큰 ID입니다.
- tie_word_embeddings (bool, 선택, 기본값 False) — 모델의 tied_weights_keys 매핑에 따라 가중치 임베딩을 묶을지 여부.
- rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], 선택) — RoPE 임베딩의 구성 매개변수를 포함하는 사전입니다. 사전에는 rope_theta 값이 포함되어야 하며, 더 긴 max_position_embeddings로 RoPE를 사용하려는 경우 확장(scale)에 사용되는 매개변수를 선택적으로 포함할 수 있습니다.
- attention_bias (bool, 선택 사항, 기본값 False) — 자기 주의(self-attention) 시 query, key, value 및 출력 투영 계층에 bias를 사용할지 여부입니다.
- attention_dropout (Union[int, float], 선택 사항, 기본값 0.0) — Attention 확률에 적용할 dropout 비율입니다.
- mlp_bias (bool, 선택 사항, 기본값 False) — MLP 레이어의 up_proj, down_proj, gate_proj 레이어에 bias를 사용할지 여부입니다.
- head_dim (int, 선택) — Attention head의 차원입니다. None인 경우, 기본값은 hidden_size // num_attention_heads입니다.
- mask_token_id (int, optional, 기본값 32) —
어휘 사전에서 mask 토큰(
"<mask>")의 인덱스로, masked language modelling에 사용됩니다. - classifier_dropout (float, optional, 기본값 0.1) — 분류 헤드에 적용할 dropout 비율입니다.
이것은 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
클래스 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, 선택 사항, 기본값 ”
” ) — 알 수 없는 토큰입니다. - cls_token (str, 선택 사항, 기본값 ”
” ) — 분류 토큰(모든 시퀀스에 앞에 추가됨). - pad_token (str, 선택 사항, 기본값 ”
” ) — 패딩 토큰입니다. - mask_token (str, 선택 사항, 기본값 ”
” ) — 마스크 언어 모델링에 사용되는 마스크 토큰입니다. - eos_token (str, 선택, 기본값 ”
” ) — 시퀀스 종료 토큰(모든 시퀀스에 추가됨). - bos_token (str, 선택, 기본값 ”
” ) — 시퀀스 시작 토큰(모든 시퀀스의 앞에 추가됨). 설정되지 않은 경우 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
클래스 transformers.EsmcModel
< source >( config: EsmcConfig )
매개변수
- config (EsmcConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
특정 헤드가 위에 없는 Esmc 모델로, 원시 hidden-states를 출력합니다.
이 모델은 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.Tensor)
매개변수
- input_ids (torch.Tensor 의 형태 (batch_size, sequence_length, 선택 사항) —
어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.
[AutoTokenizer]를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 [PreTrainedTokenizer.encode] 및 [PreTrainedTokenizer.call]을 참조하세요.
- attention_mask (torch.Tensor 형상 (batch_size, sequence_length), 선택 사항) —
패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇일까요? [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, shape (batch_size, sequence_length), 선택 사항) —
체인 인식 어텐션 마스크를 위한 정수 체인 ID 텐서입니다. 동일한 음이 아닌 정수 값을 가진 토큰끼리는 서로 어텐션을 수행할 수 있으며, 값이 다른 토큰끼리는 수행할 수 없습니다(크로스 체인 마스크). 패딩 위치는
-1으로 설정해야 하며, 입력은 오른쪽 패딩이어야 합니다(RoPE는 0부터 시작하는 절대 위치를 사용). 이 인자가 제공되면attention_mask는 무시됩니다.sequence_id를 전달하면 커스텀 어텐션 마스크가 생성되며, 이를 위해torch>=2.6이 필요합니다. 멀티 체인 입력의 경우 추가적으로 non-flashattn_implementation('sdpa'/'eager'/'flex_attention')가 필요합니다. flash attention은 단일 체인 경우만 지원합니다.
반환값
[~modeling_outputs.BaseModelOutput] 또는 tuple(torch.Tensor)
[~modeling_outputs.BaseModelOutput] 또는 torch.Tensor의 튜플(return_dict=False가 전달되거나 config.return_dict=False인 경우)로, 구성([EsmcConfig])과 입력에 따라 다양한 요소를 포함합니다.
[EsmcModel]의 forward 메서드는 call 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 [Module] 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
last_hidden_state (torch.Tensor, shape (batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.
hidden_states (tuple(torch.Tensor), optional, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.
각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (tuple(torch.Tensor), optional, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.
self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
예:
>>> 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.Tensor)
매개변수
- input_ids (torch.Tensor 의 형태 (batch_size, sequence_length, 선택 사항) —
어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.
[AutoTokenizer]를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 [PreTrainedTokenizer.encode] 및 [PreTrainedTokenizer.call]을 참조하세요.
- attention_mask (torch.Tensor 형상 (batch_size, sequence_length), 선택 사항) —
패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇일까요? [0, 1]:
- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- position_ids (torch.Tensor 형상 (batch_size, sequence_length), 선택 사항) — 입력 시퀀스 토큰의 위치 임베딩에서 각 토큰의 위치 인덱스입니다. 범위는 [0, config.n_positions - 1].
- sequence_id (torch.Tensor, shape (batch_size, sequence_length), optional) — 체인 인식 어텐션 마스크링을 위해 인코더로 전달되는 정수 체인 ID 텐서입니다. 인코딩 방식은 EsmcModel.forward()를 참고하세요.
- labels (torch.LongTensor, shape (batch_size, sequence_length), 선택 사항) —
마스크 언어 모델링 손실용 라벨입니다. 라벨이
-100인 위치는 무시됩니다. 다른 위치의 값은[0, config.vocab_size)범위에 있어야 합니다.
반환값
[~modeling_outputs.MaskedLMOutput] 또는 tuple(torch.Tensor)
[~modeling_outputs.MaskedLMOutput] 또는 torch.Tensor의 튜플(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성([EsmcConfig])과 입력에 따라 다양한 요소를 포함합니다.
[EsmcForMaskedLM]의 forward 메서드는 call 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 [Module] 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (torch.Tensor, shape (1,), optional, labels이 제공될 때 반환됨) — Masked language modeling (MLM) loss.
logits (torch.Tensor, shape (batch_size, sequence_length, config.vocab_size)) — 언어 모델링 헤드에 의한 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수).
hidden_states (tuple(torch.Tensor), optional, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.
각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (tuple(torch.Tensor), optional, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.
self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
예:
>>> 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
class 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.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.Tensor)
매개변수
- input_ids (
torch.LongTensor형상이(batch_size, sequence_length), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- position_ids (
torch.LongTensor의 shape(batch_size, sequence_length), , 선택 사항) — 위치 임베딩에서 각 입력 시퀀스 토큰의 위치 인덱스. 범위[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensor, shape(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인 경우 회귀 손실(Mean-Square loss)이 계산되고,config.num_labels > 1인 경우 분류 손실(Cross-Entropy)이 계산됩니다.
반환값
SequenceClassifierOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 SequenceClassifierOutput입니다. 구성(EsmcConfig)과 입력에 따라 다양한 요소를 포함하며, return_dict=False가 전달되거나 config.return_dict=False인 경우에도 동일합니다.
EsmcForSequenceClassification의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — 분류 (또는 config.num_labels==1인 경우 회귀) 손실.logits (
torch.Tensor, shape(batch_size, config.num_labels)) — SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수.hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
단일 레이블 분류의 예시:
>>> 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.Tensor | None = Nonelabels: torch.LongTensor | None = Noneuse_cache: bool | None = None**kwargs: Unpack[TransformersKwargs] ) → TokenClassifierOutput
매개변수
- input_ids (
torch.LongTensor형상이(batch_size, sequence_length), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- position_ids (
torch.LongTensor의 shape(batch_size, sequence_length), , 선택 사항) — 위치 임베딩에서 각 입력 시퀀스 토큰의 위치 인덱스. 범위[0, config.n_positions - 1]. - past_key_values (
Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록과 크로스 어텐션 블록의 key 및 value). 일반적으로 이는past_key_values이전 디코딩 단계에서 모델이 반환한use_cache=True또는config.use_cache=True.입력으로 Cache 인스턴스만 허용되며, kv cache 가이드를 참고하세요.
past_key_values가 전달되지 않으면 기본적으로 DynamicCache가 초기화됩니다.모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다.
past_key_values를 사용하는 경우, 이 모델에 과거 키 값 상태가 제공되지 않은input_ids만 입력해야 하며, 이때의 shape은(batch_size, unprocessed_length)입니다. shape이(batch_size, sequence_length)인 전체input_ids를 입력하지 않습니다. - inputs_embeds (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택) —input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다input_ids인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다. - labels (
torch.LongTensor, shape(batch_size, sequence_length), 선택 사항) — 토큰 분류 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[0, ..., config.num_labels - 1]범위에 있어야 합니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조).
반환값
TokenClassifierOutput
GenericForTokenClassification의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.