Transformers documentation
ESMC
تمت مساهمة هذا النموذج في Hugging Face Transformers في 2026-08-19.
ESMC
نظرة عامة
ESMC (ESM Cambrian) هي عائلة من نماذج لغة البروتين التي أصدرها BioHub. وهي مُشفِّر Transformer ثنائي الاتجاه تم تدريبه بهدف نمذجة اللغة المقنّعة على تسلسلات الأحماض الأمينية. وكما هو الحال مع ESM-2، تنتج ESMC تمثيلات لكل بقية (residue) تكون مفيدة لمهام نمذجة البروتين اللاحقة.
مناسب نموذج 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، اختياري، القيمة الافتراضية 40) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer.
- num_key_value_heads (int، اختياري) — هذا هو عدد رؤوس 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 عن طريق 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) — معرّف الرمز المستخدم للتعبئة في المفردات.
- bos_token_id (int، اختياري، القيمة الافتراضية 0) — معرّف الرمز المستخدم لبدء البث في المفردات.
- eos_token_id (Union[int, list[int]]، اختياري، القيمة الافتراضية 2) — معرّف الرمز المستخدم لنهاية التدفق في المفردات.
- tie_word_embeddings (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب ربط ترميزات الأوزان وفقاً لخريطة tied_weights_keys الخاصة بالنموذج.
- rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], اختياري) — قاموس يحتوي على معاملات التهيئة الخاصة بتضمينات RoPE. يجب أن يحتوي القاموس على قيمة لـ rope_theta، ومعاملات اختيارية تُستخدم للتوسيع في حال رغبتَ في استخدام RoPE مع max_position_embeddings أطول.
- attention_bias (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم استخدام انحياز في طبقات الإسقاط للاستعلام والمفتاح والقيمة والمخرجات أثناء الانتباه الذاتي.
- attention_dropout (Union[int, float]، اختياري، القيمة الافتراضية 0.0) — نسبة الإسقاط (dropout) لاحتمالات الانتباه.
- mlp_bias (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم استخدام انحياز في طبقات up_proj وdown_proj وgate_proj ضمن طبقات MLP.
- head_dim (int، اختياري) — بعد رأس الانتباه. إذا كان None، فسيتم افتراضه على hidden_size // num_attention_heads
- mask_token_id (int، اختياري، القيمة الافتراضية 32) —
مؤشر رمز القناع في قاموس الكلمات (
"<mask>")، ويُستخدم لنمذجة اللغة المقنّعة. - classifier_dropout (float، اختياري، القيمة الافتراضية 0.1) — نسبة Dropout لرأس التصنيف.
هذه فئة الإعدادات المخزنة لإعدادات نموذج EsmcModel. تُستخدم لاستحداث نموذج Esmc وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ biohub/ESMC-6B
ترث كائنات الإعداد من [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، اختياري، القيمة الافتراضية ”|”) — الرمز الذي يُدرج بين السلاسل في مدخلات البروتين متعددة السلاسل. يُسجَّل كرمز خاص محدد للنموذج، لذا يُعرَض على أنه chain_break_token / chain_break_token_id.
- extra_special_tokens (list[str]، اختياري) — رموز خاصة إضافية لتسجيلها مع مُجزّئ النص (تُعاد من إعداد محفوظ).
أنشئ مُرمِّز ESMC.
هذا المُجزِّئ هو مُجزِّئ على مستوى الأحرف مدعوم بمكتبة tokenizers من HuggingFace.
يُغلّف كل تسلسل برموز <cls> و<eos> ويدعم رمز | لكسر السلسلة للمدخلات متعددة السلاسل.
EsmcModel
فئة transformers.EsmcModel
< source >( config: EsmcConfig )
المعاملات
- config (EsmcConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Esmc الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق 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), اختياري) —
قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي [0, 1]:
- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- position_ids (torch.Tensor بشكل (batch_size, sequence_length), اختياري) —
موضع كل رمز في التسلسل، ويُستخدم بواسطة RoPE. القيمة الافتراضية هي
arange(sequence_length).مواضع ESMC مطلقة على كامل المدخل، وتستمر عبر حدود السلاسل في مدخل متعدد السلاسل. تُحمَل بنية السلاسل بشكل منفصل بواسطة
sequence_id، الذي يُخفي الانتباه: على عكس صيغة تسلسل الحزم المستخدمة في أماكن أخرى من المكتبة، ليست هذه معرّفات مواضع لكل سلسلة تُعاد من 0، كما أن بنية السلاسل لا تُستنتج منها عمداً. - sequence_id (torch.Tensor من الشكل (batch_size, sequence_length)، اختياري) —
مصفوفة معرفات السلاسل الصحيحة (Integer chain-ID tensor) لتطبيق أقنعة الانتباه الواعية بالسلاسل. يمكن للرموز التي تحمل نفس القيمة الصحيحة غير السالبة أن تنتبه إلى بعضها البعض؛ بينما لا يمكن للرموز ذات القيم المختلفة أن تنتبه إلى بعضها (إخفاء بين السلاسل). يجب تعيين مواضع الحشو (Padding) إلى
-1، ويجب أن تكون المدخلات محشوة من اليمين (حيث يستخدم RoPE مواضع مطلقة تبدأ من 0). عند تقديم هذه المصوفة، يتم تجاهلattention_mask. تمريرsequence_idيبني قناع انتباه مخصص، مما يتطلبtorch>=2.6. المدخلات متعددة السلاسل تتطلب بالإضافة إلى ذلكattn_implementationغير فلاش ('sdpa'/'eager'/'flex_attention')؛ فانتباه الفلاش يدعم فقط حالة السلسلة الواحدة.
يعيد
[~modeling_outputs.BaseModelOutput] أو tuple(torch.Tensor)
[~modeling_outputs.BaseModelOutput] أو مجموعة (tuple) من torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة تعتمد على التهيئة ([EsmcConfig]) والمدخلات.
تتجاوز طريقة [EsmcModel] الخاصة بالتقديم (forward) الطريقة الخاصة call.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن [Module] بدلاً من هذه الدالة بعد ذلك، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)) — تسلسل حالات الخفاء عند مخرجات الطبقة الأخيرة من النموذج.
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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
أمثلة:
>>> 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() لتحميل أوزان النموذج.
نموذج Esmc مع رأس language modeling في الأعلى.”
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق 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), اختياري) —
قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي [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)، اختياري) — مصفوفة معرفات السلاسل الصحيحة (Integer) التي تُمرَّر إلى المُشفِّر (encoder) لتطبيق قناع الانتباه الواعي بالسلاسل (chain-aware attention masking). راجع EsmcModel.forward() لمعرفة طريقة الترميز.
- labels (torch.LongTensor من الشكل (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.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن [Module] بدلاً من هذه الدالة بعد ذلك، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (torch.Tensor من الشكل (1,)، اختياري، يُعاد عند توفير labels) — خسارة نمذجة اللغة المقنّعة (MLM).
logits (torch.Tensor من الشكل (batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).
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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
أمثلة:
>>> 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. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق 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), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام 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.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - labels (
torch.LongTensorمن الشكل(batch_size,)، اختياري) — التسميات لحساب خسارة تصنيف/الانحدار التسلسلي. يجب أن تكون الفهارس ضمن[0, ..., config.num_labels - 1]. إذا كانconfig.num_labels == 1يتم حساب خسارة الانحدار (خسارة متوسط المربع)، وإذا كانconfig.num_labels > 1يتم حساب خسارة التصنيف (الإنتروبيا المتقاطعة).
يعيد
SequenceClassifierOutput أو tuple(torch.Tensor)
SequenceClassifierOutput أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على التهيئة (EsmcConfig) والمدخلات.
تتجاوز طريقة EsmcForSequenceClassification الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorمن الشكل(1,)، اختياري، يُعاد عند توفيرlabels) — خسارة التصنيف (أو الانحدار إذا كان config.num_labels==1).logits (
torch.Tensorمن الشكل(batch_size, config.num_labels)) — درجات التصنيف (أو الانحدار إذا كان config.num_labels==1) (قبل SoftMax).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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
مثال على تصنيف بوسم واحد:
>>> 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), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام 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 لدينا. إذا لم يتم تمرير
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إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - 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بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.