# Evolla

## Genel Bakış

The Evolla model was proposed in [Decoding the Molecular Language of Proteins with Evolla](https://doi.org/10.1101/2025.01.05.630192) by [Zhou et al.](https://doi.org/10.1101/2025.01.05.630192).

Evolla, proteinlerin moleküler dilini çözmek için tasarlanmış gelişmiş 80 milyar parametreli bir protein-dil üretken modelidir. Protein dizileri, yapıları ve kullanıcı sorgularından gelen bilgileri birleştirerek protein işlevi hakkında hassas ve bağlama duyarlı içgörüler üretir. 546 milyon protein soru-cevap çifti ve 150 milyar kelime token'ından oluşan benzersiz yapay zekâ destekli bir veri setinde eğitilen Evolla, proteomik ve fonksiyonel genomik alanındaki araştırmaları önemli ölçüde ileriye taşır; uzman düzeyinde içgörüler sunarak proteinlerde kodlanan moleküler mantığı aydınlatır.

Makalenin özeti aşağıdaki gibidir:

*Proteinler, doğanın karmaşık moleküler makineleri, milyarlarca yıllık evrimin ürünüdür ve yaşamı sürdürmede temel roller oynar. Bununla birlikte, moleküler dillerini çözmek, yani protein dizilerinin ve yapılarının biyolojik işlevleri nasıl kodladığını ve belirlediğini anlamak, modern biyolojide hâlâ köşe taşı niteliğinde bir zorluktur. Burada, proteinlerin moleküler dilini çözmek üzere tasarlanmış, 80 milyar parametreli bir sınır protein-dil üretici modeli olan Evolla'yı tanıtıyoruz. Protein dizilerinden, yapılardan ve kullanıcı sorgularından gelen bilgileri birleştirerek Evolla, protein işlevi hakkında hassas ve bağlama duyarlı içgörüler üretir. Evolla'nın temel yeniliği, benzeri görülmemiş bir yapay zekâ tarafından oluşturulan veri setinde eğitim almasında yatar: proteinlerin muazzam karmaşıklığını ve işlevsel çeşitliliğini yansıtmak üzere tasarlanmış 546 milyon protein soru-cevap çifti ve 150 milyar kelime belirteci. Ön-eğitim sonrası Evolla, modelin tercih sinyallerine göre incelenmesi için Direct Preference Optimization (DPO) ve harici bilgi entegrasyonu için Retrieval-Augmented Generation (RAG) entegre ederek yanıt kalitesini ve ilgiliğini iyileştirir. Performansını değerlendirmek için Instructional Response Space (IRS) adlı yeni bir çerçeve öneriyoruz; bu çerçeve, Evolla'nın uzman düzeyinde içgörüler sunduğunu göstererek proteomik ve fonksiyonel genomik alanındaki araştırmaları ilerletirken proteinlerde kodlanan moleküler mantığa ışık tutmaktadır. Çevrimiçi demo http://www.chat-protein.com/ adresinde mevcuttur.*

Örnekler:

```python
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
)
```

İpuçları:

- Bu model [Xibin Bayes Zhou](https://huggingface.co/XibinBayesZhou) tarafından katkıda bulunmuştur.
- Orijinal kod [burada](https://github.com/westlake-repl/Evolla) bulunabilir.

## EvollaConfig[[transformers.EvollaConfig]]

#### transformers.EvollaConfig[[transformers.EvollaConfig]]

```python
transformers.EvollaConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, protein_encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, vocab_size: int = 128256, hidden_size: int = 4096, intermediate_size: int = 14336, num_hidden_layers: int = 32, num_attention_heads: int = 32, num_key_value_heads: int | None = 8, hidden_act: str = 'silu', max_position_embeddings: int = 8192, rms_norm_eps: float = 1e-05, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None, attention_bias: bool = False, attention_dropout: float | int | None = 0.0, mlp_bias: bool = False, aligner_ffn_mult: int | None = 4, aligner_enable_bias: bool | None = True, aligner_attention_probs_dropout_prob: float | None = 0.1, aligner_num_add_layers: int | None = 8, resampler_depth: int | None = 6, resampler_dim_head: int | None = 64, resampler_heads: int | None = 8, resampler_num_latents: int | None = 64, resampler_ff_mult: int | None = 4, initializer_range: float = 0.02, pad_token_id: int | None = None, bos_token_id: int | None = 128000, eos_token_id: int | list[int] | None = 128009, use_cache: bool = False, tie_word_embeddings: bool = False, is_decoder: bool | None = False, add_cross_attention: bool | None = False)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/evolla/configuration_evolla.py#L64)

**Parametreler:**

protein_encoder_config (`dict`, *isteğe bağlı*) : `SaProtConfig`'i başlatmak için kullanılan yapılandırma seçeneklerinin sözlüğü.

vocab_size (`int`, *isteğe bağlı*, varsayılan `128256`) : Modelin sözlük boyutu. `input_ids` tarafından temsil edilebilecek farklı token sayısını tanımlar.

hidden_size (`int`, *isteğe bağlı*, varsayılan `4096`) : Gizli temsillerin boyutu.

intermediate_size (`int`, *isteğe bağlı*, varsayılan `14336`) : MLP temsil boyutu.

num_hidden_layers (`int`, *isteğe bağlı*, varsayılan `32`) : Transformer decoder'ındaki gizli katman sayısı.

num_attention_heads (`int`, *isteğe bağlı*, varsayılan `32`) : Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.

num_key_value_heads (`int`, *isteğe bağlı*, varsayılan `8`) : Grouped Query Attention'ı uygulamak için kullanılması gereken key_value başlarının sayısıdır. `num_key_value_heads=num_attention_heads` ise model Multi Head Attention (MHA) kullanır, `num_key_value_heads=1` ise model Multi Query Attention (MQA) kullanır, aksi halde GQA kullanılır. Çok başlı bir checkpoint'i GQA checkpoint'ine dönüştürürken, her grup key ve value başı, o gruptaki tüm orijinal başların ortalama havuzlanması (meanpooling) ile oluşturulmalıdır. Daha fazla ayrıntı için [bu makaleye](https://huggingface.co/papers/2305.13245) göz atın. Belirtilmezse, varsayılan olarak `num_attention_heads` kullanılır.

hidden_act (`str`, *isteğe bağlı*, varsayılan `silu`) : Dekoderdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, `"gelu"`, `"relu"`, `"silu"` vb.

max_position_embeddings (`int`, *isteğe bağlı*, varsayılan `8192`) : Bu modelin kullanılabileceği maksimum dizi uzunluğu.

rms_norm_eps (`float`, *opsiyonel*, varsayılan `1e-05`) : rms normalizasyon katmanları tarafından kullanılan epsilon.

rope_parameters (`Union[~modeling_rope_utils.RopeParameters, dict]`, *isteğe bağlı*) : RoPE gömme yapılandırma parametrelerini içeren sözlük. Sözlük, `rope_theta` için bir değer içermeli ve daha uzun `max_position_embeddings` ile RoPE kullanmak istiyorsanız ölçekleme için kullanılan parametreleri isteğe bağlı olarak içermelidir.

attention_bias (`bool`, *isteğe bağlı*, varsayılan `False`) : Kendi kendine dikkat (self-attention) sırasında sorgu, anahtar, değer ve çıktı projeksiyon katmanlarında sapma (bias) kullanılıp kullanılmayacağı.

attention_dropout (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.0`) : Dikkat olasılıkları için dropout oranı.

mlp_bias (`bool`, *isteğe bağlı*, varsayılan `False`) : MLP katmanlarındaki up_proj, down_proj ve gate_proj katmanlarında bias kullanılıp kullanılmayacağı.

aligner_ffn_mult (`int`, *isteğe bağlı*, varsayılan 4) : Hizalayıcı katmanı için FFN çarpanı.

aligner_enable_bias (`bool`, *isteğe bağlı*, varsayılan `True`) : Aligner katmanında bias kullanılıp kullanılmayacağı.

aligner_attention_probs_dropout_prob (`float`, *opsiyonel*, varsayılan 0.1) : Aligner katmanındaki dikkat olasılıkları için dropout oranı.

aligner_num_add_layers (`int`, *isteğe bağlı*, varsayılan 8) : Hizalayıcı katmanı için ek katman sayısı.

resampler_depth (`int`, *isteğe bağlı*, varsayılan 6) : llama modelindeki resampler katmanının derinliği.

resampler_dim_head (`int`, *opsiyonel*, varsayılan 64) : Llama modelindeki resampler katmanındaki başların boyutu.

resampler_heads (`int`, *isteğe bağlı*, varsayılan 8) : llama modelindeki resampler katmanındaki baş sayısı.

resampler_num_latents (`int`, *isteğe bağlı*, varsayılan 64) : Llama modelindeki resampler katmanındaki latent sayısı.

resampler_ff_mult (`int`, *isteğe bağlı*, varsayılan 4) : Resampler katmanı için FFN çarpanı.

initializer_range (`float`, *opsiyonel*, varsayılan `0.02`) : Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

pad_token_id (`int`, *isteğe bağlı*) : Sözlükte dolgu için kullanılan token kimliği.

bos_token_id (`int`, *isteğe bağlı*, varsayılan `128000`) : Sözlükte akış başlangıcı için kullanılan token kimliği.

eos_token_id (`Union[int, list[int]]`, *isteğe bağlı*, varsayılan `128009`) : Sözlükte akış sonu için kullanılan token kimliği.

use_cache (`bool`, *isteğe bağlı*, varsayılan `False`) : Modelin son anahtar/değer dikkatlerini (tüm modellerde kullanılmaz) döndürüp döndürmeyeceğini belirtir. Yalnızca `config.is_decoder=True` olduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir.

tie_word_embeddings (`bool`, *isteğe bağlı*, varsayılan `False`) : Ağırlık gömme bağlamalarının, modelin `tied_weights_keys` eşlemesine göre yapılıp yapılmayacağını belirtir.

is_decoder (`bool`, *isteğe bağlı*, varsayılan `False`) : Modelin bir çözücü olarak kullanılıp kullanılmadığı. `False` ise model, bir kodlayıcı olarak kullanılır.

add_cross_attention (`bool`, *isteğe bağlı*, varsayılan `False`) : Modelde çapraz dikkat katmanlarının eklenip eklenmeyeceğini belirtir.

Bu, bir EvollaModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Evolla modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılanlarla bir yapılandırma örneği oluşturmak, [westlake-repl/Evolla-10B-hf](https://huggingface.co/westlake-repl/Evolla-10B-hf) modelinin yapılandırmasına benzer bir yapılandırma elde etmenizi sağlar.

Yapılandırma nesneleri [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) sınıfından türetilir ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) belgesini okuyun.

Örnek:

```python
>>> 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]]

#### transformers.EvollaModel[[transformers.EvollaModel]]

```python
transformers.EvollaModel(config: EvollaConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/evolla/modeling_evolla.py#L1269)

#### forward[[transformers.EvollaModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, protein_input_ids: typing.Optional[torch.LongTensor] = None, protein_attention_mask: typing.Optional[torch.Tensor] = None, structure_feats: typing.Optional[torch.Tensor] = None, msa_feats: typing.Optional[torch.Tensor] = None, structure_batch_mask: typing.Optional[torch.Tensor] = None, msa_batch_mask: typing.Optional[torch.Tensor] = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/evolla/modeling_evolla.py#L1297)

**Parametreler:**

input_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yoksayılır. İndeksler [AutoTokenizer](/docs/transformers/main/tr/model_doc/auto#transformers.AutoTokenizer) kullanılarak elde edilebilir. Ayrıntılar için [PreTrainedTokenizer.encode()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) ve [PreTrainedTokenizer.__call__()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) yöntemlerine bakın. [Girdi kimlikları (input IDs) nedir?](../glossary#input-ids)

attention_mask (`torch.Tensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Dolgu (padding) token indekslerinde dikkat (attention) işleminin uygulanmamasını sağlayan maske. `[0, 1]` aralığında seçilen maske değerleri:  - **maske uygulanmayan** tokenlar için 1, - **maske uygulanan** tokenlar için 0.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

position_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Girdi dizisi token'larının konum gömme (position embeddings) içindeki konum indeksleri. `[0, config.n_positions - 1]` aralığında seçilir.  [Konum kimlikleri (position IDs) nedir?](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`, *isteğe bağlı*) : Sıralı çözümlemeyi hızlandırmak için kullanılabilen, önceden hesaplanmış gizli durumlar (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle, `use_cache=True` veya `config.use_cache=True` olduğunda, çözümlemenin önceki bir aşamasında modelin döndürdüğü `past_key_values` değerlerinden oluşur. Girdi olarak yalnızca [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneği kabul edilir, bkz. [kv cache kılavuzu](https://huggingface.co/docs/transformers/en/kv_cache). `past_key_values` geçirilmezse, varsayılan olarak [DynamicCache](/docs/transformers/main/tr/internal/generation_utils#transformers.DynamicCache) başlatılır. Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak verecektir. `past_key_values` kullanılıyorsa, kullanıcının, bu modele geçmiş anahtar-değer durumları verilmemiş olan, yalnızca işlenmemiş `input_ids` değerlerini (şekli `(batch_size, unprocessed_length)` olan) girmesi beklenir; bunun yerine, şekli `(batch_size, sequence_length)` olan tüm `input_ids` değerleri girilmez.

inputs_embeds (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) : `input_ids` parametresini iletmek yerine, gömülü bir temsil doğrudan iletmeyi tercih edebilirsiniz. Bu, `input_ids` indekslerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisine kıyasla daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.

use_cache (`bool`, *isteğe bağlı*) : `True` olarak ayarlanırsa, `past_key_values` anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. `past_key_values`).

protein_input_ids (`torch.LongTensor`, *isteğe bağlı*) : Yapıya duyarlı jetonlarda protein dizisi için girdi kimlikleri. Şekli `(batch_size, protein_seq_length)` ve tipi `torch.LongTensor` olmalıdır.

protein_attention_mask (`torch.Tensor`, *isteğe bağlı*) : Protein dizisi için dikkat maskesi. Şekli `(batch_size, protein_seq_length)` ve tipi `torch.Tensor` olmalıdır.

structure_feats (`torch.Tensor`, *isteğe bağlı*) : Yalnızca yapı tabanlı özellikler için girdi kimlikleri. Şekli `(batch_size, structure_seq_length, structure_feat_dim)` ve tipi `torch.Tensor` olmalıdır. Şimdilik sahte girdi.

msa_feats (`torch.Tensor`, *isteğe bağlı*) : Saf MSA tabanlı özellikler için girdi kimlikleri. Şekli `(batch_size, msa_seq_length, msa_feat_dim)` ve tipi `torch.Tensor` olmalıdır. Şimdilik sahte girdi.

structure_batch_mask (`torch.Tensor`, *isteğe bağlı*) : Hangi protein dizilerinin tamamen yapı tabanlı olduğunu belirlemek için kullanılan parti maskesi. Şekli `(batch_size)` ve tipi `torch.Tensor` olmalıdır. `structure_feats` ile eşleştirilmelidir. Şimdilik sahte girdi.

msa_batch_mask (`torch.Tensor`, *opsiyonel*) : Hangi protein dizilerinin tamamen MSA tabanlı olduğunu belirlemek için kullanılan parti maskesi. Şekli `(batch_size)` ve tipi `torch.Tensor` olmalıdır. `msa_feats` ile eşleştirilmelidir. Şimdilik sahte girdi.

**Dönüş:** [BaseModelOutputWithPast](/docs/transformers/main/tr/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPast) veya `tuple(torch.Tensor)`

Yapılandırmaya (`None`) ve girdilere bağlı olarak çeşitli öğelerden oluşan bir [BaseModelOutputWithPast](/docs/transformers/main/tr/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPast) veya bir `torch.Tensor` demeti (`return_dict=False` geçirildiğinde veya `config.return_dict=False` olduğunda).

[EvollaModel](/docs/transformers/main/tr/model_doc/evolla#transformers.EvollaModel) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **last_hidden_state** (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`) -- Modelin son katmanının çıktısındaki gizli durumlar dizisi.

  `past_key_values` kullanılırsa, yalnızca `(batch_size, 1, hidden_size)` biçimindeki dizilerin son gizli durumu (hidden-state) çıktı olarak verilir.
- **past_key_values** (`Cache`, *isteğe bağlı*, `use_cache=True` geçirildiğinde veya `config.use_cache=True` olduğunda döndürülür) -- Bir [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneğidir. Daha fazla ayrıntı için [kv cache kılavuzumuza](https://huggingface.co/docs/transformers/en/kv_cache) bakın.

  Sıralı çözümlemeyi hızlandırmak için (bkz. `past_key_values` girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler ve isteğe bağlı olarak `config.is_encoder_decoder=True` ise cross-attention bloklarındaki anahtar ve değerler) içerir.
- **hidden_states** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren, `(batch_size, sequence_length, hidden_size)` biçiminde bir demet.

  Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- **attentions** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `torch.Tensor` (her katman için bir tane) içeren bir tuple, şekli `(batch_size, num_heads, sequence_length, sequence_length)`.

  Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

## EvollaForProteinText2Text[[transformers.EvollaForProteinText2Text]]

#### transformers.EvollaForProteinText2Text[[transformers.EvollaForProteinText2Text]]

```python
transformers.EvollaForProteinText2Text(config: EvollaConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/evolla/modeling_evolla.py#L1396)

#### forward[[transformers.EvollaForProteinText2Text.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, protein_input_ids: typing.Optional[torch.LongTensor] = None, protein_attention_mask: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, logits_to_keep: typing.Union[int, torch.Tensor] = 0, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/evolla/modeling_evolla.py#L1411)

**Parametreler:**

input_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yoksayılır. İndeksler [AutoTokenizer](/docs/transformers/main/tr/model_doc/auto#transformers.AutoTokenizer) kullanılarak elde edilebilir. Ayrıntılar için [PreTrainedTokenizer.encode()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) ve [PreTrainedTokenizer.__call__()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) yöntemlerine bakın. [Girdi kimlikları (input IDs) nedir?](../glossary#input-ids)

attention_mask (`torch.Tensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Dolgu (padding) token indekslerinde dikkat (attention) işleminin uygulanmamasını sağlayan maske. `[0, 1]` aralığında seçilen maske değerleri:  - **maske uygulanmayan** tokenlar için 1, - **maske uygulanan** tokenlar için 0.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

inputs_embeds (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) : `input_ids` parametresini iletmek yerine, gömülü bir temsil doğrudan iletmeyi tercih edebilirsiniz. Bu, `input_ids` indekslerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisine kıyasla daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.

labels (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Maskeli dil modelleme kaybını hesaplamak için etiketler. Endeksler `[0, ..., config.vocab_size]` aralığında olmalı ya da -100 olmalı (`input_ids` docstring'ine bakın). Endeksleri `-100` olarak ayarlanan tokenlar yok sayılır (maskelenir), kayıp yalnızca `[0, ..., config.vocab_size]` aralığında etiketlere sahip tokenlar için hesaplanır.

protein_input_ids (`torch.LongTensor`, *isteğe bağlı*) : Protein dizisi için girdi kimlikleri. Şekli `(batch_size, protein_seq_length)` ve tipi `torch.LongTensor` olmalıdır.

protein_attention_mask (`torch.Tensor`, *isteğe bağlı*) : Protein dizisi için dikkat maskesi. Şekli `(batch_size, protein_seq_length)` ve tipi `torch.Tensor` olmalıdır.

use_cache (`bool`, *isteğe bağlı*) : `True` olarak ayarlanırsa, `past_key_values` anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. `past_key_values`).

logits_to_keep (`Union[int, torch.Tensor]`, *isteğe bağlı*, varsayılan `0`) : `int` ise, son `logits_to_keep` token için logits hesaplanır. `0` ise, tüm `input_ids` için logits hesaplanır (özel durum). Üretim için yalnızca son token'ın logits'ine ihtiyaç duyulur ve bunların yalnızca o token için hesaplanması bellek tasarrufu sağlar; bu, uzun diziler veya büyük sözlük boyutu için oldukça önemli hale gelir. `torch.Tensor` ise, dizi uzunluğu boyutunda tutulacak indekslere karşılık gelen 1B olmalıdır. Bu, paketlenmiş tensor biçimini (batch ve dizi uzunluğu için tek boyut) kullanırken faydalıdır.

[EvollaForProteinText2Text](/docs/transformers/main/tr/model_doc/evolla#transformers.EvollaForProteinText2Text) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

Örnek:

```python
>>> 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[[transformers.EvollaProcessor]]

#### transformers.EvollaProcessor[[transformers.EvollaProcessor]]

```python
transformers.EvollaProcessor(protein_tokenizer, tokenizer = None, protein_max_length = 1024, text_max_length = 512, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/evolla/processing_evolla.py#L27)

**Parametreler:**

protein_tokenizer (`EsmTokenizer`) : [EsmTokenizer](/docs/transformers/main/tr/model_doc/esm#transformers.EsmTokenizer) örneği. Protein tokenizer'ı zorunlu bir girdidir.

tokenizer (`tokenizer_class`) : Tokenizer zorunlu bir girdidir.

protein_max_length (`int`, *isteğe bağlı*, varsayılan 1024) : Üretilecek dizinin maksimum uzunluğu.

text_max_length (`int`, *isteğe bağlı*, varsayılan 512) : Üretilecek metnin maksimum uzunluğu.

Bir protein tokenizer'ı ve bir tokenizer'ı tek bir işlemciye sararak bir EvollaProcessor oluşturur.

[EvollaProcessor](/docs/transformers/main/tr/model_doc/evolla#transformers.EvollaProcessor), `{protein_tokenizer_class}` ve `tokenizer_class` sınıflarının tüm işlevlerini sunar. Daha fazla bilgi için `~{protein_tokenizer_class}` ve `~tokenizer_class` belgelerine bakın.

#### __call__[[transformers.EvollaProcessor.__call__]]

```python
__call__(proteins: list[dict] | dict | None = None, messages_list: list[list[dict]] | list[dict] | None = None, protein_max_length: int | None = None, text_max_length: int | None = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/evolla/processing_evolla.py#L85)

**Parametreler:**

proteins (`Union[List[dict], dict]`) : Aşağıdaki anahtarları içeren bir sözlük listesi veya tek bir sözlük: - `"aa_seq"` (`str`) -- Proteinin amino asit dizisi. - `"foldseek"` (`str`) -- Proteinin foldseek dizgesi.

messages_list (`Union[List[List[dict]], List[dict]]`) : Aşağıdaki anahtarları içeren sözlük listelerinin listesi veya sözlük listesi: - `"role"` (`str`) -- Mesajın rolü. - `"content"` (`str`) -- Mesajın içeriği.

protein_max_length (`int`, *isteğe bağlı*, varsayılan 1024) : Üretilecek dizinin maksimum uzunluğu.

text_max_length (`int`, *isteğe bağlı*, varsayılan 512) : Metnin maksimum uzunluğu.

return_tensors (`str` veya [TensorType](/docs/transformers/main/tr/internal/file_utils#transformers.TensorType), *opsiyonel*) : Ayarlanırsa, belirli bir çerçeveye ait tensörleri döndürür. Kabul edilen değerler:  - `'pt'`: PyTorch `torch.Tensor` nesnelerini döndürür. - `'np'`: NumPy `np.ndarray` nesnelerini döndürür.

**Dönüş:** `a dict with following keys`

- `protein_input_ids` (`torch.Tensor`, şekli `(batch_size, sequence_length)`) -- Protein dizisi için girdi kimlikleri.
- `protein_attention_mask` (`torch.Tensor`, şekli `(batch_size, sequence_length)`) -- Protein dizisi için dikkat maskesi.
- `text_input_ids` (`torch.Tensor`, şekli `(batch_size, sequence_length)`) -- Metin dizisi için girdi kimlikleri.
- `text_attention_mask` (`torch.Tensor`, şekli `(batch_size, sequence_length)`) -- Metin dizisi için dikkat maskesi.

