Transformers documentation

مساعد Gemma 4

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

and get access to the augmented documentation experience

to get started

تمت مساهمة هذا النموذج في Hugging Face Transformers في 2026-05-05.

مساعد Gemma 4

نظرة عامة

Gemma 4 Assistant هو نموذج صغير مخصص للنص فقط، يتيح الترميز التخميني لنماذج Gemma 4 باستخدام طريقة التنبؤ متعدد الرموز (MTP) ومولّد المرشحات المرتبط بها. تتوفر نماذج مُدرَّبة مسبقًا لتنويعات IT من نماذج Gemma 4 E2B وE4B و31B و26B-A4B (MoE).

من حيث البنية، يتشارك مساعد Gemma 4 نفس العمود الفقري Gemma4TextModel مع نماذج Gemma 4 الأخرى، لكنه يختلف في بعض الجوانب الرئيسية:

  • يستخدم النموذج بأكمله مشاركة KV. تتيح هذه التقنية، التي عُرضت لأول مرة مع Gemma 3n، للنموذج إعادة استخدام ذاكرة KV المخزنة التي يملؤها النموذج المستهدف الذي يدعمه المساعد، مما يسمح للمساعد بتجاوز مرحلة التعبئة المسبقة بالكامل، ويقلل بشكل كبير من حساب الانتباه أثناء المرور الأمامي.
  • قيمة position_ids ثابتة. نظرًا لأن ذاكرة KV مشتركة ولا يملك المساعد طريقة لتحديثها، يتنبأ المساعد بجميع الرموز من معرّف الموضع نفسه.
  • المدخلات هي دمج التضمينات (embeddings) وحالات الإخفاء (hidden states). للتكيّف مع ذاكرة KV الثابتة وposition_ids، يستقبل النموذج مدخلاته على شكل دمج بين embedding وhidden_states لآخر رمز شوهد من النموذج المستهدف، ثم يرميها إلى فضاء نموذج المساعد عبر تحويل nn.Linear. يتغير تعريف آخر رمز شوهد على مدار حلقة فك التشفير المُساعَد. بالنسبة للرمز الأول المُسود بعد مرحلة التعبئة المسبقة (pre-fill)، يكون آخر رمز شوهد هو آخر رمز من الاستدعاء (prompt). أما في خطوات المسودة اللاحقة، فيكون آخر رمز شوهد هو آخر رمز ولّده المساعد (ضمن جولة مسودة) أو آخر رمز قبله النموذج المستهدف (بين جولات المسودة).
  • يُستخدم الانتباه المتقاطع (Cross-attention) لاستغلال سياق النموذج المستهدف بأفضل شكل. يتيح الانتباه المتقاطع لحالات الاستعلام (query states) التي يولدها المساعد أن تنتبه إلى قيم ذاكرة KV المشتركة من النموذج المستهدف، مما يسمح للمساعد بالتنبؤ بدقة أكبر بعدد الرموز المُسودة (drafted tokens) في كل جولة تدقيق.

يمكنك العثور على جميع نقاط التفتيش الأصلية لنموذج Gemma 4 Assistant ضمن إصدار Gemma 4.

أمثلة على الاستخدام

يُظهر المثال أدناه كيفية توليد النص بناءً على صورة باستخدام Pipeline أو فئة AutoModel.

<hfoptions id="usage"> <hfoption id="Pipeline">
import torch
from transformers import pipeline

pipeline = pipeline(
    task="image-text-to-text",
    model="google/gemma-4-E2B-it",
    assistant_model="google/gemma-4-E2B-it-assistant",
)
pipeline(
    images="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg",
    text="<|image|>\n\nWhat is shown in this image?"
)
</hfoption> <hfoption id="AutoModel">
import torch
from transformers import AutoProcessor, AutoModelForImageTextToText

model = AutoModelForImageTextToText.from_pretrained(
    "google/gemma-4-E2B-it",
    dtype=torch.bfloat16,
    device_map="auto",
)
assistant_model = AutoModelForCausalLM.from_pretrained(
    "google/gemma-4-E2B-it-assistant",
    dtype=torch.bfloat16,
    device_map="auto",
)

processor = AutoProcessor.from_pretrained(
    "google/gemma-4-E2B-it",
    padding_side="left"
)
messages = [
    {
        "role": "user", "content": [
            {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
            {"type": "text", "text": "What is shown in this image?"},
        ]
    },
]
inputs = processor.apply_chat_template(
    messages,
    tokenize=True,
    return_dict=True,
    return_tensors="pt",
    add_generation_prompt=True,
).to(model.device)
input_len = inputs["input_ids"].shape[-1]

output = model.generate(**inputs, max_new_tokens=50, assistant_model=assistant_model)
print(processor.decode(output[0][input_len:], skip_special_tokens=True))
</hfoption>

Gemma4AssistantConfig

فئة transformers.Gemma4AssistantConfig

< >

( 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 = Nonetext_config: transformers.configuration_utils.PreTrainedConfig | dict[str, typing.Any] | None = Nonebackbone_hidden_size: int = 1536use_ordered_embeddings: bool = Falsenum_centroids: int = 2048centroid_intermediate_top_k: int = 32tie_word_embeddings: bool = True )

المعاملات

  • text_config (Union[~configuration_utils.PreTrainedConfig, dict[str, Any]], اختياري) — كائن الإعداد أو قاموس العمود الفقري النصي.
  • backbone_hidden_size (int، القيمة الافتراضية 1536) — حجم المخفي للنموذج المستهدف الذي تم تدريب هذا المساعد عليه.
  • use_ordered_embeddings (bool، القيمة الافتراضية False) — إذا كانت True، فتُستخدم جدول تضمين مرتّب لأداء نموذج المساعد الأمثل، والذي يحتاج إلى إعادة ترتيبه ليتوافق مع النموذج الرئيسي.
  • num_centroids (int، القيمة الافتراضية 2048) — إجمالي عدد مراكز العناقيد.
  • centroid_intermediate_top_k (int، القيمة الافتراضية 32) — عدد مراكز العناقيد النشطة.
  • tie_word_embeddings (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب ربط ترميزات الأوزان (weight embeddings) وفقاً لخريطة tied_weights_keys الخاصة بالنموذج.

هذه فئة الإعدادات المخزنة لإعدادات نموذج Gemma4 AssistantModel. تُستخدم لتوليد نموذج Gemma4 Assistant وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن إنشاء إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ google/gemma-4-e2b-it

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

مثال:

>>> from transformers import (
>>>     Gemma4AssistantConfig,
>>>     Gemma4AssistantForCausalLM,
>>>     Gemma4TextConfig,
>>> )

>>> # Initializing a Gemma 4 Text config similar to google/gemma-4-e2b-it-assistant.
>>> text_config = Gemma4TextConfig(...)

>>> # Initializing a Gemma 4 Assistant config similar to google/gemma-4-e2b-it-assistant.
>>> configuration = Gemma4AssistantConfig(text_config)

>>> # Initializing a model from the google/gemma-4-e2b-it-assistant configuration.
>>> model = Gemma4AssistantForCausalLM(configuration)

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

Gemma4AssistantForCausalLM

فئة transformers.Gemma4AssistantForCausalLM

< >

( config: Gemma4AssistantConfig )

المعاملات

  • config (Gemma4AssistantConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

نموذج لتفكيك مُساعَد مبني على التنبؤ متعدد الرموز مع Gemma 4.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

create_attention_masks

< >

( inputs_embedsattention_maskshared_kv_states )

جهّز أقنعة الانتباه للنموذج المُساعَد؛ حيث يعمل shared_kv_states كذاكرة مؤقتة سابقة في هذه الحالة.

نستخدم أقنعة ثنائية الاتجاه لمراعاة السببية

  • لا يوجد فرق في الحالة الحدّية q_len == 1 إذ تعمل كاهتمام كامل بغضّ النظر عن أي شيء
  • يفسّر SWA النافذة على أنها مستقبلية (قادمة) عندما q_idx=1 و kv>=1
    • ننتقل من منظور مستقبلي إلى منظور ماضٍ عن طريق قلب محور kv
    • لاستيعاب الحشو الذي لا يتأثر بالموضع، نقوم أيضًا بقلب قناع الانتباه الأساسي قبل الإنشاء الأولي

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: dict[str, torch.Tensor] | None = Noneshared_kv_states: dict[str, tuple[torch.Tensor, torch.Tensor]] | None = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> )

المعاملات

  • input_ids (torch.Tensor بشكل (batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على المؤشرات باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل. ما هي معرّفات الإدخال؟

    يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.

    ما هي معرّفات الإدخال؟

  • inputs_embeds (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمرير input_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس input_ids إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.
  • position_ids (torch.LongTensor بشكل (batch_size, sequence_length), اختياري) — مؤشرات مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها ضمن النطاق [0, config.n_positions - 1].

    ما هي معرّفات المواقع؟

  • attention_mask (dict[str, torch.Tensor] بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • shared_kv_states (dict[str, torch.Tensor من الشكل (batch_size, 1, q_len, kv_len)، اختياري) — قاموس يحتوي على قيم KV المحسوبة للطبقة الأخيرة من كل layer_type في هذا النموذج.
  • use_cache (bool، اختياري) — إذا تم تعيينه إلى True، تُعاد حالات المفاتيح والقيم past_key_values ويمكن استخدامها لتسريع فك الترميز (انظر past_key_values).

تتجاوز طريقة Gemma4AssistantForCausalLM الخاصة بـ forward الطريقة الخاصة __call__.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن Module بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

مثال:

>>> from transformers import AutoTokenizer, Gemma4AssistantForCausalLM, Gemma4ForCausalLM

>>> model = Gemma4ForCausalLM.from_pretrained("google/gemma-4-e2b-it")
>>> assistant_model = Gemma4AssistantForCausalLM.from_pretrained("google/gemma-4-e2b-it-assistant")
>>> tokenizer = AutoTokenizer.from_pretrained("google/gemma-4-e2b-it")

>>> prompt = "What is your favorite condiment?"
>>> inputs = tokenizer(prompt, return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, assistant_model=assistant_model, max_length=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True)[0]
"What is your favorite condiment?"
Update on GitHub