# Gemma3n

## Tổng quan

[Gemma3n](https://developers.googleblog.com/en/introducing-gemma-3n/) là một mô hình đa phương thức với các biến thể được huấn luyện trước và tinh chỉnh theo chỉ thị, có sẵn ở kích thước E4B và E2B. Mặc dù phần lớn kiến trúc mô hình ngôn ngữ được chia sẻ với các phiên bản Gemma trước đó, mô hình này có nhiều bổ sung mới, bao gồm [Alternating Updates][altup] (AltUp), [Learned Augmented Residual Layer][laurel] (LAuReL), [MatFormer][matformer], Per-Layer Embeddings (PLE), [Activation Sparsity with Statistical Top-k][spark-transformer], và chia sẻ KV cache. Mô hình ngôn ngữ sử dụng mẫu chú ý tương tự [Gemma 3](./gemma3) với 4 lớp self-attention trượt cửa sổ cục bộ xen kẽ cho mỗi lớp self-attention toàn cục, với độ dài ngữ cảnh tối đa là 32k token. Gemma 3n giới thiệu MobileNet v5 làm bộ mã hóa thị giác, sử dụng độ phân giải mặc định là 768x768 pixel, và thêm một bộ mã hóa âm thanh được huấn luyện mới dựa trên kiến trúc [Universal Speech Model][usm] (USM).

Biến thể được tinh chỉnh theo hướng dẫn đã được huấn luyện bổ sung bằng cách sử dụng chưng cất tri thức và học tăng cường.

Bạn có thể tìm thấy tất cả các checkpoint gốc của Gemma 3n trong bản phát hành [Gemma 3n][gemma3n-collection].

> [!TIP]
> Nhấp vào các mô hình Gemma 3n ở thanh bên phải để xem thêm các ví dụ về cách áp dụng Gemma cho các tác vụ thị giác, âm thanh và ngôn ngữ khác nhau.
>
> Đặt `use_kernels=True` trong [from_pretrained()](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel.from_pretrained) để thay thế các lớp được hỗ trợ bằng các kernel tối ưu từ Hub. Xem [Tải kernel](../kernel_doc/loading_kernels) để biết thêm.

Ví dụ dưới đây minh họa cách tạo văn bản dựa trên hình ảnh bằng [Pipeline](/docs/transformers/main/vi/main_classes/pipelines#transformers.Pipeline) hoặc lớp [AutoModel](/docs/transformers/main/vi/model_doc/auto#transformers.AutoModel).

```python
from transformers import pipeline

pipeline = pipeline(
    task="image-text-to-text",
    model="google/gemma-3n-e4b",
    device=0,
)
pipeline(
    "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg",
    text="<start_of_image> What is shown in this image?"
)
```

```python
from transformers import AutoProcessor, Gemma3nForConditionalGeneration

model = Gemma3nForConditionalGeneration.from_pretrained(
    "google/gemma-3n-e4b-it",
    device_map="auto",
    attn_implementation="sdpa"
)
processor = AutoProcessor.from_pretrained(
    "google/gemma-3n-e4b-it",
    padding_side="left"
)

messages = [
    {
        "role": "system",
        "content": [
            {"type": "text", "text": "You are a helpful assistant."}
        ]
    },
    {
        "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)

output = model.generate(**inputs, max_new_tokens=50, cache_implementation="static")
print(processor.decode(output[0], skip_special_tokens=True))
```

## Ghi chú

- Sử dụng [Gemma3nForConditionalGeneration](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nForConditionalGeneration) cho các đầu vào gồm hình ảnh-âm thanh-văn bản, hình ảnh-văn bản, hình ảnh-âm thanh, âm thanh-văn bản, chỉ hình ảnh và chỉ âm thanh.
- Gemma 3n hỗ trợ nhiều hình ảnh cho mỗi đầu vào, nhưng hãy đảm bảo các hình ảnh được nhóm (batch) đúng cách trước khi truyền chúng cho bộ xử lý (processor). Mỗi nhóm (batch) phải là một danh sách chứa một hoặc nhiều hình ảnh.

    ```py
    url_cow = "https://media.istockphoto.com/id/1192867753/photo/cow-in-berchida-beach-siniscola.jpg?s=612x612&w=0&k=20&c=v0hjjniwsMNfJSuKWZuIn8pssmD5h5bSN1peBd1CmH4="
    url_cat = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"

    messages =[
        {
            "role": "system",
            "content": [
                {"type": "text", "text": "You are a helpful assistant."}
            ]
        },
        {
            "role": "user",
            "content": [
                {"type": "image", "url": url_cow},
                {"type": "image", "url": url_cat},
                {"type": "text", "text": "Which image is cuter?"},
            ]
        },
    ]
    ```

- Văn bản được truyền vào bộ xử lý phải có token `<image_soft_token>` tại mọi vị trí cần chèn hình ảnh.
- Gemma 3n chỉ chấp nhận tối đa một đoạn âm thanh đích cho mỗi đầu vào, mặc dù có thể cung cấp nhiều đoạn âm thanh trong các prompt few-shot, chẳng hạn.
- Văn bản được truyền vào bộ xử lý phải có token `<audio_soft_token>` tại mọi vị trí cần chèn đoạn âm thanh.
- Bộ xử lý có phương thức [apply_chat_template()](/docs/transformers/main/vi/main_classes/processors#transformers.ProcessorMixin.apply_chat_template) riêng để chuyển đổi các tin nhắn chat thành đầu vào cho mô hình.

## Gemma3nAudioFeatureExtractor[[transformers.Gemma3nAudioFeatureExtractor]]

#### transformers.Gemma3nAudioFeatureExtractor[[transformers.Gemma3nAudioFeatureExtractor]]

```python
transformers.Gemma3nAudioFeatureExtractor(feature_size: int = 128, sampling_rate: int = 16000, padding_value: float = 0.0, return_attention_mask: bool = True, frame_length_ms: float = 32.0, hop_length_ms: float = 10.0, min_frequency: float = 125.0, max_frequency: float = 7600.0, preemphasis: float = 0.97, preemphasis_htk_flavor: bool = True, fft_overdrive: bool = True, dither: float = 0.0, input_scale_factor: float = 1.0, mel_floor: float = 1e-05, per_bin_mean: collections.abc.Sequence[float] | None = None, per_bin_stddev: collections.abc.Sequence[float] | None = None, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/feature_extraction_gemma3n.py#L108)

**Tham số:**

feature_size (`int`, *tuỳ chọn*, mặc định là 128) : Kích thước chiều của các đặc trưng đã trích xuất.

sampling_rate (`int`, *optional*, mặc định là 16000) : Tốc độ lấy mẫu (sampling rate) mà các tệp âm thanh nên được số hóa, được biểu diễn bằng hertz (Hz).

padding_value (`float`, *optional*, mặc định là 0.0) : Giá trị đệm được sử dụng để đệm âm thanh. Nên tương ứng với các khoảng im lặng.

return_attention_mask (`bool`, *tùy chọn*, mặc định là `True`) : Có trả về attention mask cho các phổ MEL được tạo hay không.

frame_length_ms (`float`, *tuỳ chọn*, mặc định là 32.0) : Độ dài của một khung tính bằng mili giây.

hop_length_ms (`float`, *optional*, mặc định là 10.0) : Độ dài của các cửa sổ chồng lấp cho STFT được sử dụng để lấy các hệ số Mel Frequency.

min_frequency (`float`, *optional*, mặc định là 125.0) : Tần số tối thiểu (đơn vị Hz) cho bộ lọc Mel.

max_frequency (`float`, *tuỳ chọn*, mặc định là 7600.0) : Tần số tối đa (đơn vị Hz) cho bộ lọc Mel.

preemphasis (`float`, *tuỳ chọn*, mặc định là 0.97) : Hệ số tiền nhấn.

preemphasis_htk_flavor (`bool`, *tùy chọn*, mặc định là `True`) : Có sử dụng tiền nhấn (preemphasis) theo phong cách HTK hay không.

fft_overdrive (`bool`, *tùy chọn*, mặc định là `True`) : Có sử dụng FFT overdrive hay không.

dither (`float`, *optional*, mặc định là 0.0) : Thêm dithering. Nói cách khác, thêm một nhiễu Gaussian nhỏ vào mỗi khung. Ví dụ, sử dụng 0.0001 để thêm dithering với phân phối chuẩn có tâm tại 0.0 và độ lệch chuẩn 0.0001 (giả sử khoảng [-1,+1] của raw_speech). Giá trị 0.0 có nghĩa là không có dithering. Dithering có tác dụng tương tự như `spectrogram(mel_floor=...)`. Nó làm giảm các giá trị log_mel_fbank cao cho các tín hiệu có các phần bằng không tuyệt đối, khi có ngưỡng cắt VAD trong tín hiệu.

input_scale_factor (`float`, *tuỳ chọn*, mặc định là 1.0) : Hệ số tỷ lệ được áp dụng cho dạng sóng đầu vào.

mel_floor (`float`, *optional*, mặc định là 1e-05) : Giá trị tối thiểu cho phổ Mel để tránh log(0).

per_bin_mean (`Optional[Sequence[float]]`, *tùy chọn*) : Giá trị trung bình để chuẩn hóa theo từng bin.

per_bin_stddev (`Optional[Sequence[float]]`, *tùy chọn*) : Các giá trị độ lệch chuẩn cho việc chuẩn hóa theo từng bin.

Bộ trích xuất đặc trưng âm thanh Universal Speech Models https://huggingface.co/papers/2303.01037.

## Gemma3nProcessor[[transformers.Gemma3nProcessor]]

#### transformers.Gemma3nProcessor[[transformers.Gemma3nProcessor]]

```python
transformers.Gemma3nProcessor(feature_extractor, image_processor, tokenizer, chat_template = None, audio_seq_length: int = 188, image_seq_length: int = 256, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/processing_gemma3n.py#L32)

**Tham số:**

feature_extractor (`Gemma3nAudioFeatureExtractor`) : Bộ trích xuất đặc trưng là một đầu vào bắt buộc.

image_processor (`SiglipImageProcessor`) : Bộ xử lý ảnh là một đầu vào bắt buộc.

tokenizer (`GemmaTokenizer`) : Tokenizer là một đầu vào bắt buộc.

chat_template (`str`) : Một mẫu Jinja để chuyển đổi các danh sách tin nhắn trong một cuộc trò chuyện thành chuỗi có thể token hóa.

audio_seq_length (`int`, *tuỳ chọn*, mặc định là 188) : Số lượng token mềm âm thanh sẽ được thêm vào prompt văn bản

image_seq_length (`int`, *tuỳ chọn*, mặc định là 256) : Số lượng token mềm của hình ảnh cần được thêm vào

Tạo một Gemma3nProcessor đóng gói một bộ trích xuất đặc trưng, một bộ xử lý ảnh và một bộ phân từ thành một bộ xử lý duy nhất.

[Gemma3nProcessor](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nProcessor) cung cấp đầy đủ các chức năng của [Gemma3nAudioFeatureExtractor](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nAudioFeatureExtractor), [SiglipImageProcessor](/docs/transformers/main/vi/model_doc/siglip#transformers.SiglipImageProcessor) và [GemmaTokenizer](/docs/transformers/main/vi/model_doc/gemma#transformers.GemmaTokenizer). Xem [~Gemma3nAudioFeatureExtractor](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nAudioFeatureExtractor), [~SiglipImageProcessor](/docs/transformers/main/vi/model_doc/siglip#transformers.SiglipImageProcessor) và [~GemmaTokenizer](/docs/transformers/main/vi/model_doc/gemma#transformers.GemmaTokenizer) để biết thêm thông tin.

#### __call__[[transformers.Gemma3nProcessor.__call__]]

```python
__call__(images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None, text: str | list[str] | list[list[str]] = None, audio: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]] | None = None, **kwargs: *<class 'transformers.models.gemma3n.processing_gemma3n.Gemma3nProcessorKwargs'>)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/processing_gemma3n.py#L73)

**Tham số:**

images (`Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]`, *tùy chọn*) : Ảnh cần tiền xử lý. Kỳ vọng một ảnh đơn hoặc một lô ảnh với giá trị pixel dao động từ 0 đến 255. Nếu truyền vào các ảnh có giá trị pixel nằm trong khoảng từ 0 đến 1, hãy đặt `do_rescale=False`.

text (`Union[str, list[str], list[list[str]]]`, *tùy chọn*) : Chuỗi hoặc lô các chuỗi cần được mã hóa. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tách token trước). Nếu bạn truyền vào đầu vào đã tách token trước, hãy đặt `is_split_into_words=True` để tránh nhầm lẫn với các đầu vào dạng lô.

audio (`Union[numpy.ndarray, list[float], list[numpy.ndarray], list[list[float]]]`, *tuỳ chọn*) : Âm thanh hoặc lô âm thanh cần được chuẩn bị. Mỗi âm thanh có thể là mảng NumPy hoặc tensor PyTorch. Trong trường hợp là mảng NumPy/tensor PyTorch, mỗi âm thanh nên có hình dạng (C, T), trong đó C là số kênh và T là độ dài mẫu của âm thanh.

return_tensors (`str` hoặc [TensorType](/docs/transformers/main/vi/internal/file_utils#transformers.TensorType), *optional*) : Nếu được đặt, sẽ trả về các tensor của một framework cụ thể. Các giá trị chấp nhận được là:  - `'pt'`: Trả về các đối tượng `torch.Tensor` của PyTorch. - `'np'`: Trả về các đối tượng `np.ndarray` của NumPy.

- ****kwargs** ([ProcessingKwargs](/docs/transformers/main/vi/main_classes/processors#transformers.ProcessingKwargs), *optional*) : Các tùy chọn xử lý bổ sung cho từng phương thức (text, images, videos, audio). Các tham số cụ thể của model được liệt kê ở trên; xem lớp TypedDict để biết danh sách đầy đủ các đối số được hỗ trợ.

**Trả về:** `~feature_extraction_utils.BatchFeature`

- **data** (`dict`, *tuỳ chọn*) -- Từ điển chứa các danh sách/mảng/tensor được trả về bởi các phương thức __call__/pad ('input_values', 'attention_mask', v.v.).
- **tensor_type** (`Union[None, str, TensorType]`, *tùy chọn*) -- Bạn có thể cung cấp tensor_type tại đây để chuyển đổi các danh sách số nguyên trong Tensor PyTorch/Numpy khi khởi tạo.
- **skip_tensor_conversion** (`list[str]` hoặc `set[str]`, *tùy chọn*) -- Danh sách hoặc tập hợp các khóa KHÔNG được chuyển đổi thành tensor, ngay cả khi `tensor_type` được chỉ định.

## Gemma3nTextConfig[[transformers.Gemma3nTextConfig]]

#### transformers.Gemma3nTextConfig[[transformers.Gemma3nTextConfig]]

```python
transformers.Gemma3nTextConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 262400, hidden_size: int = 2048, intermediate_size: int | list[int] = 16384, num_hidden_layers: int = 35, num_attention_heads: int = 8, num_key_value_heads: int = 2, head_dim: int = 256, hidden_activation: str = 'gelu_pytorch_tanh', max_position_embeddings: int = 32768, initializer_range: float = 0.02, rms_norm_eps: float = 1e-06, use_cache: bool = True, pad_token_id: int | None = 0, eos_token_id: int | list[int] | None = 1, bos_token_id: int | None = 2, tie_word_embeddings: bool = True, rope_parameters: dict | None = None, attention_bias: bool = False, attention_dropout: int | float | None = 0.0, sliding_window: int = 512, layer_types: list[str] | None = None, final_logit_softcapping: float = 30.0, vocab_size_per_layer_input: int = 262144, hidden_size_per_layer_input: int = 256, altup_active_idx: int = 0, altup_coef_clip: float = 120.0, altup_correct_scale: bool = True, altup_num_inputs: int = 4, num_kv_shared_layers: int = 15, laurel_rank: int = 64, activation_sparsity_pattern: float | list[float] | None = None)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/configuration_gemma3n.py#L36)

**Tham số:**

vocab_size (`int`, *tùy chọn*, mặc định là `262400`) : Kích thước từ vựng của mô hình. Xác định số lượng token khác nhau có thể được biểu diễn bởi `input_ids`.

hidden_size (`int`, *tuỳ chọn*, mặc định là `2048`) : Kích thước của các biểu diễn ẩn.

intermediate_size (`Union[int, list[int]]`, *tùy chọn*, mặc định là `16384`) : Kích thước của các biểu diễn MLP.

num_hidden_layers (`int`, *tuỳ chọn*, mặc định là `35`) : Số lượng lớp ẩn trong bộ giải mã Transformer.

num_attention_heads (`int`, *tuỳ chọn*, mặc định là `8`) : Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ giải mã Transformer.

num_key_value_heads (`int`, *optional*, mặc định là `2`) : Đây là số lượng key_value heads cần được sử dụng để triển khai Grouped Query Attention. Nếu `num_key_value_heads=num_attention_heads`, mô hình sẽ sử dụng Multi Head Attention (MHA), nếu `num_key_value_heads=1` mô hình sẽ sử dụng Multi Query Attention (MQA), ngược lại GQA sẽ được sử dụng. Khi chuyển đổi một checkpoint multi-head sang checkpoint GQA, mỗi nhóm key và value head nên được xây dựng bằng cách meanpooling tất cả các head gốc trong nhóm đó. Để biết thêm chi tiết, hãy xem [bài báo này](https://huggingface.co/papers/2305.13245). Nếu không được chỉ định, giá trị mặc định sẽ là `num_attention_heads`.

head_dim (`int`, *tùy chọn*, mặc định là `256`) : Kích thước chiều đầu chú ý. Nếu là None, giá trị mặc định sẽ là hidden_size // num_attention_heads

hidden_activation (`str`, *tùy chọn*, mặc định là `gelu_pytorch_tanh`) : Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ, `"gelu"`, `"relu"`, `"silu"`, v.v.

max_position_embeddings (`int`, *tuỳ chọn*, mặc định là `32768`) : Độ dài chuỗi tối đa mà mô hình này có thể được sử dụng.

initializer_range (`float`, *optional*, mặc định là `0.02`) : Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số.

rms_norm_eps (`float`, *tuỳ chọn*, mặc định là `1e-06`) : Epsilon được sử dụng bởi các lớp chuẩn hóa rms.

use_cache (`bool`, *tùy chọn*, mặc định là `True`) : Xác định xem mô hình có nên trả về các chú ý key/values cuối cùng hay không (không được sử dụng bởi tất cả các mô hình). Chỉ liên quan nếu `config.is_decoder=True` hoặc khi mô hình là mô hình sinh chỉ có decoder.

pad_token_id (`int`, *tùy chọn*, mặc định là `0`) : Id của token được sử dụng để đệm (padding) trong từ vựng.

eos_token_id (`Union[int, list[int]]`, *tùy chọn*, mặc định là `1`) : Id của token được sử dụng cho end-of-stream trong bảng từ vựng.

bos_token_id (`int`, *tuỳ chọn*, mặc định là `2`) : Id của token được dùng cho đầu luồng (beginning-of-stream) trong từ vựng.

tie_word_embeddings (`bool`, *tùy chọn*, mặc định là `True`) : Có nên gắn kết các nhúng trọng số theo ánh xạ `tied_weights_keys` của mô hình hay không.

rope_parameters (`dict`, *tùy chọn*) : Từ điển chứa các tham số cấu hình cho các embedding RoPE. Từ điển phải chứa một giá trị cho `rope_theta` và tùy chọn các tham số được sử dụng để mở rộng trong trường hợp bạn muốn sử dụng RoPE với `max_position_embeddings` dài hơn.

attention_bias (`bool`, *tùy chọn*, mặc định là `False`) : Có sử dụng bias trong các lớp chiếu query, key, value và output trong quá trình tự chú ý hay không.

attention_dropout (`Union[int, float]`, *tùy chọn*, mặc định là `0.0`) : Tỷ lệ dropout cho các xác suất chú ý.

sliding_window (`int`, *tuỳ chọn*, mặc định là `512`) : Kích thước cửa sổ của chú ý cửa sổ trượt. Nếu là `None`, sẽ không áp dụng cửa sổ trượt.

layer_types (`list[str]`, *tùy chọn*) : Một danh sách ánh xạ rõ ràng từng chỉ số lớp với loại lớp của nó. Nếu không được cung cấp, danh sách này sẽ được tạo tự động dựa trên các giá trị cấu hình.

final_logit_softcapping (`float`, *tuỳ chọn*, mặc định là `30.0`) : Giá trị giới hạn mềm (soft-capping) được áp dụng cho logits cuối cùng trước khi tính phân phối xác suất. Logits được nhân với `tanh(logit / cap) * cap`.

vocab_size_per_layer_input (`int`, *tuỳ chọn*, mặc định là 262144) : Kích thước từ vựng của các nhúng văn bản theo từng lớp bổ sung cho các nhúng tiêu chuẩn.

hidden_size_per_layer_input (`int`, *optional*, mặc định là 256) : Kích thước của các biểu diễn ẩn cho các embedding theo từng lớp.

altup_active_idx (`int`, *optional*, mặc định là 0) : Chỉ số của dự đoán mà AltUp sẽ tính toán các dự đoán bổ sung hoặc sửa chữa dự đoán đang hoạt động.

altup_coef_clip (`float`, *tuỳ chọn*, mặc định là 120.0) : Biên độ tối đa của trọng số hệ số dự đoán hoặc hiệu chỉnh AltUp.

altup_correct_scale (`bool`, *tùy chọn*, mặc định là `True`) : Nếu là True, áp dụng `AltUp.correct_output_scale` cho dự đoán đã được hiệu chỉnh tại `altup_active_idx`.

altup_num_inputs (`int`, *tuỳ chọn*, mặc định là 4) : Số lượng dự đoán mà AltUp cần thực hiện dựa trên chuỗi đầu vào.

num_kv_shared_layers (`int`, *optional*, mặc định là 15) : Số lượng các lớp chia sẻ các giá trị KV cache. Trong quá trình truyền thẳng, `num_kv_shared_layers` lớp cuối cùng trong mô hình sẽ “chia sẻ” các giá trị KV, theo đó mỗi lớp cục bộ và lớp toàn cục trong phạm vi này sử dụng các giá trị KV cache được tính toán cho lớp cục bộ hoặc lớp toàn cục cuối cùng, tương ứng, trước khi đi vào phạm vi này. Giá trị này phải là bội số của kích thước mẫu chú ý (xem tham số `layer_types`).

laurel_rank (`int`, *tuỳ chọn*, mặc định là 64) : Kích thước trung gian cho các phép chiếu tuyến tính trong Lớp Dư Lượng Tăng Cường Học Được (Learned Augmented Residual Layer).

activation_sparsity_pattern (`Sequence[float]`, *optional*) : Hệ số độ thưa được sử dụng để trích xuất các kích hoạt top-k cho một lớp nhất định. Sequence được cung cấp phải chỉ định rõ một giá trị độ thưa cho từng lớp trong mô hình. Mặc định, 10 lớp đầu tiên là thưa với hệ số độ thưa là 0.95 và các lớp còn lại là đặc.

Đây là lớp cấu hình để lưu trữ cấu hình của một Gemma3nModel. Nó được sử dụng để khởi tạo một mô hình Gemma3N theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của [google/gemma-3n-E4B](https://huggingface.co/google/gemma-3n-E4B)

Các đối tượng cấu hình kế thừa từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) để biết thêm thông tin.

```python
>>> from transformers import Gemma3nTextModel, Gemma3nTextConfig

>>> # Initializing a Gemma3nText gemma3n_text-E4B style configuration
>>> configuration = Gemma3nTextConfig()

>>> # Initializing a model from the gemma3n_text-E4B style configuration
>>> model = Gemma3nTextModel(configuration)

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

## Gemma3nVisionConfig[[transformers.Gemma3nVisionConfig]]

#### transformers.Gemma3nVisionConfig[[transformers.Gemma3nVisionConfig]]

```python
transformers.Gemma3nVisionConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, architecture: str = 'mobilenetv5_300m_enc', initializer_range: float = 0.02, do_pooling: bool = False, model_args: dict | None = None, hidden_size: int = 2048, vocab_size: int = 128, vocab_offset: int = 262144, rms_norm_eps: float = 1e-06)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/configuration_gemma3n.py#L337)

**Tham số:**

architecture (`str`, *tùy chọn*, mặc định là `"resnet50"`) : Kiến trúc timm cần tải.

initializer_range (`float`, *optional*, mặc định là `0.02`) : Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số.

do_pooling (`bool`, *tùy chọn*, mặc định là `True`) : Có thực hiện pooling cho last_hidden_state trong `TimmWrapperModel` hay không.

model_args (`dict[str, Any]`, *tùy chọn*) : Các đối số từ khóa bổ sung để truyền cho hàm `timm.create_model`. Ví dụ: `model_args={"depth": 3}` cho `timm/vit_base_patch32_clip_448.laion2b_ft_in12k_in1k` để tạo một mô hình có 3 khối. Mặc định là `None`.

hidden_size (`int`, *tuỳ chọn*, mặc định là `2048`) : Kích thước của các biểu diễn ẩn.

vocab_size (`int`, *tùy chọn*, mặc định là `128`) : Kích thước từ vựng của mô hình. Xác định số lượng token khác nhau có thể được biểu diễn bởi `input_ids`.

vocab_offset (`int`, *tuỳ chọn*, mặc định là 262144) : Độ lệch giữa chỉ mục từ vựng của tokenizer cho các token id được nhúng bởi `Gemma3nMultimodalEmbedder` và bảng `Gemma3nMultimodalEmbedder.embedding` có chỉ mục bắt đầu từ 0.

rms_norm_eps (`float`, *tuỳ chọn*, mặc định là `1e-06`) : Epsilon được sử dụng bởi các lớp chuẩn hóa rms.

Đây là lớp cấu hình để lưu trữ cấu hình của một Gemma3nModel. Nó được sử dụng để khởi tạo một mô hình Gemma3N theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của [google/gemma-3n-E4B](https://huggingface.co/google/gemma-3n-E4B)

Các đối tượng cấu hình kế thừa từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) để biết thêm thông tin.

Ví dụ:
```python
>>> from transformers import Gemma3nVisionConfig, TimmWrapper

>>> # Initializing a TimmWrapper gemma3n_vision-E4B-style configuration
>>> configuration = Gemma3nVisionConfig()

>>> # Initializing a gemma3n_vision-E4B-style TimmWrapper from the configuration
>>> model = TimmWrapper(configuration)

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

## Gemma3nAudioConfig[[transformers.Gemma3nAudioConfig]]

#### transformers.Gemma3nAudioConfig[[transformers.Gemma3nAudioConfig]]

```python
transformers.Gemma3nAudioConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 128, vocab_offset: int = 262272, input_feat_size: int = 128, hidden_size: int = 1536, rms_norm_eps: float = 1e-06, gradient_clipping: float = 10000000000.0, conf_attention_chunk_size: int = 12, conf_attention_context_left: int = 13, conf_attention_context_right: int = 0, conf_attention_logit_cap: float = 50.0, conf_num_attention_heads: int = 8, conf_num_hidden_layers: int = 12, conf_conv_kernel_size: int = 5, conf_reduction_factor: int = 4, conf_residual_weight: float = 0.5, sscp_conv_channel_size: list[int] | tuple[int, int] = (128, 32), sscp_conv_group_norm_eps: float = 0.001, sscp_conv_kernel_size: list | tuple[tuple[int, int], tuple[int, int]] = ((3, 3), (3, 3)), sscp_conv_stride_size: list | tuple[tuple[int, int], tuple[int, int]] = ((2, 2), (2, 2)))
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/configuration_gemma3n.py#L237)

**Tham số:**

vocab_size (`int`, *tùy chọn*, mặc định là `128`) : Kích thước từ vựng của mô hình. Xác định số lượng token khác nhau có thể được biểu diễn bởi `input_ids`.

vocab_offset (`int`, *tuỳ chọn*, mặc định là 262272) : Độ lệch giữa chỉ mục từ vựng của tokenizer cho các token id được nhúng bởi `Gemma3nMultimodalEmbedder` và bảng `Gemma3nMultimodalEmbedder.embedding` có chỉ mục bắt đầu từ 0.

input_feat_size (`int`, *tuỳ chọn*, mặc định là 128) : Số kênh trong mỗi khung mel-spectrogram.

hidden_size (`int`, *optional*, mặc định là `1536`) : Kích thước của các biểu diễn ẩn.

rms_norm_eps (`float`, *tuỳ chọn*, mặc định là `1e-06`) : Epsilon được sử dụng bởi các lớp chuẩn hóa rms.

gradient_clipping (`float`, *optional*, mặc định là 10000000000.0) : Giá trị cắt (clipping) được sử dụng để ổn định các giá trị gradient cực lớn.

conf_attention_chunk_size (`int`, *optional*, mặc định là 12) : Kích thước của chuỗi con cho việc xử lý chú ý cục bộ bên trong phần Conformer ("conf") của Universal Speech Model.

conf_attention_context_left (`int`, *optional*, mặc định là 13) : Kích thước ngữ cảnh bên trái của chú ý cục bộ (local attention) bên trong phần Conformer ("conf") của Universal Speech Model.

conf_attention_context_right (`int`, *optional*, mặc định là 0) : Kích thước ngữ cảnh bên phải của chú ý cục bộ bên trong phần Conformer ("conf") của Universal Speech Model.

conf_attention_logit_cap (`float`, *optional*, mặc định là 50.0) : Logit cap được áp dụng trong quá trình local attention bên trong phần Conformer ("conf") của Universal Speech Model.

conf_num_attention_heads (`int`, *tuỳ chọn*, mặc định là 8) : Số lượng đầu chú ý trong chú ý cục bộ bên trong phần Conformer ("conf") của Mô hình Ngôn ngữ Phổ quát.

conf_num_hidden_layers (`int`, *optional*, mặc định là 12) : Số lượng lớp sử dụng chú ý cục bộ (local attention) bên trong phần Conformer ("conf") của Mô hình Ngôn ngữ Phổ quát (Universal Speech Model).

conf_conv_kernel_size (`int`, *optional*, mặc định là 5) : Kích thước nhân tích chập cho khối conformer bên trong phần Universal Speech Model ("conf") của Conformer.

conf_reduction_factor (`int`, *tuỳ chọn*, mặc định là 4) : Hệ số giảm được sử dụng trong khối conformer bên trong phần Universal Speech Model ("conf").

conf_residual_weight (`float`, *optional*, mặc định là 0.5) : Trọng số kết nối phần dư bên trong phần Conformer ("conf") của Universal Speech Model.

sscp_conv_channel_size (`tuple(int, int)`, *tùy chọn*, mặc định là `(128, 32)`) : Kích thước kênh cho lớp tích chập thứ nhất và thứ hai trong phần Sub-sample Convolution Projection ("sscp") của Universal Speech Model.

sscp_conv_group_norm_eps (`float`, *optional*, mặc định là 0.001) : Epsilon được sử dụng trong group normalization trong subsample convolution projection ở phần Sub-sample Convolution Projection ("sscp") của Universal Speech Model.

sscp_conv_kernel_size (`tuple(tuple(int, int), tuple(int, int))`, *optional*, mặc định là `((3, 3), (3, 3))`) : Kích thước kernel của hai lớp tích chập trong phép chiếu tích chập hạ mẫu (subsample convolution projection) ở phần Sub-sample Convolution Projection ("sscp") của Universal Speech Model. Kích thước kernel được chỉ định dưới dạng một tuple gồm chiều cao và chiều rộng cho mỗi lớp, trong đó chiều cao tương ứng với chiều thời gian và chiều rộng tương ứng với chiều tần số.

sscp_conv_stride_size (`tuple(tuple(int, int), tuple(int, int))`, *optional*, mặc định là `((2, 2), (2, 2))`) : Kích thước bước (stride) của hai lớp tích chập trong phép chiếu tích chập hạ mẫu (subsample convolution projection) ở phần "sscp" của Mô hình Ngôn ngữ Phổ quát (Universal Speech Model). Kích thước bước được chỉ định dưới dạng một tuple gồm chiều cao và chiều rộng cho mỗi lớp, trong đó chiều cao tương ứng với chiều thời gian và chiều rộng tương ứng với chiều tần số.

Đây là lớp cấu hình để lưu trữ cấu hình của một Gemma3nModel. Nó được sử dụng để khởi tạo một mô hình Gemma3N theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của [google/gemma-3n-E4B](https://huggingface.co/google/gemma-3n-E4B)

Các đối tượng cấu hình kế thừa từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) để biết thêm thông tin.

Ví dụ:

```python
>>> from transformers import Gemma3nAudioConfig, Gemma3nAudioEncoder

>>> # Initializing a Gemma3nAudioEncoder gemma3n_audio-E4B-style configuration
>>> configuration = Gemma3nAudioConfig()

>>> # Initializing a model from the gemma3n_audio-E4B style configuration
>>> model = Gemma3nAudioEncoder(configuration)

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

## Gemma3nConfig[[transformers.Gemma3nConfig]]

#### transformers.Gemma3nConfig[[transformers.Gemma3nConfig]]

```python
transformers.Gemma3nConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, text_config: transformers.models.gemma3n.configuration_gemma3n.Gemma3nTextConfig | dict[str, typing.Any] | None = None, vision_config: transformers.models.gemma3n.configuration_gemma3n.Gemma3nVisionConfig | dict[str, typing.Any] | None = None, audio_config: transformers.models.gemma3n.configuration_gemma3n.Gemma3nAudioConfig | dict[str, typing.Any] | None = None, audio_soft_tokens_per_image: int | None = 188, vision_soft_tokens_per_image: int | None = 256, boi_token_id: int | None = 255999, eoi_token_id: int | None = 262144, image_token_id: int | None = 262145, boa_token_id: int | None = 256000, eoa_token_id: int | None = 262272, audio_token_id: int | None = 262273, initializer_range: float | None = 0.02, tie_word_embeddings: bool | None = True, use_cache: bool = True)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/configuration_gemma3n.py#L430)

**Tham số:**

text_config (`Union[~models.gemma3n.configuration_gemma3n.Gemma3nTextConfig, dict[str, Any]]`, *tùy chọn*) : Đối tượng config hoặc từ điển của text backbone.

vision_config (`Union[~models.gemma3n.configuration_gemma3n.Gemma3nVisionConfig, dict[str, Any]]`, *tùy chọn*) : Đối tượng config hoặc từ điển của vision backbone.

audio_config (`Union[~models.gemma3n.configuration_gemma3n.Gemma3nAudioConfig, dict[str, Any]]`, *tùy chọn*) : Đối tượng config hoặc từ điển của audio backbone.

audio_soft_tokens_per_image (`int`, *tuỳ chọn*, mặc định là 188) : Số lượng token mềm cho mỗi đoạn âm thanh.

vision_soft_tokens_per_image (`int`, *tuỳ chọn*, mặc định là 256) : Số lượng token mềm cho mỗi hình ảnh.

boi_token_id (`int`, *optional*, mặc định là 255999) : Chỉ số token bắt đầu hình ảnh để bao quanh prompt hình ảnh.

eoi_token_id (`int`, *optional*, mặc định là 262144) : Chỉ số token kết thúc hình ảnh để bao quanh prompt hình ảnh.

image_token_id (`int`, *tuỳ chọn*, mặc định là `262145`) : Chỉ số token hình ảnh được dùng làm ký tự thay thế cho các hình ảnh đầu vào.

boa_token_id (`int`, *tuỳ chọn*, mặc định là 256000) : Chỉ số token bắt đầu âm thanh để bao quanh prompt âm thanh.

eoa_token_id (`int`, *optional*, mặc định là 262272) : Chỉ số token kết thúc âm thanh để bao quanh prompt âm thanh.

audio_token_id (`int`, *tuỳ chọn*, mặc định là `262273`) : Chỉ số token âm thanh được dùng làm ký tự thay thế cho âm thanh đầu vào.

initializer_range (`float`, *optional*, mặc định là `0.02`) : Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số.

tie_word_embeddings (`bool`, *tùy chọn*, mặc định là `True`) : Có nên gắn kết các nhúng trọng số theo ánh xạ `tied_weights_keys` của mô hình hay không.

use_cache (`bool`, *tùy chọn*, mặc định là `True`) : Xác định xem mô hình có nên trả về các chú ý key/values cuối cùng hay không (không được sử dụng bởi tất cả các mô hình). Chỉ liên quan nếu `config.is_decoder=True` hoặc khi mô hình là mô hình sinh chỉ có decoder.

Đây là lớp cấu hình để lưu trữ cấu hình của một Gemma3nModel. Nó được sử dụng để khởi tạo một mô hình Gemma3N theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của [google/gemma-3n-E4B](https://huggingface.co/google/gemma-3n-E4B)

Các đối tượng cấu hình kế thừa từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) để biết thêm thông tin.

Ví dụ:

```python
>>> from transformers import Gemma3nForConditionalGeneration, Gemma3nConfig, Gemma3nTextConfig

>>> # Initializing a MobileNet vision config, which is loaded from TIMM
>>> vision_config = Gemma3nVisionConfig()

>>> # Initializing a Gemma3n Audio config
>>> audio_config = Gemma3nAudioConfig()

>>> # Initializing a Gemma3n Text config
>>> text_config = Gemma3nTextConfig()

>>> # Initializing a Gemma3n gemma-3-4b style configuration
>>> configuration = Gemma3nConfig(text_config, vision_config, audio_config)

>>> # Initializing a model from the gemma-3-4b style configuration
>>> model = Gemma3nTextConfig(configuration)

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

## Gemma3nTextModel[[transformers.Gemma3nTextModel]]

#### transformers.Gemma3nTextModel[[transformers.Gemma3nTextModel]]

```python
transformers.Gemma3nTextModel(config: Gemma3nTextConfig)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/modeling_gemma3n.py#L1577)

**Tham số:**

config ([Gemma3nTextConfig](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nTextConfig)) : Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức [from_pretrained()](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel.from_pretrained) để tải trọng số mô hình.

Mô hình ngôn ngữ Gemma 3n cơ bản không có đầu mô hình hóa ngôn ngữ.

Mô hình này kế thừa từ [PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel). Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu ra, v.v.)

Mô hình này cũng là một lớp con của [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

#### forward[[transformers.Gemma3nTextModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, per_layer_inputs: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/modeling_gemma3n.py#L1638)

**Tham số:**

input_ids (`torch.LongTensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Chỉ số của các token trong chuỗi đầu vào theo từ vựng. Mặc định, các token đệm (padding) sẽ bị bỏ qua. Có thể lấy chỉ số bằng cách sử dụng [AutoTokenizer](/docs/transformers/main/vi/model_doc/auto#transformers.AutoTokenizer). Xem [PreTrainedTokenizer.encode()](/docs/transformers/main/vi/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) và [PreTrainedTokenizer.__call__()](/docs/transformers/main/vi/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) để biết chi tiết. [ID đầu vào là gì?](../glossary#input-ids)

per_layer_inputs (`torch.Tensor`, *tùy chọn*, mặc định là None) : Các embedding theo từng lớp đã được tính trước. Nếu là None, chúng sẽ được suy ra từ input_ids nếu được cung cấp.

attention_mask (`torch.Tensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong `[0, 1]`:  - 1 cho các token **không bị che**, - 0 cho các token **bị che**.  [Mặt nạ chú ý là gì?](../glossary#attention-mask)

position_ids (`torch.LongTensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Chỉ số của vị trí các token trong mỗi chuỗi đầu vào trong các embedding vị trí. Được chọn trong khoảng `[0, config.n_positions - 1]`.  [Position IDs là gì?](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`, *tùy chọn*) : Các hidden-states đã tính trước (key và values trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc giải mã tuần tự. Điều này thường bao gồm `past_key_values` do mô hình trả về ở một giai đoạn giải mã trước đó, khi `use_cache=True` hoặc `config.use_cache=True`.  Chỉ cho phép [Cache](/docs/transformers/main/vi/internal/generation_utils#transformers.Cache) instance làm đầu vào, xem [hướng dẫn kv cache](https://huggingface.co/docs/transformers/en/kv_cache) của chúng tôi. Nếu không truyền `past_key_values`, [DynamicCache](/docs/transformers/main/vi/internal/generation_utils#transformers.DynamicCache) sẽ được khởi tạo theo mặc định.  Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.  Nếu sử dụng `past_key_values`, người dùng được kỳ vọng chỉ nhập các `input_ids` chưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có shape `(batch_size, unprocessed_length)` thay vì tất cả `input_ids` có shape `(batch_size, sequence_length)`.

inputs_embeds (`torch.Tensor` có hình dạng `(batch_size, sequence_length, hidden_size)`, *tùy chọn*) : Tùy chọn, thay vì truyền `input_ids`, bạn có thể chọn cách truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số `input_ids` thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình.

use_cache (`bool`, *tùy chọn*) : Nếu được đặt thành `True`, các trạng thái khóa và giá trị `past_key_values` sẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xem `past_key_values`).

**Trả về:** [BaseModelOutputWithPast](/docs/transformers/main/vi/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPast) hoặc `tuple(torch.Tensor)`

Một [BaseModelOutputWithPast](/docs/transformers/main/vi/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPast) hoặc một tuple của `torch.Tensor` (nếu `return_dict=False` được truyền hoặc khi `config.return_dict=False`) bao gồm các phần tử khác nhau tùy thuộc vào cấu hình ([Gemma3nConfig](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nConfig)) và đầu vào.

Phương thức forward của [Gemma3nTextModel](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nTextModel) ghi đè lên phương thức đặc biệt `__call__`.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, bạn nên gọi instance của `Module` sau đó thay vì gọi hàm này, vì instance `Module` sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ bỏ qua chúng một cách im lặng.

- **last_hidden_state** (`torch.Tensor` có hình dạng `(batch_size, sequence_length, hidden_size)`) -- Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.

  Nếu `past_key_values` được sử dụng, chỉ có hidden-state cuối cùng của các chuỗi có shape `(batch_size, 1, hidden_size)` được xuất ra.
- **past_key_values** (`Cache`, *tùy chọn*, được trả về khi `use_cache=True` được truyền vào hoặc khi `config.use_cache=True`) -- Đây là một instance của [Cache](/docs/transformers/main/vi/internal/generation_utils#transformers.Cache). Để biết thêm chi tiết, hãy xem [hướng dẫn về kv cache](https://huggingface.co/docs/transformers/en/kv_cache) của chúng tôi.

  Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention và tùy chọn nếu `config.is_encoder_decoder=True` trong các khối cross-attention) có thể được sử dụng (xem đầu vào `past_key_values`) để tăng tốc độ giải mã tuần tự.
- **hidden_states** (`tuple(torch.Tensor)`, *tuỳ chọn*, được trả về khi `output_hidden_states=True` được truyền vào hoặc khi `config.output_hidden_states=True`) -- Bộ tuple của `torch.Tensor` (một cho đầu ra của các embedding, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng `(batch_size, sequence_length, hidden_size)`.

  Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
- **attentions** (`tuple(torch.Tensor)`, *tuỳ chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.

## Gemma3nModel[[transformers.Gemma3nModel]]

#### transformers.Gemma3nModel[[transformers.Gemma3nModel]]

```python
transformers.Gemma3nModel(config: Gemma3nConfig)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/modeling_gemma3n.py#L1923)

**Tham số:**

config ([Gemma3nConfig](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nConfig)) : Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức [from_pretrained()](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel.from_pretrained) để tải trọng số mô hình.

Mô hình Gemma 3n cơ bản bao gồm một bộ xương sống thị giác, một bộ xương sống âm thanh và một mô hình ngôn ngữ không có đầu mô hình hóa ngôn ngữ.

Mô hình này kế thừa từ [PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel). Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu ra, v.v.)

Mô hình này cũng là một lớp con của [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

#### forward[[transformers.Gemma3nModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, pixel_values: typing.Optional[torch.Tensor] = None, input_features: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, input_features_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, token_type_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, per_layer_inputs: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, mm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/modeling_gemma3n.py#L2004)

input_features_mask (`torch.Tensor` có shape `(batch_size, sequence_length)`, *tùy chọn*): Attention mask cho `input_features`, trong đó các giá trị khác không đánh dấu các khung âm thanh hợp lệ. per_layer_inputs (`torch.Tensor`, *tùy chọn*): Các text embeddings đầu vào theo từng lớp đã được tính trước, có shape `(batch_size, sequence_length, num_hidden_layers, hidden_size_per_layer_input)`. Khi được cung cấp, chúng sẽ được sử dụng trực tiếp thay vì được tính từ `input_ids` thông qua `get_per_layer_inputs()` trong mô hình text. Nếu gọi `forward` với `inputs_embeds` thay vì `input_ids`, bạn nên tính trước chúng và truyền chúng cùng với `inputs_embeds`, nếu không thành phần token-identity của các embeddings theo từng lớp sẽ bị bỏ qua.

Ví dụ:

```python
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, Gemma3nForConditionalGeneration

>>> model = Gemma3nForConditionalGeneration.from_pretrained("google/gemma3n2-3b-mix-224")
>>> processor = AutoProcessor.from_pretrained("google/gemma3n2-3b-mix-224")

>>> prompt = "Where is the cat standing?"
>>> url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> inputs = processor(images=image, text=prompt,  return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(**inputs,)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Where is the cat standing?\nsnow"
```

#### get_image_features[[transformers.Gemma3nModel.get_image_features]]

```python
get_image_features(pixel_values: Tensor, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/modeling_gemma3n.py#L1938)

**Tham số:**

pixel_values (`torch.Tensor` có shape `(batch_size, num_channels, image_size, image_size)`) : Các tensor tương ứng với các ảnh đầu vào. Giá trị pixel có thể được lấy bằng cách sử dụng [SiglipImageProcessor](/docs/transformers/main/vi/model_doc/siglip#transformers.SiglipImageProcessor). Xem [SiglipImageProcessor.__call__()](/docs/transformers/main/vi/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) để biết chi tiết ([Gemma3nProcessor](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nProcessor) sử dụng [SiglipImageProcessor](/docs/transformers/main/vi/model_doc/siglip#transformers.SiglipImageProcessor) để xử lý ảnh).

**Trả về:** [BaseModelOutputWithPooling](/docs/transformers/main/vi/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) hoặc `tuple(torch.Tensor)`

Một [BaseModelOutputWithPooling](/docs/transformers/main/vi/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) hoặc một tuple của `torch.Tensor` (nếu `return_dict=False` được truyền hoặc khi `config.return_dict=False`) bao gồm các phần tử khác nhau tùy thuộc vào cấu hình ([Gemma3nConfig](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nConfig)) và đầu vào.

Chiếu trạng thái ẩn cuối cùng từ mô hình thị giác vào không gian của mô hình ngôn ngữ.

- **last_hidden_state** (`torch.Tensor` có hình dạng `(batch_size, sequence_length, hidden_size)`) -- Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.
- **pooler_output** (`torch.Tensor` có hình dạng `(batch_size, hidden_size)`) -- Trạng thái ẩn của lớp cuối cùng cho token đầu tiên của chuỗi (token phân loại) sau khi được xử lý thêm thông qua các lớp dùng cho tác vụ tiền huấn luyện bổ trợ. Ví dụ, đối với các mô hình thuộc họ BERT, giá trị này trả về token phân loại sau khi được xử lý qua một lớp tuyến tính và một hàm kích hoạt tanh. Trọng số của lớp tuyến tính được huấn luyện từ mục tiêu dự đoán câu tiếp theo (phân loại) trong quá trình tiền huấn luyện.
- **hidden_states** (`tuple(torch.Tensor)`, *tuỳ chọn*, được trả về khi `output_hidden_states=True` được truyền vào hoặc khi `config.output_hidden_states=True`) -- Bộ tuple của `torch.Tensor` (một cho đầu ra của các embedding, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng `(batch_size, sequence_length, hidden_size)`.

  Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
- **attentions** (`tuple(torch.Tensor)`, *tuỳ chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.

#### get_audio_features[[transformers.Gemma3nModel.get_audio_features]]

```python
get_audio_features(input_features: Tensor, input_features_mask: Tensor, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/modeling_gemma3n.py#L2155)

**Tham số:**

input_features (`torch.Tensor` có hình dạng `(num_images, seq_length, num_features)`) : Các tensor tương ứng với âm thanh đầu vào.

input_features_mask (`torch.Tensor` có hình dạng `(num_images, seq_length)`) : Mặt nạ chú ý (attention mask) cho âm thanh đầu vào.

**Trả về:** `Gemma3nAudioEncoderModelOutput` hoặc `tuple(torch.Tensor)`

Một `Gemma3nAudioEncoderModelOutput` hoặc một tuple của `torch.Tensor` (nếu `return_dict=False` được truyền hoặc khi `config.return_dict=False`) bao gồm các phần tử khác nhau tùy thuộc vào cấu hình ([Gemma3nConfig](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nConfig)) và đầu vào.

Chiếu trạng thái ẩn cuối cùng từ bộ mã hóa âm thanh vào không gian của mô hình ngôn ngữ.

- **last_hidden_state** (`torch.Tensor` có hình dạng `(batch_size, sequence_length, hidden_size)`) -- Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.
- **pooler_output** (`torch.Tensor` có hình dạng `(batch_size, hidden_size)`) -- Trạng thái ẩn của lớp cuối cùng cho token đầu tiên của chuỗi (token phân loại) sau khi được xử lý thêm thông qua các lớp dùng cho tác vụ tiền huấn luyện bổ trợ. Ví dụ, đối với các mô hình thuộc họ BERT, giá trị này trả về token phân loại sau khi được xử lý qua một lớp tuyến tính và một hàm kích hoạt tanh. Trọng số của lớp tuyến tính được huấn luyện từ mục tiêu dự đoán câu tiếp theo (phân loại) trong quá trình tiền huấn luyện.
- **hidden_states** (`tuple(torch.Tensor)`, *tuỳ chọn*, được trả về khi `output_hidden_states=True` được truyền vào hoặc khi `config.output_hidden_states=True`) -- Bộ tuple của `torch.Tensor` (một cho đầu ra của các embedding, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng `(batch_size, sequence_length, hidden_size)`.

  Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
- **attentions** (`tuple(torch.Tensor)`, *tuỳ chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
- **audio_mel_mask** (`torch.BoolTensor`, *tùy chọn*) -- Một torch.BoolTensor có hình dạng `(batch_size, num_frames)`

## Gemma3nForCausalLM[[transformers.Gemma3nForCausalLM]]

#### transformers.Gemma3nForCausalLM[[transformers.Gemma3nForCausalLM]]

```python
transformers.Gemma3nForCausalLM(config: Gemma3nTextConfig)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/modeling_gemma3n.py#L1788)

**Tham số:**

config ([Gemma3nTextConfig](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nTextConfig)) : Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức [from_pretrained()](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel.from_pretrained) để tải trọng số mô hình.

Mô hình ngôn ngữ Gemma 3n cơ bản với đầu mô hình hóa ngôn ngữ.

Mô hình này kế thừa từ [PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel). Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu ra, v.v.)

Mô hình này cũng là một lớp con của [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

#### forward[[transformers.Gemma3nForCausalLM.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, logits_to_keep: typing.Union[int, torch.Tensor] = 0, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/modeling_gemma3n.py#L1804)

**Tham số:**

input_ids (`torch.LongTensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Chỉ số của các token trong chuỗi đầu vào theo từ vựng. Mặc định, các token đệm (padding) sẽ bị bỏ qua. Có thể lấy chỉ số bằng cách sử dụng [AutoTokenizer](/docs/transformers/main/vi/model_doc/auto#transformers.AutoTokenizer). Xem [PreTrainedTokenizer.encode()](/docs/transformers/main/vi/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) và [PreTrainedTokenizer.__call__()](/docs/transformers/main/vi/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) để biết chi tiết. [ID đầu vào là gì?](../glossary#input-ids)

attention_mask (`torch.Tensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong `[0, 1]`:  - 1 cho các token **không bị che**, - 0 cho các token **bị che**.  [Mặt nạ chú ý là gì?](../glossary#attention-mask)

position_ids (`torch.LongTensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Chỉ số của vị trí các token trong mỗi chuỗi đầu vào trong các embedding vị trí. Được chọn trong khoảng `[0, config.n_positions - 1]`.  [Position IDs là gì?](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`, *tùy chọn*) : Các hidden-states đã tính trước (key và values trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc giải mã tuần tự. Điều này thường bao gồm `past_key_values` do mô hình trả về ở một giai đoạn giải mã trước đó, khi `use_cache=True` hoặc `config.use_cache=True`.  Chỉ cho phép [Cache](/docs/transformers/main/vi/internal/generation_utils#transformers.Cache) instance làm đầu vào, xem [hướng dẫn kv cache](https://huggingface.co/docs/transformers/en/kv_cache) của chúng tôi. Nếu không truyền `past_key_values`, [DynamicCache](/docs/transformers/main/vi/internal/generation_utils#transformers.DynamicCache) sẽ được khởi tạo theo mặc định.  Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.  Nếu sử dụng `past_key_values`, người dùng được kỳ vọng chỉ nhập các `input_ids` chưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có shape `(batch_size, unprocessed_length)` thay vì tất cả `input_ids` có shape `(batch_size, sequence_length)`.

inputs_embeds (`torch.Tensor` có hình dạng `(batch_size, sequence_length, hidden_size)`, *tùy chọn*) : Tùy chọn, thay vì truyền `input_ids`, bạn có thể chọn cách truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số `input_ids` thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình.

labels (`torch.LongTensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Nhãn để tính toán tổn thất mô hình hóa ngôn ngữ có mặt nạ. Chỉ số phải nằm trong `[0, ..., config.vocab_size]` hoặc -100 (xem docstring của `input_ids`). Các token có chỉ số được đặt thành `-100` sẽ bị bỏ qua (mặt nạ), tổn thất chỉ được tính cho các token có nhãn nằm trong `[0, ..., config.vocab_size]`.

use_cache (`bool`, *tùy chọn*) : Nếu được đặt thành `True`, các trạng thái khóa và giá trị `past_key_values` sẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xem `past_key_values`).

logits_to_keep (`Union[int, torch.Tensor]`, *tùy chọn*, mặc định là `0`) : Nếu là `int`, tính logits cho `logits_to_keep` token cuối. Nếu là `0`, tính logits cho tất cả `input_ids` (trường hợp đặc biệt). Chỉ cần logits của token cuối cho quá trình sinh, và việc chỉ tính cho token đó có thể tiết kiệm bộ nhớ, điều này trở nên khá đáng kể với các chuỗi dài hoặc kích thước từ vựng lớn. Nếu là `torch.Tensor`, phải là 1 chiều tương ứng với các chỉ số cần giữ trong chiều độ dài chuỗi. Điều này hữu ích khi sử dụng định dạng tensor đóng gói (một chiều duy nhất cho batch và độ dài chuỗi).

**Trả về:** [CausalLMOutputWithPast](/docs/transformers/main/vi/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) hoặc `tuple(torch.Tensor)`

Một [CausalLMOutputWithPast](/docs/transformers/main/vi/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) hoặc một tuple của `torch.Tensor` (nếu `return_dict=False` được truyền hoặc khi `config.return_dict=False`) bao gồm các phần tử khác nhau tùy thuộc vào cấu hình ([Gemma3nConfig](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nConfig)) và đầu vào.

Phương thức forward của [Gemma3nForCausalLM](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nForCausalLM) ghi đè lên phương thức đặc biệt `__call__`.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, bạn nên gọi instance của `Module` sau đó thay vì gọi hàm này, vì instance `Module` sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ bỏ qua chúng một cách im lặng.

- **loss** (`torch.Tensor` có shape `(1,)`, *optional*, được trả về khi `labels` được cung cấp) -- Loss của language modeling (cho next-token prediction).
- **logits** (`torch.Tensor` có hình dạng `(batch_size, sequence_length, config.vocab_size)`) -- Điểm dự đoán của đầu mô hình hóa ngôn ngữ (điểm cho mỗi token từ vựng trước SoftMax).
- **past_key_values** (`Cache`, *tùy chọn*, được trả về khi `use_cache=True` được truyền vào hoặc khi `config.use_cache=True`) -- Đây là một instance của [Cache](/docs/transformers/main/vi/internal/generation_utils#transformers.Cache). Để biết thêm chi tiết, hãy xem [hướng dẫn về kv cache](https://huggingface.co/docs/transformers/en/kv_cache) của chúng tôi.

  Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention) có thể được sử dụng (xem đầu vào `past_key_values`) để tăng tốc độ giải mã tuần tự.
- **hidden_states** (`tuple(torch.Tensor)`, *tuỳ chọn*, được trả về khi `output_hidden_states=True` được truyền vào hoặc khi `config.output_hidden_states=True`) -- Bộ tuple của `torch.Tensor` (một cho đầu ra của các embedding, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng `(batch_size, sequence_length, hidden_size)`.

  Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
- **attentions** (`tuple(torch.Tensor)`, *tuỳ chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.

Ví dụ:

```python
>>> from transformers import AutoTokenizer, Gemma3nForCausalLM

>>> model = Gemma3nForCausalLM.from_pretrained("google/gemma-2-9b")
>>> tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-9b")

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

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

## Gemma3nForConditionalGeneration[[transformers.Gemma3nForConditionalGeneration]]

#### transformers.Gemma3nForConditionalGeneration[[transformers.Gemma3nForConditionalGeneration]]

```python
transformers.Gemma3nForConditionalGeneration(config: Gemma3nConfig)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/modeling_gemma3n.py#L2184)

**Tham số:**

config ([Gemma3nConfig](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nConfig)) : Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức [from_pretrained()](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel.from_pretrained) để tải trọng số mô hình.

Mô hình Gemma 3n cơ bản bao gồm một bộ xương sống thị giác, một bộ xương sống âm thanh, một mô hình ngôn ngữ và một đầu mô hình hóa ngôn ngữ.

Mô hình này kế thừa từ [PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel). Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu ra, v.v.)

Mô hình này cũng là một lớp con của [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

#### forward[[transformers.Gemma3nForConditionalGeneration.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, pixel_values: typing.Optional[torch.Tensor] = None, input_features: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, input_features_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, token_type_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, logits_to_keep: typing.Union[int, torch.Tensor] = 0, per_layer_inputs: typing.Optional[torch.Tensor] = None, mm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/modeling_gemma3n.py#L2199)

**Tham số:**

input_ids (`torch.LongTensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Chỉ số của các token trong chuỗi đầu vào theo từ vựng. Mặc định, các token đệm (padding) sẽ bị bỏ qua. Có thể lấy chỉ số bằng cách sử dụng [AutoTokenizer](/docs/transformers/main/vi/model_doc/auto#transformers.AutoTokenizer). Xem [PreTrainedTokenizer.encode()](/docs/transformers/main/vi/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) và [PreTrainedTokenizer.__call__()](/docs/transformers/main/vi/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) để biết chi tiết. [ID đầu vào là gì?](../glossary#input-ids)

pixel_values (`torch.Tensor` có shape `(batch_size, num_channels, image_size, image_size)`, *tùy chọn*) : Các tensor tương ứng với các ảnh đầu vào. Giá trị pixel có thể được lấy bằng cách sử dụng [SiglipImageProcessor](/docs/transformers/main/vi/model_doc/siglip#transformers.SiglipImageProcessor). Xem [SiglipImageProcessor.__call__()](/docs/transformers/main/vi/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) để biết chi tiết ([Gemma3nProcessor](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nProcessor) sử dụng [SiglipImageProcessor](/docs/transformers/main/vi/model_doc/siglip#transformers.SiglipImageProcessor) để xử lý ảnh).

input_features (`torch.Tensor` có shape `(batch_size, sequence_length, feature_dim)`, *tùy chọn*) : Các tensor tương ứng với các đặc trưng âm thanh đầu vào. Các đặc trưng âm thanh có thể được lấy bằng cách sử dụng [Gemma3nAudioFeatureExtractor](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nAudioFeatureExtractor). Xem `Gemma3nAudioFeatureExtractor.__call__()` để biết chi tiết ([Gemma3nProcessor](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nProcessor) sử dụng [Gemma3nAudioFeatureExtractor](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nAudioFeatureExtractor) để xử lý âm thanh).

attention_mask (`torch.Tensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong `[0, 1]`:  - 1 cho các token **không bị che**, - 0 cho các token **bị che**.  [Mặt nạ chú ý là gì?](../glossary#attention-mask)

input_features_mask (`torch.Tensor`, *tùy chọn*, mặc định là None) : Mặt nạ chú ý (attention mask) cho âm thanh đầu vào.

position_ids (`torch.LongTensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Chỉ số của vị trí các token trong mỗi chuỗi đầu vào trong các embedding vị trí. Được chọn trong khoảng `[0, config.n_positions - 1]`.  [Position IDs là gì?](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`, *tùy chọn*) : Các hidden-states đã tính trước (key và values trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc giải mã tuần tự. Điều này thường bao gồm `past_key_values` do mô hình trả về ở một giai đoạn giải mã trước đó, khi `use_cache=True` hoặc `config.use_cache=True`.  Chỉ cho phép [Cache](/docs/transformers/main/vi/internal/generation_utils#transformers.Cache) instance làm đầu vào, xem [hướng dẫn kv cache](https://huggingface.co/docs/transformers/en/kv_cache) của chúng tôi. Nếu không truyền `past_key_values`, [DynamicCache](/docs/transformers/main/vi/internal/generation_utils#transformers.DynamicCache) sẽ được khởi tạo theo mặc định.  Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.  Nếu sử dụng `past_key_values`, người dùng được kỳ vọng chỉ nhập các `input_ids` chưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có shape `(batch_size, unprocessed_length)` thay vì tất cả `input_ids` có shape `(batch_size, sequence_length)`.

token_type_ids (`torch.LongTensor` có shape `(batch_size, sequence_length)`, *tùy chọn*) : Các chỉ số token phân đoạn để chỉ định phần đầu và phần thứ hai của các đầu vào. Các chỉ số được chọn trong `[0, 1]`:  - 0 tương ứng với token *câu A*, - 1 tương ứng với token *câu B*.  [Các ID loại token là gì?](../glossary#token-type-ids)

inputs_embeds (`torch.Tensor` có hình dạng `(batch_size, sequence_length, hidden_size)`, *tùy chọn*) : Tùy chọn, thay vì truyền `input_ids`, bạn có thể chọn cách truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số `input_ids` thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình.

labels (`torch.LongTensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Nhãn để tính toán tổn thất mô hình hóa ngôn ngữ có mặt nạ. Chỉ số phải nằm trong `[0, ..., config.text_config.vocab_size]` hoặc -100 (xem docstring của `input_ids`). Các token có chỉ số được đặt thành `-100` sẽ bị bỏ qua (mặt nạ), tổn thất chỉ được tính cho các token có nhãn nằm trong `[0, ..., config.text_config.vocab_size]`.

use_cache (`bool`, *tùy chọn*) : Nếu được đặt thành `True`, các trạng thái khóa và giá trị `past_key_values` sẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xem `past_key_values`).

logits_to_keep (`Union[int, torch.Tensor]`, *tùy chọn*, mặc định là `0`) : Nếu là `int`, tính logits cho `logits_to_keep` token cuối. Nếu là `0`, tính logits cho tất cả `input_ids` (trường hợp đặc biệt). Chỉ cần logits của token cuối cho quá trình sinh, và việc chỉ tính cho token đó có thể tiết kiệm bộ nhớ, điều này trở nên khá đáng kể với các chuỗi dài hoặc kích thước từ vựng lớn. Nếu là `torch.Tensor`, phải là 1 chiều tương ứng với các chỉ số cần giữ trong chiều độ dài chuỗi. Điều này hữu ích khi sử dụng định dạng tensor đóng gói (một chiều duy nhất cho batch và độ dài chuỗi).

per_layer_inputs (`torch.Tensor`, *tùy chọn*) : Các vector nhúng văn bản đầu vào đã tính trước cho từng lớp, có hình dạng `(batch_size, sequence_length, num_hidden_layers, hidden_size_per_layer_input)`. Khi được cung cấp, chúng sẽ được sử dụng trực tiếp thay vì được tính từ `input_ids` thông qua `get_per_layer_inputs()` trong mô hình văn bản. Nếu gọi `forward` với `inputs_embeds` thay vì `input_ids`, bạn nên tính trước chúng và truyền chúng cùng với `inputs_embeds`, nếu không thành phần nhận dạng token của các vector nhúng theo lớp sẽ bị bỏ qua.

mm_encoder_outputs (`dict[str, ~modeling_outputs.BaseModelOutputWithPooling]`, *tùy chọn*) : Dict trong đó các khóa là các chế độ (modalities) được hỗ trợ và các giá trị là kết quả mã hóa cho chế độ đó. Mỗi kết quả mã hóa là một tuple bao gồm (`pooler_output`, *tùy chọn*: `last_hidden_states`, *tùy chọn*: `hidden_states`, *tùy chọn*: `attentions`) `pooler_output` có hình dạng `(batch_size, sequence_length, hidden_size)`, *tùy chọn*) là một chuỗi các đặc trưng đa chế độ của bộ mã hóa được hợp nhất vào các nhúng văn bản.

**Trả về:** `Gemma3nCausalLMOutputWithPast` hoặc `tuple(torch.Tensor)`

Một `Gemma3nCausalLMOutputWithPast` hoặc một tuple của `torch.Tensor` (nếu `return_dict=False` được truyền hoặc khi `config.return_dict=False`) bao gồm các phần tử khác nhau tùy thuộc vào cấu hình ([Gemma3nConfig](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nConfig)) và đầu vào.

Phương thức forward của [Gemma3nForConditionalGeneration](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nForConditionalGeneration) ghi đè lên phương thức đặc biệt `__call__`.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, bạn nên gọi instance của `Module` sau đó thay vì gọi hàm này, vì instance `Module` sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ bỏ qua chúng một cách im lặng.

- **loss** (`torch.Tensor` có shape `(1,)`, *optional*, được trả về khi `labels` được cung cấp) -- Loss của language modeling (cho next-token prediction).
- **logits** (`torch.Tensor` có hình dạng `(batch_size, sequence_length, config.text_config.vocab_size)`) -- Điểm dự đoán của đầu mô hình hóa ngôn ngữ (điểm cho mỗi token trong từ vựng trước SoftMax).
- **past_key_values** (`Cache`, *tùy chọn*, được trả về khi `use_cache=True` được truyền vào hoặc khi `config.use_cache=True`) -- Đây là một instance của [Cache](/docs/transformers/main/vi/internal/generation_utils#transformers.Cache). Để biết thêm chi tiết, hãy xem [hướng dẫn về kv cache](https://huggingface.co/docs/transformers/en/kv_cache) của chúng tôi.

  Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention) có thể được sử dụng (xem đầu vào `past_key_values`) để tăng tốc độ giải mã tuần tự.
- **hidden_states** (`tuple[torch.Tensor]`, *tuỳ chọn*, được trả về khi `output_hidden_states=True` được truyền vào hoặc khi `config.output_hidden_states=True`) -- Bộ tuple các `torch.Tensor` (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng `(batch_size, sequence_length, hidden_size)`.

  Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
- **attentions** (`tuple[torch.Tensor]`, *tuỳ chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
- **image_hidden_states** (`torch.Tensor`, *tùy chọn*) -- Một `torch.Tensor` có kích thước `(batch_size, num_images, sequence_length, hidden_size)`. image_hidden_states của mô hình do bộ mã hóa thị giác tạo ra sau khi chiếu trạng thái ẩn cuối cùng.
- **audio_hidden_states** (`torch.Tensor`, *tuỳ chọn*) -- Một `torch.Tensor` có kích thước `(batch_size, num_images, sequence_length, hidden_size)`. audio_hidden_states của mô hình do bộ mã hóa âm thanh tạo ra và sau khi chiếu trạng thái ẩn cuối cùng.

Ví dụ:

```python
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, Gemma3ForConditionalGeneration

>>> model = Gemma3ForConditionalGeneration.from_pretrained("google/gemma-3-4b-it")
>>> processor = AutoProcessor.from_pretrained("google/gemma-3-4b-it")

>>> messages = [
...     {
...         "role": "system",
...         "content": [
...             {"type": "text", "text": "You are a helpful assistant."}
...         ]
...     },
...     {
...         "role": "user", "content": [
...             {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
...             {"type": "text", "text": "Where is the cat standing?"},
...         ]
...     },
... ]

>>> inputs = processor.apply_chat_template(
...     messages,
...     tokenizer=True,
...     return_dict=True,
...     return_tensors="pt",
...     add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"user\nYou are a helpful assistant.\n\n\n\n\n\nWhere is the cat standing?\nmodel\nBased on the image, the cat is standing in a snowy area, likely outdoors. It appears to"
```

#### get_image_features[[transformers.Gemma3nForConditionalGeneration.get_image_features]]

```python
get_image_features(pixel_values: Tensor, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/gemma3n/modeling_gemma3n.py#L2195)

**Tham số:**

pixel_values (`torch.Tensor` có shape `(batch_size, num_channels, image_size, image_size)`) : Các tensor tương ứng với các ảnh đầu vào. Giá trị pixel có thể được lấy bằng cách sử dụng [SiglipImageProcessor](/docs/transformers/main/vi/model_doc/siglip#transformers.SiglipImageProcessor). Xem [SiglipImageProcessor.__call__()](/docs/transformers/main/vi/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) để biết chi tiết ([Gemma3nProcessor](/docs/transformers/main/vi/model_doc/gemma3n#transformers.Gemma3nProcessor) sử dụng [SiglipImageProcessor](/docs/transformers/main/vi/model_doc/siglip#transformers.SiglipImageProcessor) để xử lý ảnh).

Ví dụ:

```python
>>> from PIL import Image
>>> from transformers import AutoProcessor, Gemma3nForConditionalGeneration

>>> model = Gemma3nForConditionalGeneration.from_pretrained("google/gemma-3n-E4B")
>>> processor = AutoProcessor.from_pretrained("google/gemma-3n-E4B")

>>> messages = [
...     {
...         "role": "user", "content": [
...             {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
...             {"type": "text", "text": "Where is the cat standing?"},
...         ]
...     },
... ]

>>> inputs = processor.apply_chat_template(
...     messages,
...     tokenize=True,
...     return_dict=True,
...     return_tensors="pt",
...     add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]
```

[altup]: https://proceedings.neurips.cc/paper_files/paper/2023/hash/f2059277ac6ce66e7e5543001afa8bb5-Abstract-Conference.html [attention-mask-viz]: https://github.com/huggingface/transformers/blob/beb9b5b02246b9b7ee81ddf938f93f44cfeaad19/src/transformers/utils/attention_visualizer.py#L139 [gemma3n-collection]: https://huggingface.co/collections/google/gemma-3n [laurel]: https://huggingface.co/papers/2411.07501 [matformer]: https://huggingface.co/papers/2310.07707 [spark-transformer]: https://huggingface.co/papers/2506.06644 [usm]: https://huggingface.co/papers/2303.01037

