Transformers documentation

Evolla

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

이 모델은 2025-07-26에 Hugging Face Transformers에 기여되었습니다.

Evolla

개요

The Evolla model was proposed in Decoding the Molecular Language of Proteins with Evolla by Zhou et al..

Evolla는 단백질의 분자 언어를 해독하도록 설계된 고급 800억 파라미터 단백질 언어 생성 모델입니다. 단백질 서열, 구조, 사용자 쿼리에 대한 정보를 통합하여 단백질 기능에 대한 정확하고 맥락적으로 세밀한 통찰력을 생성합니다. 5억 4,600만 개의 단백질 질답 쌍과 1,500억 개의 워드 토큰으로 구성된 전례 없는 AI 생성 데이터셋으로 학습된 Evolla는 단백질에 인코딩된 분자 논리를 밝히며 전문가 수준의 통찰력을 제공함으로써 단백질체학 및 기능 유전체학 연구를 크게 발전시킵니다.

해당 논문의 초록은 다음과 같습니다:

단백질은 자연의 정교한 분자 기계로, 수십억 년에 걸친 진화의 산물이며 생명 유지에 근본적인 역할을 합니다. 그러나 단백질의 분자 언어, 즉 단백질 서열과 구조가 생물학적 기능을 어떻게 인코딩하고 결정하는지를 해독하는 것은 현대 생물학의 핵심 과제입니다. 본 논문에서는 단백질의 분자 언어를 해독하도록 설계된 800억 규모의 프론티어 단백질 언어 생성 모델인 Evolla를 소개합니다. Evolla는 단백질 서열, 구조, 사용자 쿼리에서来的 정보를 통합하여 단백질 기능에 대한 정확하고 맥락적으로 세밀한 통찰을 생성합니다. Evolla의 핵심 혁신은 전례 없는 AI 생성 데이터셋으로 학습된 점에 있습니다. 이 데이터셋은 단백질의 방대한 복잡성과 기능적 다양성을 반영하도록 설계된 5억 4,600만 개의 단백질 질답 쌍과 1,500억 개의 워드 토큰으로 구성됩니다. 사전 학습 후, Evolla는 선호 신호를 기반으로 모델을 정제하기 위해 Direct Preference Optimization(DPO)을 통합하고, 외부 지식 통합을 위해 Retrieval-Augmented Generation(RAG)를 활용하여 응답의 품질과 관련성을 향상시킵니다. 성능을 평가하기 위해 새로운 프레임워크인 Instructional Response Space(IRS)를 제안했으며, 이를 통해 Evolla가 전문가 수준의 통찰을 제공하여 프로테오믹스와 기능 유전체학 연구를 발전시키고 단백질에 인코딩된 분자 논리를 밝히는 데 기여함을 입증했습니다. 온라인 데모는 http://www.chat-protein.com/에서 이용할 수 있습니다.

예:

processor = EvollaProcessor.from_pretrained("westlake-repl/Evolla-10B-DPO-hf")
model = EvollaForProteinText2Text.from_pretrained("westlake-repl/Evolla-10B-DPO-hf", device_map="auto")
# aa_seq should have same length as foldseek
protein_inputs = [
    {

        "aa_seq": "MATGGRRG...",
        "foldseek": "###lqpfd...", # hashtag means the low-confidence foldseek tokens
    },
    {
        "aa_seq": "MLPGLALL...",
        "foldseek": "dfwwkwad...",
    }
]
message_list = [
    [
        {
            "role": "system",
            "content": "You are an AI expert that can answer any questions about protein.",
        },
        {"role": "user", "content": "What is the function of this protein?"},
    ],
    [
        {
            "role": "system",
            "content": "You are an AI expert that can answer any questions about protein.",
        },
        {"role": "user", "content": "What is the function of this protein?"},
    ]
]
input_dict = processor(
    protein_inputs, messages_list, return_tensors="pt", text_max_length=512, protein_max_length=1024
)
with torch.no_grad():
    generated_ids = hf_model.generate(**input_dict)
generated_texts = processor.batch_decode(
    generated_ids, skip_special_tokens=True
)

팁:

  • 이 모델은 Xibin Bayes Zhou님이 기여했습니다.
  • 원본 코드는 여기에서 찾을 수 있습니다.

EvollaConfig

클래스 transformers.EvollaConfig

< >

( 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 = Noneprotein_encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonevocab_size: int = 128256hidden_size: int = 4096intermediate_size: int = 14336num_hidden_layers: int = 32num_attention_heads: int = 32num_key_value_heads: int | None = 8hidden_act: str = 'silu'max_position_embeddings: int = 8192rms_norm_eps: float = 1e-05rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneattention_bias: bool = Falseattention_dropout: float | int | None = 0.0mlp_bias: bool = Falsealigner_ffn_mult: int | None = 4aligner_enable_bias: bool | None = Truealigner_attention_probs_dropout_prob: float | None = 0.1aligner_num_add_layers: int | None = 8resampler_depth: int | None = 6resampler_dim_head: int | None = 64resampler_heads: int | None = 8resampler_num_latents: int | None = 64resampler_ff_mult: int | None = 4initializer_range: float = 0.02pad_token_id: int | None = Nonebos_token_id: int | None = 128000eos_token_id: int | list[int] | None = 128009use_cache: bool = Falsetie_word_embeddings: bool = Falseis_decoder: bool | None = Falseadd_cross_attention: bool | None = False )

매개변수

  • protein_encoder_config (dict, 선택) — SaProtConfig를 초기화하는 데 사용되는 구성 옵션의 사전입니다.
  • vocab_size (int, 선택 사항, 기본값 128256) — 모델의 어휘 크기입니다. input_ids로 표현할 수 있는 서로 다른 토큰의 수를 정의합니다.
  • hidden_size (int, 선택 사항, 기본값 4096) — 숨겨진 표현의 차원입니다.
  • intermediate_size (int, 선택 사항, 기본값 14336) — MLP 표현의 차원입니다.
  • num_hidden_layers (int, 선택 사항, 기본값 32) — Transformer decoder의 숨겨진 레이어 수.
  • num_attention_heads (int, 선택 사항, 기본값 32) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다.
  • 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 헤드는 해당 그룹 내 모든 원래 헤드를 평균 풀링(meanpooling)하여 구성해야 합니다. 자세한 내용은 이 논문을 참고하세요. 지정하지 않으면 num_attention_heads가 기본값으로 사용됩니다.
  • hidden_act (str, 선택 사항, 기본값 silu) — 디코더의 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어, "gelu", "relu", "silu" 등이 있습니다.
  • max_position_embeddings (int, 선택 사항, 기본값 8192) — 이 모델이 사용될 수 있는 최대 시퀀스 길이입니다.
  • rms_norm_eps (float, 선택 사항, 기본값 1e-05) — rms 정규화 레이어에서 사용되는 epsilon 값입니다.
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], 선택) — RoPE 임베딩의 구성 매개변수를 포함하는 사전입니다. 사전에는 rope_theta 값이 포함되어야 하며, 더 긴 max_position_embeddings로 RoPE를 사용하려는 경우 스케일링에 사용되는 매개변수를 선택적으로 포함할 수 있습니다.
  • attention_bias (bool, 선택 사항, 기본값 False) — 자기 주의(self-attention) 시 query, key, value 및 출력 투영 계층에 bias를 사용할지 여부입니다.
  • attention_dropout (Union[float, int], 선택 사항, 기본값 0.0) — Attention 확률에 적용할 dropout 비율입니다.
  • mlp_bias (bool, 선택 사항, 기본값 False) — MLP 레이어의 up_proj, down_proj, gate_proj 레이어에 bias를 사용할지 여부.
  • aligner_ffn_mult (int, 선택 사항, 기본값 4) — aligner 레이어의 FFN 배율입니다.
  • aligner_enable_bias (bool, 선택 사항, 기본값 True) — aligner 레이어에서 bias를 사용할지 여부입니다.
  • aligner_attention_probs_dropout_prob (float, 선택 사항, 기본값 0.1) — aligner 레이어의 attention 확률에 적용되는 dropout 비율입니다.
  • aligner_num_add_layers (int, 선택 사항, 기본값 8) — aligner 레이어에 추가할 레이어의 수입니다.
  • resampler_depth (int, 선택 사항, 기본값 6) — Llama 모델에서 resampler 레이어의 깊이입니다.
  • resampler_dim_head (int, 선택 사항, 기본값 64) — Llama 모델의 resampler 레이어에서 헤드 차원입니다.
  • resampler_heads (int, 선택 사항, 기본값 8) — llama 모델의 resampler 레이어에 사용되는 헤드 수입니다.
  • resampler_num_latents (int, 선택 사항, 기본값 64) — llama 모델의 resampler 레이어에 있는 latents의 개수입니다.
  • resampler_ff_mult (int, 선택 사항, 기본값 4) — resampler 레이어의 FFN 배율입니다.
  • initializer_range (float, 선택 사항, 기본값 0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.
  • pad_token_id (int, 선택 사항) — 어휘에서 패딩에 사용되는 토큰 ID입니다.
  • bos_token_id (int, 선택 사항, 기본값 128000) — 어휘에서 스트림 시작에 사용되는 토큰 ID입니다.
  • eos_token_id (Union[int, list[int]], 선택 사항, 기본값 128009) — 어휘에서 스트림 종료에 사용되는 토큰 id입니다.
  • use_cache (bool, 선택 사항, 기본값 False) — 모델이 마지막 key/values attention을 반환할지 여부입니다(모든 모델에서 사용되지 않음). config.is_decoder=True인 경우 또는 모델이 decoder-only 생성 모델인 경우에만 관련이 있습니다.
  • tie_word_embeddings (bool, 선택, 기본값 False) — 모델의 tied_weights_keys 매핑에 따라 가중치 임베딩을 묶을지 여부.
  • is_decoder (bool, 선택 사항, 기본값 False) — 모델이 디코더로 사용되는지 여부입니다. False인 경우 모델은 인코더로 사용됩니다.
  • add_cross_attention (bool, 선택 사항, 기본값 False) — 모델에 cross-attention 레이어를 추가할지 여부.

이것은 EvollaModel의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Evolla 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 westlake-repl/Evolla-10B-hf와 유사한 구성이 생성됩니다.

Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.

예:

>>> from transformers import EvollaModel, EvollaConfig

>>> # Initializing a Evolla evolla-10b style configuration
>>> configuration = EvollaConfig()

>>> # Initializing a model from the evolla-10b style configuration
>>> model = EvollaModel(configuration)

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

EvollaModel

클래스 transformers.EvollaModel

< >

( config: EvollaConfig )

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.Tensor] = Noneuse_cache: bool | None = Noneprotein_input_ids: typing.Optional[torch.LongTensor] = Noneprotein_attention_mask: typing.Optional[torch.Tensor] = Nonestructure_feats: typing.Optional[torch.Tensor] = Nonemsa_feats: typing.Optional[torch.Tensor] = Nonestructure_batch_mask: typing.Optional[torch.Tensor] = Nonemsa_batch_mask: typing.Optional[torch.Tensor] = None**kwargs ) → BaseModelOutputWithPast or tuple(torch.Tensor)

매개변수

  • input_ids (torch.LongTensor 형상이 (batch_size, sequence_length), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.

    AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.

    입력 ID란 무엇인가요?

  • 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].

    포지션 ID란 무엇인가요?

  • past_key_values (~cache_utils.Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(self-attention 블록과 cross-attention 블록의 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 인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다.
  • use_cache (bool, 선택 사항) — True로 설정하면 past_key_values 키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다( past_key_values 참조).
  • protein_input_ids (torch.LongTensor, 선택 사항) — 구조 인식 토큰으로 표현된 단백질 시퀀스의 입력 ID입니다. 형태는 (batch_size, protein_seq_length)이고 타입은 torch.LongTensor여야 합니다.
  • protein_attention_mask (torch.Tensor, 선택 사항) — 단백질 시퀀스에 대한 어텐션 마스크입니다. 형태는 (batch_size, protein_seq_length)이고 타입은 torch.Tensor여야 합니다.
  • structure_feats (torch.Tensor, 선택 사항) — 순수 구조 기반 특징을 위한 입력 ID입니다. 형태는 (batch_size, structure_seq_length, structure_feat_dim)이고 타입은 torch.Tensor여야 합니다. 현재는 더미 입력입니다.
  • msa_feats (torch.Tensor, 선택) — 순수 MSA 기반 특징을 위한 입력 ID입니다. 형태는 (batch_size, msa_seq_length, msa_feat_dim)이고 타입은 torch.Tensor여야 합니다. 현재는 더미 입력입니다.
  • structure_batch_mask (torch.Tensor, 선택) — 순수 구조 기반 단백질 시퀀스를 결정하기 위한 배치 마스크입니다. 형태는 (batch_size)이고 타입은 torch.Tensor여야 합니다. structure_feats와 함께 사용해야 합니다. 현재는 더미 입력입니다.
  • msa_batch_mask (torch.Tensor, 선택) — 순수하게 MSA 기반인 단백질 시퀀스를 결정하기 위한 배치 마스크입니다. 형태는 (batch_size)이고 타입은 torch.Tensor여야 합니다. msa_feats와 함께 사용해야 합니다. 현재는 더미 입력입니다.

반환값

BaseModelOutputWithPast 또는 tuple(torch.Tensor)

None 및 입력에 따라 구성이 달라지는 여러 요소로 구성된 BaseModelOutputWithPast 또는 torch.Tensor의 튜플(return_dict=False가 전달되거나 config.return_dict=False인 경우).

EvollaModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • last_hidden_state (torch.Tensor, shape (batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.

    past_key_values가 사용되면, (batch_size, 1, hidden_size) 형태의 시퀀스의 마지막 hidden-state만 출력됩니다.

  • past_key_values (Cache, 선택 사항, use_cache=True가 전달되었거나 config.use_cache=True인 경우 반환됨) — Cache 인스턴스입니다. 자세한 내용은 kv cache 가이드를 참고하세요.

    순차적 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록의 key와 value, 그리고 config.is_encoder_decoder=True인 경우 크로스 어텐션 블록의 key와 value)를 포함합니다(입력 past_key_values 참조).

  • 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 가중치.

EvollaForProteinText2Text

class transformers.EvollaForProteinText2Text

< >

( config: EvollaConfig )

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneprotein_input_ids: typing.Optional[torch.LongTensor] = Noneprotein_attention_mask: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs )

매개변수

  • input_ids (torch.LongTensor 형상이 (batch_size, sequence_length), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.

    AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.

    입력 ID란 무엇인가요?

  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • 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.vocab_size] 범위 내의 값이거나 -100이어야 합니다(input_ids docstring 참조). 인덱스가 -100으로 설정된 토큰은 무시(마스크)되며, 손실은 [0, ..., config.vocab_size] 범위의 라벨을 가진 토큰에 대해서만 계산됩니다.
  • protein_input_ids (torch.LongTensor, 선택 사항) — 단백질 시퀀스의 입력 ID입니다. 형태는 (batch_size, protein_seq_length)이고 타입은 torch.LongTensor여야 합니다.
  • protein_attention_mask (torch.Tensor, 선택 사항) — 단백질 시퀀스에 대한 어텐션 마스크입니다. 형태는 (batch_size, protein_seq_length)이고 타입은 torch.Tensor여야 합니다.
  • 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차원 텐서여야 합니다. 이는 패킹된 텐서 형식(배치와 시퀀스 길이를 단일 차원으로 사용하는 경우)을 사용할 때 유용합니다.

EvollaForProteinText2Text의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

예:

>>> from transformers import EvollaProcessor, EvollaForProteinText2Text
>>> model = EvollaForProteinText2Text.from_pretrained("westlake/Evolla-10B-hf")
>>> processor = EvollaProcessor.from_pretrained("westlake/Evolla-10B-hf")

>>> protein_information = {
    "aa_seq": "your amino acid sequence",
    "foldseek": "your foldseek sequence",
}
>>> question = "What is the function of this protein?"
>>> message = [
    {"role": "system", "content": "You are an AI expert that can answer any questions about protein."},
    {"role": "user", "content": question},
]

>>> inputs = processor(proteins=[protein_information], messages_list=[message], return_tensors="pt", padding="longest")
>>> outputs = model.generate(**inputs)

>>> print(processor.batch_decode(outputs, skip_special_tokens=True))

EvollaProcessor

class transformers.EvollaProcessor

< >

( protein_tokenizertokenizer = Noneprotein_max_length = 1024text_max_length = 512**kwargs )

매개변수

  • protein_tokenizer (EsmTokenizer) — EsmTokenizer의 인스턴스입니다. 단백질 토크나이저는 필수 입력값입니다.
  • tokenizer (tokenizer_class) — 토크나이저는 필수 입력값입니다.
  • protein_max_length (int, 선택 사항, 기본값 1024) — 생성할 시퀀스의 최대 길이입니다.
  • text_max_length (int, 선택 사항, 기본값 512) — 생성할 텍스트의 최대 길이입니다.

단백질 토크나이저와 토크나이저를 단일 프로세서로 래핑하는 EvollaProcessor를 생성합니다.

EvollaProcessor는 {protein_tokenizer_class}와 tokenizer_class의 모든 기능을 제공합니다. 자세한 내용은 ~{protein_tokenizer_class}와 ~tokenizer_class를 참고하세요.

__call__

< >

( proteins: list[dict] | dict | None = Nonemessages_list: list[list[dict]] | list[dict] | None = Noneprotein_max_length: int | None = Nonetext_max_length: int | None = None**kwargs ) → a dict with following keys

매개변수

  • proteins (Union[List[dict], dict]) — 다음 키를 포함하는 사전 목록 또는 단일 사전:
    • "aa_seq" (str) — 단백질의 아미노산 서열입니다.
    • "foldseek" (str) — 단백질의 foldseek 문자열입니다.
  • messages_list (Union[List[List[dict]], List[dict]]) — 다음 키를 포함하는 딕셔너리의 리스트 또는 딕셔너리 리스트의 리스트입니다:
    • "role" (str) — 메시지의 역할입니다.
    • "content" (str) — 메시지의 내용입니다.
  • protein_max_length (int, 선택 사항, 기본값 1024) — 생성할 시퀀스의 최대 길이입니다.
  • text_max_length (int, 선택 사항, 기본값 512) — 텍스트의 최대 길이입니다.
  • return_tensors (str 또는 TensorType, 선택 사항) — 설정된 경우, 특정 프레임워크의 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:
    • 'pt': PyTorch torch.Tensor 객체를 반환합니다.
    • 'np': NumPy np.ndarray 객체를 반환합니다.

반환값

다음 키를 가진 dict

  • protein_input_ids (torch.Tensor, shape (batch_size, sequence_length)) — 단백질 시퀀스의 입력 ID입니다.
  • protein_attention_mask (torch.Tensor, shape (batch_size, sequence_length)) — 단백질 시퀀스에 대한 attention mask입니다.
  • text_input_ids (torch.Tensor, shape (batch_size, sequence_length)) — 텍스트 시퀀스의 입력 ID입니다.
  • text_attention_mask (torch.Tensor, shape (batch_size, sequence_length)) — 텍스트 시퀀스에 대한 attention mask입니다.
Update on GitHub