Transformers documentation
Evolla
تمت مساهمة هذا النموذج في Hugging Face Transformers في 2025-07-26.
Evolla
نظرة عامة
قُدِّم نموذج Evolla في فكّ الشفرة الجزيئية للبروتينات باستخدام Evolla بواسطة Zhou et al..
Evolla هو نموذج توليدي متقدم للبروتينات واللغة، يتكون من 80 مليار معامل، مصمم لفكّ الشفرة الجزيئية للبروتينات. يدمج النموذج المعلومات المستمدة من تسلسلات البروتينات وهيكلها واستعلامات المستخدم، لتوليد رؤى دقيقة ودقيقة السياق حول وظيفة البروتين. وقد تم تدريب Evolla على مجموعة بيانات غير مسبوقة مولّدة بالذكاء الاصطناعي، تضم 546 مليون زوج من أسئلة البروتينات وأجوبتها، و150 مليار رمز لفظي، مما يُحدث تقدماً كبيراً في أبحاث البروتيوميات وعلم الوراثة الوظيفي، ويوفر رؤى بمستوى الخبراء، ويكشف عن المنطق الجزيئي المُرمَّز في البروتينات.
المستخلص من الورقة البحثية هو كالتالي:
البروتينات، وهي الآلات الجزيئية المعقدة في الطبيعة، هي نتاج مليارات السنين من التطور وتلعب أدواراً أساسية في الحفاظ على الحياة. ومع ذلك، لا يزال فكّ شيفرة لغتها الجزيئية - أي فهم كيفية ترميز تسلسلات البروتينات وهيكلها للوظائف البيولوجية وتحديد هذه الوظائف - تحدياً محورياً في علم الأحياء الحديث. هنا، نعرّف بـ Evolla، وهو نموذج توليدي لغوي للبروتينات من الطراز الأمامي بحجم 80 مليار معرّف، مصمّم لفكّ شيفرة اللغة الجزيئية للبروتينات. من خلال دمج المعلومات المستمدة من تسلسلات البروتينات وهيكلها واستعلامات المستخدم، يولّد Evolla رؤى دقيقة ودقيقة سياقياً حول وظيفة البروتين. تكمن إحدى الابتكارات الرئيسية في Evolla في تدريبه على مجموعة بيانات غير مسبوقة تم إنشاؤها بالذكاء الاصطناعي: 546 مليون زوج من أسئلة البروتينات وأجوبتها و150 مليار رمز كلمة، صُمّمت لتعكس التعقيد الهائل والتنوع الوظيفي للبروتينات. بعد ما قبل التدريب، يدمج Evolla تحسين التفضيل المباشر (DPO) لتحسين النموذج بناءً على إشارات التفضيل، والتوليد المعزّز بالاسترجاع (RAG) لدمج المعرفة الخارجية، مما يحسّن جودة الاستجابات وملاءمتها. لتقييم أدائه، نقترح إطاراً جديداً، وهو مساحة الاستجابة التوجيهية (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
< 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 = 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. - num_attention_heads (
int، اختياري، القيمة الافتراضية32) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer. - num_key_value_heads (
int، اختياري، القيمة الافتراضية8) — هذا هو عدد رؤوس key_value التي يجب استخدامها لتنفيذ Grouped Query Attention. إذا كان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، اختياري، القيمة الافتراضيةsilu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وغيرها. - max_position_embeddings (
int، اختياري، القيمة الافتراضية8192) — أقصى طول تسلسل قد يُستخدم معه هذا النموذج على الإطلاق. - rms_norm_eps (
float، اختياري، القيمة الافتراضية1e-05) — قيمة الإيبسلون المستخدمة في طبقات تطبيع rms. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], اختياري) — قائمة تحتوي على معاملات التهيئة الخاصة بتضمينات RoPE. يجب أن تحتوي القائمة على قيمة لـrope_theta، ومعاملات اختيارية تُستخدم للتوسيع في حال رغبتَ في استخدام RoPE معmax_position_embeddingsأطول. - attention_bias (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام انحياز في طبقات الإسقاط للاستعلام والمفتاح والقيمة والمخرجات أثناء الانتباه الذاتي. - attention_dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — نسبة إسقاط (dropout) لاحتمالات الانتباه. - mlp_bias (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام انحياز في طبقات up_proj وdown_proj وgate_proj ضمن طبقات MLP. - aligner_ffn_mult (
int، اختياري، القيمة الافتراضية 4) — معامل FFN لطبقة المحاذاة. - aligner_enable_bias (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم استخدام الانحياز في طبقة المحاذاة. - aligner_attention_probs_dropout_prob (
float، اختياري، القيمة الافتراضية 0.1) — نسبة الإسقاط (dropout) لاحتمالات الانتباه في طبقة المحاذاة (aligner). - aligner_num_add_layers (
int، اختياري، القيمة الافتراضية 8) — عدد الطبقات الإضافية لطبقة المحاذاة. - resampler_depth (
int، اختياري، القيمة الافتراضية 6) — عمق طبقة المعيد العينة في نموذج Llama. - resampler_dim_head (
int، اختياري، القيمة الافتراضية 64) — أبعاد الرؤوس في طبقة المعيد العينة في نموذج Llama. - resampler_heads (
int، اختياري، القيمة الافتراضية 8) — عدد الرؤوس في طبقة المعيد العينة في نموذج Llama. - resampler_num_latents (
int، اختياري، القيمة الافتراضية 64) — عدد الكمونيات في طبقة المعيد العينة في نموذج Llama. - resampler_ff_mult (
int, اختياري، القيمة الافتراضية 4) — معامل FFN لطبقة المعيد العينة. - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان. - pad_token_id (
int, اختياري) — معرّف الرمز المستخدم للتعبئة في المفردات. - bos_token_id (
int, اختياري، القيمة الافتراضية128000) — معرّف الرمز المستخدم لبدء البث في المفردات. - eos_token_id (
Union[int, list[int]]، اختياري، القيمة الافتراضية128009) — معرّف الرمز المستخدم لنهاية البث في المفردات. - use_cache (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كانconfig.is_decoder=Trueأو عندما يكون النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط. - tie_word_embeddings (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم ربط ترميزات الأوزان وفقاً لخريطةtied_weights_keysالخاصة بالنموذج. - is_decoder (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان النموذج يُستخدم كمفكّك (decoder) أم لا. إذا كانت القيمةFalse، يُستخدم النموذج كمُرمِّز (encoder). - add_cross_attention (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إضافة طبقات الانتباه المتقاطع إلى النموذج.
هذه فئة الإعدادات المخزنة لإعدادات نموذج EvollaModel. تُستخدم لاستحداث نموذج Evolla وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ westlake-repl/Evolla-10B-hf
ترث كائنات التهيئة من 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.configEvollaModel
forward
< source >( 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), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام 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_utils.Cache, اختياري) — حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكون هذا عادةً منpast_key_valuesالذي يعيده النموذج في مرحلة سابقة من فك الترميز، عندماuse_cache=Trueأوconfig.use_cache=True.يُسمح فقط بمرجع Cache كمدخل، راجع دليل ذاكرة kv لدينا. إذا لم يتم تمرير
past_key_values، فسيتم تهيئة DynamicCache افتراضياً.سيُخرج النموذج نفس صيغة الكاش التي تُمرَّر كمدخل.
عند استخدام
past_key_values، يُتوقَّع من المستخدم إدخالinput_idsغير المعالجة فقط (تلك التي لم تُقدَّم حالات مفاتيحها وقيمها السابقة إلى هذا النموذج) بأبعاد(batch_size, unprocessed_length)بدلاً من جميعinput_idsبأبعاد(batch_size, sequence_length). - inputs_embeds (
torch.Tensorمن الشكل(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، اختياري) — المعرّفات المدخلة لتسلسل البروتين في رموز واعية بالبنية. يجب أن يكون شكلها(batch_size, protein_seq_length)ونوعهاtorch.LongTensor. - protein_attention_mask (
torch.Tensor، اختياري) — قناع الانتباه (attention mask) الخاص بتسلسل البروتين. يجب أن يكون على شكل(batch_size, protein_seq_length)ونوعهtorch.Tensor. - structure_feats (
torch.Tensor، اختياري) — المعرّفات المدخلة للميزات القائمة على البنية فقط. يجب أن يكون شكلها(batch_size, structure_seq_length, structure_feat_dim)ونوعهاtorch.Tensor. مدخل وهمي حالياً. - msa_feats (
torch.Tensor، اختياري) — المعرّفات المدخلة للميزات المستندة بالكامل إلى MSA. يجب أن يكون شكلها(batch_size, msa_seq_length, msa_feat_dim)ونوعهاtorch.Tensor. مدخل وهمي حاليًا. - structure_batch_mask (
torch.Tensor, اختياري) — قناع الدفعة (batch mask) لتحديد أي تسلسلات البروتين تعتمد بحتاً على البنية. يجب أن يكون شكله(batch_size)ونوعهtorch.Tensor. يجب أن يُستخدم معstructure_feats. مدخل وهمي حالياً. - msa_batch_mask (
torch.Tensor، اختياري) — قناع الدفعة (batch mask) لتحديد أي تسلسلات البروتين تعتمد كليًا على MSA. يجب أن يكون شكله(batch_size)ونوعهtorch.Tensor. يجب أن يُستخدم معmsa_feats. مدخل وهمي حاليًا.
يعيد
BaseModelOutputWithPast أو tuple(torch.Tensor)
BaseModelOutputWithPast أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتكون من عناصر مختلفة
تعتمد على الإعداد (None) والمدخلات.
تتجاوز طريقة EvollaModel الأمامية (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من النموذج.إذا تم استخدام
past_key_values، فإن الحالة المخفية الأخيرة فقط من التسلسلات ذات الشكل(batch_size, 1, hidden_size)هي التي تُخرج.past_key_values (
Cache، اختياري، يُعاد عند تمريرuse_cache=Trueأو عند تعيينconfig.use_cache=True) — إنه كائن من نوع Cache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي، وفي كتل الانتباه المتقاطع اختياريًا إذا كان
config.is_encoder_decoder=True) يمكن استخدامها (انظر مدخلpast_key_values) لتسريع فك الترميز التسلسلي.hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل(batch_size, sequence_length, hidden_size).حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
attentions (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
EvollaForProteinText2Text
forward
< source >( 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), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - labels (
torch.LongTensorمن الشكل(batch_size, sequence_length)، اختياري) — التسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس ضمن[0, ..., config.vocab_size]أو -100 (انظرinput_idsdocstring). يتم تجاهل الرموز التي فهارسها مضبوطة على-100(مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن[0, ..., config.vocab_size]. - protein_input_ids (
torch.LongTensor، اختياري) — المعرّفات المدخلة لتسلسل البروتين. يجب أن يكون شكلها(batch_size, protein_seq_length)ونوعهاtorch.LongTensor. - protein_attention_mask (
torch.Tensor، اختياري) — قناع الانتباه (attention mask) الخاص بتسلسل البروتين. يجب أن يكون على شكل(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 لآخرlogits_to_keepرموز. إذا كانت القيمة0، يتم حساب logits لجميعinput_ids(حالة خاصة). لا يُحتاج إلى logits إلا للرمز الأخير في عملية التوليد، ويمكن أن يوفر حسابها لذلك الرمز وحده ذاكرة كبيرة، وهو أمر مهم بشكل ملحوظ للتسلسلات الطويلة أو حجم المفردات الكبير. إذا كانtorch.Tensor، يجب أن يكون بعدًا واحدًا (1D) ويتوافق مع الفهارس التي يجب الاحتفاظ بها في بُعد طول التسلسل. يكون هذا مفيدًا عند استخدام تنسيق المصفوفات المعبأة (packed tensor format) (بعد واحد لكل من الدفعة وطول التسلسل).
تتجاوز طريقة EvollaForProteinText2Text الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
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
فئة transformers.EvollaProcessor
< source >( protein_tokenizertokenizer = Noneprotein_max_length = 1024text_max_length = 512**kwargs )
المعاملات
- protein_tokenizer (
EsmTokenizer) — مثال من EsmTokenizer. مُجزِّئ البروتين هو مدخل إلزامي. - tokenizer (
tokenizer_class) — مُجزِّئ النص (tokenizer) هو مدخل إلزامي. - protein_max_length (
int، اختياري، القيمة الافتراضية 1024) — الحد الأقصى لطول التسلسل المراد توليده. - text_max_length (
int، اختياري، القيمة الافتراضية 512) — الحد الأقصى لطول النص المراد توليده.
ينشئ EvollaProcessor الذي يغلّف مُرمّز بروتينات ومُرمّز في مُعالِج واحد.
يوفر EvollaProcessor جميع وظائف {protein_tokenizer_class} وtokenizer_class. راجع ~{protein_tokenizer_class} و~tokenizer_class لمزيد من المعلومات.
__call__
< source >( 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': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن NumPy.
يعيد
قواميس تحتوي على المفاتيح التالية
protein_input_ids(torch.Tensorمن الشكل(batch_size, sequence_length)) — معرّفات الإدخال لسلسلة البروتين.protein_attention_mask(torch.Tensorمن الشكل(batch_size, sequence_length)) — قناع الانتباه (attention mask) الخاص بتسلسل البروتين.text_input_ids(torch.Tensorمن الشكل(batch_size, sequence_length)) — معرّفات الإدخال لسلسلة النص.text_attention_mask(torch.Tensorمن الشكل(batch_size, sequence_length)) — قناع الانتباه (attention mask) الخاص بالتسلسل النصي.