Transformers documentation
Gemma 4 Asistan
Bu model, 2026-05-05 tarihinde Hugging Face Transformers'a katkıda bulunulmuştur.
Gemma 4 Asistan
Genel Bakış
Gemma 4 Assistant, Gemma 4 modelleri için Multi-Token Prediction (MTP) yöntemini ve ilişkili aday üreticisini kullanarak spekülatif çözümlendirmeyi (speculative decoding) mümkün kılan küçük, yalnızca metin tabanlı bir modeldir. Gemma 4 E2B, E4B, 31B ve 26B-A4B (MoE) modellerinin IT varyantları için ön eğitilmiş modeller sağlanmaktadır.
Mimari olarak Gemma 4 Assistant, diğer Gemma 4 modelleriyle aynı Gemma4TextModel omurgasını paylaşır ancak birkaç temel noktada farklılık gösterir:
- Tüm model KV paylaşımı kullanır. Gemma 3n ile birlikte ilk kez tanıtılan bu teknik, asistanın desteklediği hedef modelin doldurduğu KV önbelleğinin yeniden kullanılmasına olanak tanır; bu sayede asistan pre-fille aşamasını tamamen atlayabilir ve ileri geçiş sırasında dikkat (attention) hesaplaması önemli ölçüde azaltılabilir.
position_idsdeğeri sabittir. KV önbelleği paylaşıldığından ve asistanın önbelleği güncelleyecek bir yöntemi olmadığından, asistan tüm tokenları aynı konum kimliğinden tahmin eder.- Girdiler, gömme (embedding) ve gizli durumların (hidden states) birleştirilmesidir. Statik KV önbelleğine ve
position_idsparametresine uyum sağlamak için model, girdilerini hedef modelin son görülen token'ına aitembeddingvehidden_statesdeğerlerinin birleştirilmesi olarak alır ve bunlarınn.Lineardönüşümüyle asistan modelin uzayına yansıtır. Son görülen token'ın tanımı, destekli çözümleme döngüsü boyunca değişir. Ön doldurma (pre-fill) sonrası taslak olarak oluşturulan ilk token için son görülen token, istemdeki (prompt) son token olacaktır. Sonraki taslak oluşturma adımlarında ise son görülen token, asistanın ürettiği son token (bir taslak turu içinde) veya hedef modelin kabul ettiği son token (taslak turları arasında) olacaktır. - Cross-attention, hedef modelin bağlamından en iyi şekilde yararlanmak için kullanılır. Cross-attention, asistan tarafından üretilen sorgu durumlarının, hedef modelden gelen paylaşımlı KV önbellek değerlerine dikkat etmesine olanak tanır; bu da asistanın her taslak turunda daha fazla taslak token'ı doğru bir şekilde tahmin etmesini sağlar.
Tüm orijinal Gemma 4 Assistant kontrol noktalarını Gemma 4 sürümünde bulabilirsiniz.
Kullanım örnekleri
Aşağıdaki örnek, Pipeline veya AutoModel sınıfı kullanılarak bir görüntüye dayalı metin üretmenin nasıl yapılacağını göstermektedir.
<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?"
)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))Gemma4AssistantConfig
sınıf transformers.Gemma4AssistantConfig
< 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 = 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 )
Parametreler
- text_config (
Union[~configuration_utils.PreTrainedConfig, dict[str, Any]], isteğe bağlı) — Metin omurgasının yapılandırma nesnesi veya sözlüğü. - backbone_hidden_size (
int, varsayılan 1536) — Bu asistanın eğitildiği hedef modelin gizli boyutu. - use_ordered_embeddings (
bool, varsayılan değeri False) — True ise, asistan modelinin performansını optimize etmek için sıralanmış bir gömme tablosu kullanılır; bu tablo, ana modelle hizalanmak için yeniden sıralanmalıdır. - num_centroids (
int, varsayılan 2048) — Toplam küme merkezi sayısı. - centroid_intermediate_top_k (
int, varsayılan 32) — Aktif küme merkezlerinin sayısı. - tie_word_embeddings (
bool, isteğe bağlı, varsayılanTrue) — Modelintied_weights_keyseşlemesine göre ağırlık gömme bağlamalarının yapılıp yapılmayacağı.
Bu, bir Gemma4 AssistantModel'in yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Gemma4 Assistant modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, google/gemma-4-e2b-it ile benzer bir yapılandırmaya yol açar.
Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.
Örnek:
>>> 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.configGemma4AssistantForCausalLM
sınıf transformers.Gemma4AssistantForCausalLM
< source >( config: Gemma4AssistantConfig )
Parametreler
- config (Gemma4AssistantConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Gemma 4 ile çoklu jeton tahminine dayalı destekli çözümleme için bir model.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
Desteklenen model için dikkat maskelerini hazırlayın; bu durumda shared_kv_states geçmiş önbellek olarak görev yapar.
Nedensellik (causality) için çift yönlü maskeler kullanıyoruz
q_len == 1kenar durumu için bir fark yoktur; her durumda tam dikkat gibi davranır.- SWA, pencereyi ileriye dönük (gelecek) olarak yorumlar
q_idx=1ve durumundadır. kv ekseninde ters çevirerek geleceğe dönük bakış açısından geçmişe dönük bakış açısına geçeriz. Konumdan bağımsız dolgu (padding) için, temel dikkat maskesini (attention mask) ilk oluşturulmadan önce de ters çeviririz.kv>=1- kv eksenini ters çevirerek gelecek perspektifinden geçmiş perspektifine geçeriz
- Konumdan bağımsız dolgu (padding) durumunu hesaba katmak için, temel dikkat maskesini (attention mask) ilk oluşturulmadan önce de ters çeviriyoruz.
forward
< source >( 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'> )
Parametreler
- input_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - position_ids (
torch.LongTensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı[0, config.n_positions - 1]. - attention_mask (
dict[str, torch.Tensor]şeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmamak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- shared_kv_states (
dict[str, torch.Tensor, şekli(batch_size, 1, q_len, kv_len), isteğe bağlı) — Bu modeldeki herlayer_type'in son katmanı için hesaplanan KV değerlerini içeren bir sözlük. - use_cache (
bool, isteğe bağlı) —Trueolarak ayarlanırsa,past_key_valuesanahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz.past_key_values).
Gemma4AssistantForCausalLM 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ü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
Örnek:
>>> 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?"