Transformers documentation
Gemma 4 Assistant
Model ini disumbangkan ke Hugging Face Transformers pada 2026-05-05.
Gemma 4 Assistant
Ikhtisar
Gemma 4 Assistant adalah model kecil yang hanya mendukung teks, yang memungkinkan penguraian spekulatif untuk model Gemma 4 menggunakan metode Multi-Token Prediction (MTP) dan generator kandidat terkait. Model pra-terlatih disediakan untuk varian IT dari model Gemma 4 E2B, E4B, 31B, dan 26B-A4B (MoE).
Secara arsitektur, Gemma 4 Assistant berbagi backbone Gemma4TextModel yang sama dengan model Gemma 4 lainnya, tetapi berbeda dalam beberapa hal utama:
- Model secara keseluruhan menggunakan berbagi KV. Teknik ini, yang awalnya diperkenalkan bersama Gemma 3n, memungkinkan model untuk menggunakan kembali KV cache yang diisi oleh model target yang didukung asisten, sehingga asisten dapat sepenuhnya melewati fase pre-fille dan secara signifikan mengurangi komputasi perhatian selama forward pass.
- Nilai
position_idsbersifat konstan. Karena KV cache dibagikan dan asisten tidak memiliki cara untuk memperbarui cache, asisten memprediksi semua token dari ID posisi yang sama. - Input adalah konkatenasi dari embedding dan hidden states. Untuk beradaptasi dengan KV cache statis dan
position_ids, model menerima inputnya sebagai konkatenasi dariembeddingdanhidden_statesuntuk token terakhir yang dilihat dari model target, lalu memproyeksikannya ke ruang model asisten dengan transformasinn.Linear. Definisi token terakhir yang dilihat berubah sepanjang loop assisted decoding. Untuk token pertama yang dibuat setelah pre-fill, token terakhir yang dilihat akan menjadi token terakhir dari prompt. Untuk langkah pembuatan (drafting) berikutnya, token terakhir yang dilihat akan menjadi token terakhir yang dihasilkan oleh asisten (dalam satu putaran drafting) atau token terakhir yang diterima oleh model target (antara putaran drafting). - Cross-attention digunakan untuk memaksimalkan konteks model target. Cross-attention memungkinkan query states yang dihasilkan oleh asisten untuk memperhatikan nilai KV cache bersama dari model target, sehingga asisten dapat memprediksi lebih banyak token yang di-draft secara akurat per putaran drafting.
Anda dapat menemukan semua checkpoint asli Gemma 4 Assistant di bawah rilis Gemma 4.
Contoh penggunaan
Contoh di bawah ini menunjukkan cara menghasilkan teks berdasarkan gambar dengan Pipeline atau kelas 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?"
)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
kelas 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 )
Parameter
- text_config (
Union[~configuration_utils.PreTrainedConfig, dict[str, Any]], opsional) — Objek config atau dictionary dari text backbone. - backbone_hidden_size (
int, defaultnya 1536) — Ukuran tersembunyi dari model target yang digunakan untuk melatih asisten ini. - use_ordered_embeddings (
bool, defaultnya False) — Jika True, menggunakan tabel embedding yang diurutkan untuk kinerja model asisten optimal yang perlu diurutkan ulang agar selaras dengan model utama. - num_centroids (
int, defaultnya 2048) — Jumlah total centroid. - centroid_intermediate_top_k (
int, defaultnya 32) — Jumlah centroid yang aktif. - tie_word_embeddings (
bool, opsional, defaultTrue) — Apakah akan mengikat bobot embedding sesuai dengan pemetaantied_weights_keysmodel.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari Gemma4 AssistantModel. Kelas ini digunakan untuk menginstansiasi model Gemma4 Assistant sesuai dengan argumen yang ditentukan, yang mendefinisikan arsitektur model. Menginstansiasi konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari google/gemma-4-e2b-it
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> 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
kelas transformers.Gemma4AssistantForCausalLM
< source >( config: Gemma4AssistantConfig )
Parameter
- config (Gemma4AssistantConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model untuk decoding terbantu berbasis prediksi multi-token dengan Gemma 4.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
Siapkan attention mask untuk model yang dibantu; shared_kv_states berfungsi sebagai cache masa lalu dalam kasus ini.
Kami menggunakan masker bidireksional untuk memperhitungkan kausalitas
- Tidak ada perbedaan untuk kasus tepi
q_len == 1karena ia bertindak sebagai full attention apa pun kondisinya - SWA menafsirkan jendela sebagai ke depan (masa depan) ketika
q_idx=1dankv>=1- Kami beralih dari perspektif masa depan ke perspektif masa lalu dengan membalik pada sumbu kv
- Untuk mengakomodasi padding yang tidak bergantung pada posisi, kami juga membalik mask perhatian dasar sebelum pembuatan awal
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'> )
Parameter
- input_ids (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - attention_mask (
dict[str, torch.Tensor]dengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dalam[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- shared_kv_states (
dict[str, torch.Tensordengan bentuk(batch_size, 1, q_len, kv_len), opsional) — Kamus yang berisi nilai KV yang dihitung untuk lapisan terakhir dari setiaplayer_typedalam model ini. - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values).
Metode forward dari Gemma4AssistantForCausalLM menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
Contoh:
>>> 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?"