Transformers documentation

DiffusionGemma

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

and get access to the augmented documentation experience

to get started

Mô hình này đã được đóng góp cho Hugging Face Transformers vào ngày 2026-06-10.

DiffusionGemma

Tổng quan

DiffusionGemma được thiết kế để giảm thiểu các nút cổ chai tuần tự của các mô hình ngôn ngữ nhân quả tiêu chuẩn. Nó sử dụng kiến trúc encoder-decoder được tối ưu hóa đặc biệt cho tốc độ suy luận.

Bộ mã hóa hoạt động ở chế độ prefill, xử lý prompt ban đầu và tạo ra bộ nhớ đệm KV. Sau đó, bộ giải mã sử dụng chú ý hai chiều để xử lý một khối (một ‘canvas’) các token đầu vào, truy cập ngữ cảnh đã được đệm thông qua chú ý chéo.

Trong quá trình suy luận, DiffusionGemma sử dụng lấy mẫu đa canvas. Thay vì tạo ra từng token một, mô hình lặp lại quá trình khử nhiễu cho một khối token hoàn chỉnh bằng cách sử dụng bộ lấy mẫu diffusion. Khi một canvas đã được khử nhiễu hoàn toàn, nó sẽ được xử lý bởi bộ mã hóa và thêm vào bộ nhớ đệm KV, sau đó mô hình tạo ra canvas tiếp theo. Cách tiếp cận tự hồi quy theo khối này giúp tăng tốc độ tạo văn bản.

Bạn có thể tìm thấy thẻ mô hình và checkpoint tại đây. Bạn có thể tìm thấy hướng dẫn trực quan về mô hình tại đây.

Ví dụ sử dụng

Mặc dù đây là một mô hình khuếch tán văn bản và có vòng lặp sinh tùy chỉnh, phần lớn giao diện được chia sẻ với các mô hình khác có thể sinh văn bản bằng DiffusionGemmaGenerationMixin.generate(). Nếu bạn đang sử dụng một mô hình transformers khác trong ứng dụng của mình, bạn nên có thể thay thế trực tiếp nó bằng mô hình này.

DiffusionGemma có sẵn trong cả Transformers và Diffusers, nhưng Diffusers là nơi chính. Diffusers có đầy đủ các tùy chọn lập lịch, tiện ích pipeline, và các tính năng mới (bộ lập lịch bổ sung, tiêu chí dừng, chiến lược lấy mẫu) chỉ được thêm vào ở đó. Xem DiffusionGemma để có ví dụ sử dụng, và mở một issue trên Diffusers để thử nghiệm với các bộ lập lịch khác nhau hoặc yêu cầu một tính năng. Bản triển khai trong Transformers chỉ nhận các bản sửa lỗi nhưng không có tính năng mới.

Những lưu ý chung

  • DiffusionGemma không chấp nhận use_cache. Nó luôn sử dụng bộ nhớ đệm KV;
  • Hỗ trợ cho các cờ phổ biến như top_k sẽ không có sẵn vào ngày phát hành, nhưng sẽ được bổ sung theo thời gian nếu chúng tương thích với khuếch tán văn bản.

Ví dụ cơ bản

from transformers import DiffusionGemmaForBlockDiffusion, AutoProcessor


model = DiffusionGemmaForBlockDiffusion.from_pretrained(
    "google/diffusiongemma-26B-A4B-it", device_map="auto",
)
processor = AutoProcessor.from_pretrained("google/diffusiongemma-26B-A4B-it")

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,
    # Add the following to enable thinking
    # enable_thinking=True,
).to(model.device)
input_len = inputs["input_ids"].shape[-1]

# Set `cache_implementation="static"` in `generate` to trigger `torch.compile`.
# Compilation is much faster, after warming up!
output = model.generate(**inputs, max_new_tokens=256)
print(processor.decode(output.sequences[0][input_len:], skip_special_tokens=True))

Streaming

Giống như các mô hình khác có thể tạo văn bản, bạn có thể đặt một lớp streamer để phát trực tiếp văn bản. Khác với các mô hình khác, DiffusionGemma tạo ra các bản nháp trung gian trước khi có văn bản cuối cùng. Bạn có thể trực quan hóa chúng bằng TextDiffusionStreamer

from transformers import TextDiffusionStreamer

# (... copy from the example above, up to the `generate` call)
streamer = TextDiffusionStreamer(tokenizer=processor.tokenizer)
model.generate(**inputs, max_new_tokens=256, streamer=streamer)

Đặt đầu ra khử nhiễu ban đầu

Mô hình được huấn luyện để tinh chỉnh lặp lại các khối 256 token. Trong một số ứng dụng, việc cung cấp một điểm khởi đầu cho bộ giải mã thay vì bắt đầu từ các token ngẫu nhiên có thể mang lại lợi ích. Bạn có thể sử dụng decoder_input_ids, có sẵn trên tất cả các giao diện mô hình, để thiết lập khung nền khởi đầu.

initial_estimate = ... # a tensor with shape (bsz, 256)
model.generate(**inputs, max_new_tokens=256, decoder_input_ids=initial_estimate)

DiffusionGemmaTextConfig

lớp transformers.DiffusionGemmaTextConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 262144hidden_size: int = 2304intermediate_size: int = 9216num_hidden_layers: int = 30num_attention_heads: int = 8num_key_value_heads: int = 4head_dim: int = 256hidden_activation: str = 'gelu_pytorch_tanh'max_position_embeddings: int = 131072initializer_range: float = 0.02rms_norm_eps: float = 1e-06pad_token_id: int | None = 0eos_token_id: int | list[int] | None = 1bos_token_id: int | None = 2tie_word_embeddings: bool = Truerope_parameters: dict | None = Noneattention_bias: bool = Falseattention_dropout: int | float | None = 0.0sliding_window: int = 512layer_types: list[str] | None = Noneuse_bidirectional_attention: typing.Optional[typing.Literal['all', 'vision']] = Nonenum_experts: int | None = Nonetop_k_experts: int | None = Nonemoe_intermediate_size: int | None = None )

Tham số

  • vocab_size (int, tuỳ chọn, mặc định là 262144) — 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, tùy chọn, mặc định là 2304) — Kích thước của các biểu diễn ẩn.
  • intermediate_size (int, tùy chọn, mặc định là 9216) — Kích thước của các biểu diễn MLP.
  • num_hidden_layers (int, tùy chọn, mặc định là 30) — Số lượng lớp ẩn trong bộ giải mã Transformer.
  • num_attention_heads (int, tùy chọn, mặc định là 8) — Số lượng đầu attention cho mỗi lớp attention trong bộ giải mã Transformer.
  • num_key_value_heads (int, tùy chọn, mặc định là 4) — Đâ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 sẽ sử dụng GQA. Khi chuyển đổi 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. 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 của đầ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, tùy chọn, mặc định là 131072) — Chiều dài chuỗi tối đa mà mô hình này có thể được sử dụng.
  • initializer_range (float, tùy chọn, 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, tùy chọn, mặc định là 1e-06) — Giá trị epsilon được sử dụng bởi các lớp chuẩn hóa rms.
  • pad_token_id (int, tùy chọn, mặc định là 0) — Token id đượ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) — Token id được sử dụng cho end-of-stream trong bảng từ vựng.
  • bos_token_id (int, tùy chọn, mặc định là 2) — Token id được sử dụng cho beginning-of-stream trong bảng 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 trọng số nhúng 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, tùy chọn, mặc định là 512) — Kích thước cửa sổ của cơ chế 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 kiểu lớp tương ứng. 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.
  • use_bidirectional_attention (str, tùy chọn) — Kiểm soát hành vi chú ý hai chiều. Khi đặt thành "vision", các token thị giác sẽ chú ý hai chiều trong khi các token văn bản sử dụng chú ý nhân quả. Khi đặt thành "all", tất cả các token sẽ sử dụng chú ý hai chiều.
  • num_experts (int, tùy chọn) — Số lượng chuyên gia được định tuyến trong các lớp MoE.
  • top_k_experts (int, tùy chọn) — Số lượng chuyên gia được kích hoạt cho mỗi token trong các lớp MoE.
  • moe_intermediate_size (int, tùy chọn) — Kích thước ẩn trung gian của mạng feed-forward của mỗi chuyên gia trong các lớp MoE.

Đây là lớp cấu hình để lưu trữ cấu hình của một DiffusionGemmaModel. Nó được sử dụng để khởi tạo một mô hình Diffusion Gemma 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/diffusiongemma-26B-A4B-it

Các đối tượng cấu hình kế thừa từ 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 để biết thêm thông tin.

DiffusionGemmaConfig

lớp transformers.DiffusionGemmaConfig

< >

( 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.models.diffusion_gemma.configuration_diffusion_gemma.DiffusionGemmaTextConfig | dict[str, typing.Any] | None = Nonevision_config: transformers.configuration_utils.PreTrainedConfig | dict[str, typing.Any] | None = Noneboi_token_id: int | None = 255999eoi_token_id: int | None = 258882image_token_id: int | None = 258880initializer_range: float | None = 0.02tie_word_embeddings: bool = Truecanvas_length: int | None = 256 )

Tham số

  • text_config (Union[~models.diffusion_gemma.configuration_diffusion_gemma.DiffusionGemmaTextConfig, dict[str, Any]], tùy chọn) — Đối tượng cấu hình hoặc từ điển của bộ khung văn bản.
  • vision_config (Union[~configuration_utils.PreTrainedConfig, dict[str, Any]], tùy chọn) — Đối tượng cấu hình hoặc từ điển của bộ khung thị giác (vision backbone).
  • boi_token_id (int, tùy chọn, mặc định là 255999) — Chỉ số token bắt đầu hình ảnh để bọc xung quanh prompt hình ảnh.
  • eoi_token_id (int, tùy chọn, mặc định là 258882) — Chỉ số token kết thúc hình ảnh để bao quanh prompt hình ảnh.
  • image_token_id (int, tùy chọn, mặc định là 258880) — Chỉ số token hình ảnh được dùng làm ký tự thay thế cho các hình ảnh đầu vào.
  • initializer_range (float, tùy chọn, 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 trọng số nhúng theo ánh xạ tied_weights_keys của mô hình hay không.
  • canvas_length (int, tùy chọn, mặc định là 256) — Kích thước của canvas hoặc, nói cách khác, độ dài khối trong block diffusion. Được dùng để khởi tạo một canvas trống.

Đây là lớp cấu hình để lưu trữ cấu hình của một DiffusionGemmaModel. Nó được sử dụng để khởi tạo một mô hình Diffusion Gemma 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/diffusiongemma-26B-A4B-it

Các đối tượng cấu hình kế thừa từ 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 để biết thêm thông tin.

Ví dụ:

>>> from transformers import (
>>>     DiffusionGemmaConfig,
>>>     DiffusionGemmaModel,
>>>     DiffusionGemmaTextConfig,
>>>     Gemma4VisionConfig,
>>> )

>>> # Initializing a DiffusionGemma Text config.
>>> text_config = DiffusionGemmaTextConfig()

>>> # Initializing a Gemma 4 vision config (DiffusionGemma uses Gemma 4's vision block).
>>> vision_config = Gemma4VisionConfig()

>>> # Initializing a DiffusionGemma text config
>>> configuration = DiffusionGemmaConfig(text_config, vision_config)

>>> # Initializing a model from the configuration
>>> model = DiffusionGemmaModel(configuration)

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

DiffusionGemmaGenerationOutput

lớp transformers.DiffusionGemmaGenerationOutput

< >

( sequences: LongTensortokens_per_forward: int | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonelogits: None = Nonescores: None = Nonehidden_states: None = None )

Tham số

  • sequences (torch.LongTensor có hình dạng (batch_size, sequence_length)) — Các chuỗi được tạo ra, bao gồm cả prompt nếu input_ids được cung cấp cho phương thức generate.
  • tokens_per_forward (torch.LongTensor có shape (batch_size)) — Số lượng token cho mỗi bước forward trong lần gọi generate này, cho từng thành viên trong batch. Thông thường, đây được dùng làm chỉ số đánh giá thứ cấp cho các mô hình khuếch tán văn bản.
  • past_key_values (Cache) — Bộ nhớ đệm được sử dụng cho quá trình sinh. Nó có thể được truyền vào các lần gọi generate tiếp theo để tăng tốc độ sinh, trong các phiên đa lượt.
  • logits (None) — Không được sử dụng. Được giữ trong giao diện để đảm bảo tương thích ngược.
  • scores (None) — Không được sử dụng. Được giữ trong giao diện để đảm bảo tương thích ngược.
  • hidden_states (None) — Không được sử dụng. Được giữ trong giao diện để đảm bảo tương thích ngược.

Lớp đầu ra cho việc tạo nội dung của DiffusionGemma.

DiffusionGemmaGenerationMixin

lớp transformers.DiffusionGemmaGenerationMixin

< >

( )

Lớp Mixin cho việc tạo nội dung của DiffusionGemma. Chứa tất cả các phương thức ở cấp độ mô hình.

generate

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonestreamer: transformers.generation.streamers.BaseStreamer | None = Nonegeneration_config: transformers.models.diffusion_gemma.generation_diffusion_gemma.DiffusionGemmaGenerationConfig | None = Nonelogits_processor: transformers.generation.logits_process.LogitsProcessorList | None = Nonestopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = None**kwargs ) → torch.LongTensor or DiffusionGemmaGenerationOutput

Tham số

  • input_ids (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chuỗi được sử dụng làm prompt cho quá trình sinh.
  • past_key_values (Cache, tuỳ chọn) — Đối tượng Cache chứa các giá trị key trong quá khứ và các attention mask trong quá khứ cho decoder. Nếu được đặt, input_ids và/hoặc pixel_values phải tương ứng với dữ liệu chưa được cache.
  • streamer (BaseStreamer, optional) — Đối tượng Streamer sẽ được sử dụng để stream các chuỗi được tạo ra. Các token được tạo sẽ được truyền qua streamer.put(token_ids) và streamer chịu trách nhiệm cho bất kỳ xử lý tiếp theo nào. Nếu đối tượng streamer có phương thức put_draft, các token từ các bước khử nhiễu sẽ được gửi đến đó.

Các đối số bổ sung cho người dùng nâng cao

  • generation_config (DiffusionGemmaGenerationConfig, optional) — Cấu hình sinh được sử dụng làm tham số cơ sở cho lệnh gọi sinh, ghi đè lên các giá trị mặc định của mô hình. Nếu checkpoint của mô hình có tệp generation_config.json, giá trị mặc định của mô hình sẽ được tải từ tệp đó. Ngược lại, đây sẽ là một instance DiffusionGemmaGenerationConfig rỗng. Như một cách viết tắt bổ sung, các **kwargs khớp với các thuộc tính trong generation_config sẽ ghi đè lên chúng.
  • logits_processor (LogitsProcessorList, optional) — Các bộ xử lý logits tùy chỉnh bổ sung cho các bộ xử lý logits mặc định được xây dựng từ các đối số và cấu hình sinh, để áp dụng lên các logits khuếch tán. Nếu được cung cấp, các bộ xử lý này sẽ được áp dụng đầu tiên. Tính năng này dành cho người dùng nâng cao. Bạn có thể, ví dụ, truyền tại đây các bộ xử lý logits thường được sử dụng với các LLM AR.
  • stopping_criteria (StoppingCriteriaList, optional) — Tiêu chí dừng tùy chỉnh bổ sung cho tiêu chí dừng tự hồi quy mặc định được xây dựng từ các đối số và cấu hình sinh. Nếu được cung cấp, các tiêu chí này sẽ được áp dụng trước tiên. Tính năng này dành cho người dùng nâng cao. Bạn có thể, ví dụ, truyền tại đây các tiêu chí dừng thường được sử dụng với AR LLMs.
  • kwargs (dict[str, Any], tùy chọn) — Tham số hóa ad hoc cho generation_config và/hoặc các kwargs cụ thể của model bổ sung sẽ được chuyển tiếp đến hàm forward của model. Ví dụ, bạn có thể đặt canvas bắt đầu bằng decoder_input_ids.

Trả về

torch.LongTensor hoặc DiffusionGemmaGenerationOutput

  • torch.LongTensor: văn bản được tạo ra dưới dạng id.
  • DiffusionGemmaGenerationOutput: một instance của ModelOutput chứa văn bản được tạo ra (sequences), cùng với các đầu ra tùy chọn khác.

Tạo văn bản bằng mô hình khuếch tán.

Nó chứa một vòng lặp bên ngoài thực hiện việc tạo tự hồi quy các canvas (các khối token) và một vòng

loop thực hiện diffusion trên mỗi canvas. Thuật toán hoạt động theo cách sau:

1. Autoregressive canvas generation loop:
    a. Encode all previous tokens using the encoder, to get the KV cache.
    b. Prepare data for the new denoising loop
    c. For each denoising (diffusion) step:
        i.   Run the decoder, taking the current canvas, the encoder KV cache, and the self-conditioning logits
             (if available) as inputs.
        ii.  Select new canvas tokens from the output logits.
        iii. Apply the sampler acceptance and renoising logic.
        iv.  Update the diffusion stopping criteria.
        v.   Use the output logits as self-conditioning logits for the next step.
    d. Append the new denoised canvas to the sequence of generated tokens.
    e. Check if any autoregressive stopping criteria are met, and break the outer loop if all sequences have
       met them. Replaces generated tokens in finished sequences by pad.
    f. Prepare tensors for the next block

Ví dụ:

>>> from transformers import DiffusionGemmaForBlockDiffusion, AutoProcessor, TextDiffusionStreamer

>>> model = DiffusionGemmaForBlockDiffusion.from_pretrained(
...     "google/diffusiongemma-26B-A4B-it", device_map="auto",
>>> )

>>> chat = [{"role": "user", "content": "Why is the sky blue?"},]
>>> processor = AutoProcessor.from_pretrained("google/diffusiongemma-26B-A4B-it")
>>> input_ids = processor.apply_chat_template(chat, tokenize=True, return_tensors="pt")

>>> streamer = TextDiffusionStreamer(tokenizer=processor.tokenizer)
>>> model.generate(input_ids.to(model.device), max_new_tokens=512, streamer=streamer)

DiffusionGemmaGenerationConfig

lớp transformers.DiffusionGemmaGenerationConfig

< >

( **kwargs )

Các tham số kiểm soát độ dài của đầu ra

  • max_new_tokens (int, tùy chọn) — Số lượng token tối đa cần tạo, bỏ qua số lượng token trong prompt.
  • max_length (int, tùy chọn) — Độ dài tối đa của chuỗi đầu ra. Khuyến nghị sử dụng max_new_tokens để kiểm soát số lượng token mà mô hình tạo ra.

Tham số Diffusion

  • max_denoising_steps (int) — Số bước khử nhiễu tối đa cần thực hiện.
  • sampler_config (EntropyBoundSamplerConfig) — Cấu hình cho sampler. Xem EntropyBoundSampler để tìm hiểu cách sampler hoạt động trong một mô hình khuếch tán văn bản.
  • t_min (float) — Nhiệt độ cuối cùng trong lịch trình, tức là ở bước khử nhiễu cuối cùng. Xem LinearTemperatureScheduleLogitsProcessor để biết thêm chi tiết.
  • t_max (float) — Nhiệt độ ban đầu trong lịch trình, tức là ở bước khử nhiễu đầu tiên. Xem LinearTemperatureScheduleLogitsProcessor để biết thêm chi tiết.
  • stability_threshold (int) — Số bước mà canvas được chấp nhận phải giữ nguyên để kích hoạt tiêu chí dừng. Xem StableAndConfidentStoppingCriteria để biết thêm chi tiết.
  • confidence_threshold (float) — Ngưỡng cho giá trị trung bình của entropy của logits đã được điều chỉnh theo nhiệt độ để kích hoạt tiêu chí dừng. Xem StableAndConfidentStoppingCriteria để biết thêm chi tiết.

Các tham số kiểm soát bộ nhớ đệm

  • cache_implementation (str, tùy chọn) — Tên của lớp cache sẽ được khởi tạo trong generate, để giải mã nhanh hơn. Các giá trị có thể là:

    Nếu không có giá trị nào được chỉ định, chúng tôi sẽ sử dụng bộ nhớ đệm mặc định cho mô hình (thường là DynamicCache). Xem tài liệu về bộ nhớ đệm của chúng tôi để biết thêm thông tin.

  • cache_config (dict, tùy chọn, mặc định là None) — Các đối số được sử dụng trong lớp cache key-value có thể được truyền vào cache_config.

Các token đặc biệt có thể được sử dụng khi tạo sinh

  • bos_token_id (int, tùy chọn) — Id của token beginning-of-sequence.
  • pad_token_id (int, tùy chọn) — Id của token padding.
  • eos_token_id (Union[int, list[int]], tuỳ chọn) — Id của token kết thúc chuỗi. Tuỳ chọn, dùng một danh sách để đặt nhiều token kết thúc chuỗi.

Lớp GenerationConfig với tham số hóa được tùy chỉnh cho DiffusionGemmaGenerationMixin.generate().

EntropyBoundSamplerConfig

lớp transformers.EntropyBoundSamplerConfig

< >

( entropy_bound: float )

Tham số

  • entropy_bound (float) — Giới hạn entropy. Giá trị này càng cao thì càng nhiều token được chấp nhận. Xem docstring của EntropyBoundSampler.accept_canvas() để biết thêm chi tiết về cách nó được áp dụng.

Lớp cấu hình cho trình lấy mẫu giới hạn entropy.

EntropyBoundSampler

lớp transformers.EntropyBoundSampler

< >

( config: EntropyBoundSamplerConfigcanvas_length: intvocab_size: intmax_denoising_steps: int )

Tham số

  • config (EntropyBoundSamplerConfig) — Cấu hình của bộ lấy mẫu.
  • canvas_length (int) — Chiều dài của canvas.
  • vocab_size (int) — Kích thước của bảng từ vựng.
  • max_denoising_steps (int) — Số bước khử nhiễu tối đa. (Không được sử dụng trong trình lấy mẫu này)

Lớp Sampler khởi tạo một canvas với các token ngẫu nhiên, chấp nhận các token dựa trên entropy ở cấp độ token và tiến hành renoise các token không được chấp nhận.

Dưới đây là phác thảo sơ bộ về cách vòng lặp trình lấy mẫu hoạt động:

          +-----------------------+
          | Canvas initialization |
          | x_T ∈ U(V)            |
          +-----------+-----------+
                      |
                      v
           +----------+---------+       +---------------------+
+--------->| Current canvas x_t |------>| Denoiser canvas x_D |
|          +----------+---------+       +----------+----------+
|                      \                          /
|                       \                        /
|                        \   Acceptance logic   /
|                         v                    v
|                       +-------------------------+
| Stop if max           | Accepted canvas x_{t-1} |
| denosing steps        +------------+------------+      +-------------------+
| reached or                          \                  | New canvas ∈ U(V) |
| adaptive stopping                    \                 +---------+---------+
| triggers                              \    Renoising logic      /
|                                        v                       v
|                                       +-------------------------+
+---------------------------------------| Next canvas x_{t-1}     |
                                        +-------------------------+

accept_canvas

< >

( current_canvas: LongTensordenoiser_canvas: LongTensorlogits: Tensorcur_step: int ) → torch.LongTensor

Tham số

  • current_canvas (torch.LongTensor) — Bảng vẽ hiện tại.
  • denoiser_canvas (torch.LongTensor) — Bảng vẽ được lấy mẫu từ các dự đoán của bộ khử nhiễu.
  • logits (torch.Tensor) — Logits từ denoiser.
  • cur_step (int) — Bước hiện tại.

Trả về

torch.LongTensor

Bảng vẽ được chấp nhận.

Nhận các token từ bộ khử nhiễu dựa trên một ràng buộc entropy. Cụ thể hơn, quá trình lấy mẫu được thực hiện bằng cách chấp nhận k token có entropy thấp nhất, sao cho

sum_i^k entropy_i - max(entropy_1, …, entropy_k) <= entropy_bound,

trong đó vế trái là cận trên của thông tin tương hỗ đồng thời giữa các token này, do đó trình lấy mẫu chọn k token mà chúng gần như độc lập.

Được đề xuất ban đầu trong https://arxiv.org/pdf/2505.24857

initialize_canvas

< >

( batch_size: intdevice: device )

Khởi tạo và trả về một canvas mới gồm canvas_length token với các giá trị ngẫu nhiên từ bảng từ vựng.

renoise_canvas

< >

( accepted_canvas: LongTensorcur_step: int ) → torch.LongTensor

Tham số

  • accepted_canvas (torch.LongTensor) — Bảng vẽ đã được chấp nhận.
  • cur_step (int) — Bước hiện tại. (Không được sử dụng trong trình lấy mẫu này)

Trả về

torch.LongTensor

Bức canvas được thêm nhiễu.

Renoises tất cả các token không được chấp nhận.

StableAndConfidentStoppingCriteria

lớp transformers.StableAndConfidentStoppingCriteria

< >

( stability_threshold: intconfidence_threshold: float )

Tham số

  • stability_threshold (int) — Số bước mà canvas được chấp nhận phải giữ nguyên để kích hoạt tiêu chí dừng.
  • confidence_threshold (float) — Ngưỡng cho giá trị trung bình của entropy của logits đã được điều chỉnh theo nhiệt độ để kích hoạt tiêu chí dừng.

Chiến lược dừng thích ứng, dừng lại khi quá trình khuếch tán đủ tự tin và ổn định. Cụ thể hơn:

  • Quá trình khuếch tán ổn định khi các canvas được chấp nhận giống nhau trong stability_threshold bước.
  • Quá trình khuếch tán được coi là tự tin khi trung bình của entropy của các logits đã xử lý nằm dưới confidence_threshold.

LinearTemperatureScheduleLogitsProcessor

lớp transformers.LinearTemperatureScheduleLogitsProcessor

< >

( t_min: floatt_max: floatmax_denoising_steps: int )

Tham số

  • t_min (float) — Nhiệt độ cuối cùng trong lịch trình, tức là ở bước khử nhiễu cuối cùng.
  • t_max (float) — Nhiệt độ ban đầu trong lịch trình, tức là ở bước khử nhiễu đầu tiên.
  • max_denoising_steps (int) — Số bước khử nhiễu tối đa.

Logits processor áp dụng lịch trình nhiệt độ tuyến tính lên logits. Điều này tương tự như TemperatureLogitsWarper, ngoại trừ việc nhiệt độ là một hàm của bước hiện tại.

Tại bước n trong tổng số N, nhiệt độ t được cho bởi t = t_min + ((t_max - t_min) * (n/N)).

DiffusionGemmaPreTrainedModel

lớp transformers.DiffusionGemmaPreTrainedModel

< >

( config: PreTrainedConfig*inputs**kwargs )

Tham số

  • config (PreTrainedConfig) — 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 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() để tải trọng số của mô hình.

Mô hình này kế thừa từ 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, v.v.)

Mô hình này cũng là một lớp con của 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

( *args**kwargs )

Một giá trị giả lập cho một đường dẫn có dấu chấm (ví dụ: torch.float32): các chuỗi truy cập thuộc tính, các cuộc gọi hoạt động như các decorator pass-through, repr là đường dẫn có dấu chấm, và việc sử dụng nó như một lớp cơ sở sẽ thay thế bằng một lớp cơ sở type thông thường (PEP 560 __mro_entries__), do đó các lớp con thực sự vẫn giữ nguyên metaclass bình thường và inspect.signature sẽ đọc __init__ thực của chúng thay vì của một mock.

DiffusionGemmaModel

lớp transformers.DiffusionGemmaModel

< >

( config: DiffusionGemmaConfig )

Tham số

  • config (DiffusionGemmaConfig) — 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() để tải trọng số của mô hình.

Mô hình Diffusion Gemma cơ bản, xuất ra các hidden-states thô mà không có bất kỳ head cụ thể nào ở phía trên.

Mô hình này kế thừa từ 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, v.v.)

Mô hình này cũng là một lớp con của 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

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Union[torch.Tensor, dict, NoneType] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Noneself_conditioning_logits: typing.Optional[torch.Tensor] = Noneself_conditioning_mask: typing.Optional[torch.BoolTensor] = Nonedecoder_attention_mask: typing.Union[torch.Tensor, dict, NoneType] = Nonedecoder_position_ids: typing.Optional[torch.LongTensor] = Nonemm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DiffusionGemmaModelOutputWithPast or tuple(torch.Tensor)

Tham số

  • input_ids (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Các ID token chưa được cache cho prompt để được mã hóa làm ngữ cảnh cho canvas.
  • attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length) hoặc dict, tùy chọn) — Mặt nạ cho các token đầu vào.
  • past_key_values (~cache_utils.Cache, tuỳ chọn) — Các hidden-state đã tính trước (key và value 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 được trả về bởi mô hình ở 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 instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền past_key_values, 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 past_key_values được sử dụng, người dùng được kỳ vọng chỉ nhập 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ó hình dạng (batch_size, unprocessed_length) thay vì toàn bộ input_ids có hình dạng (batch_size, sequence_length).

  • position_ids (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng [0, config.n_positions - 1].

    ID vị trí là gì?

  • decoder_input_ids (torch.LongTensor có hình dạng (batch_size, canvas_length), tùy chọn) — Các ID token cho canvas cần được tinh chỉnh.
  • self_conditioning_logits (torch.Tensor có hình dạng (batch_size, canvas_length, vocab_size), tùy chọn) — Logits tự điều kiện từ bước khử nhiễu trước đó, được sử dụng để tính các nhúng tự điều kiện.
  • self_conditioning_mask (torch.BoolTensor có shape (batch_size,), tuỳ chọn) — Mặt nạ cho từng ví dụ trên self_conditioning_logits: các ví dụ được đặt thành False sẽ nhận tín hiệu tự điều kiện bằng không, như thể không có logits nào được truyền cho chúng. Hữu ích cho việc huấn luyện, nơi tự điều kiện được bật cho từng ví dụ với một xác suất nhất định.
  • decoder_attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length+canvas_length) hoặc dict, tùy chọn) — Mặt nạ chú ý cho bộ đệm KV của bộ giải mã. Được sử dụng để chỉ định các mục đã đệm/chưa được lấp đầy trong bộ đệm KV của bộ mã hóa.
  • decoder_position_ids (torch.LongTensor có hình dạng (batch_size, canvas_length), tùy chọn) — Các ID vị trí cho các token trong canvas.
  • mm_encoder_outputs (dict[str, ~modeling_outputs.BaseModelOutputWithPooling], tùy chọn) — Dict trong đó các khóa là các chế độ (modality) đượ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 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 phương tiện của bộ mã hóa đã được hợp nhất vào các nhúng văn bản.

Trả về

DiffusionGemmaModelOutputWithPast hoặc tuple(torch.Tensor)

Một DiffusionGemmaModelOutputWithPast 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 thành phần khác nhau tùy thuộc vào cấu hình (DiffusionGemmaConfig) và đầu vào.

Phương thức forward của DiffusionGemmaModel 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, người dùng 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ẽ lặng lẽ bỏ qua chú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. Để biết thêm chi tiết, hãy xem hướng dẫn về 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 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) — 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.

  • encoder_last_hidden_state (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Chuỗi các trạng thái ẩn tại đầu ra của lớp cuối cùng của bộ mã hóa. Chỉ được đặt khi input_ids được cung cấp, ví dụ để tính toán tổn thất tự hồi quy trên bộ mã hóa trong quá trình huấn luyện.

DiffusionGemmaEncoderModel

lớp transformers.DiffusionGemmaEncoderModel

< >

( config: DiffusionGemmaConfig )

Tham số

  • config (DiffusionGemmaConfig) — 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() để tải trọng số của mô hình.

Mô hình encoder DiffusionGemma bao gồm một bộ khung thị giác và một mô hình ngôn ngữ, không có đầu mô hình hóa ngôn ngữ. Nó rất giống với Gemma4Model, ngoại trừ việc nó không hỗ trợ đầu vào âm thanh hoặc video, và luôn giả định đường dẫn mã MoE trong các lớp bên trong.

Mô hình này kế thừa từ 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, v.v.)

Mô hình này cũng là một lớp con của 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

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Union[torch.Tensor, dict, NoneType] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonemm_token_type_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneimage_position_ids: typing.Optional[torch.LongTensor] = Nonemm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.Tensor)

Tham số

  • input_ids (torch.LongTensor có 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ừ điển. Mặc định, padding sẽ bị bỏ qua.

    Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào là gì?

  • pixel_values (torch.Tensor có hình dạng (batch_size, num_channels, image_size, image_size), tùy chọn) — Các tensor tương ứng với các hình ảnh đầu vào. Giá trị pixel có thể được lấy bằng cách sử dụng image_processor_class. Xem image_processor_class.__call__ để biết chi tiết (Gemma4Processor sử dụng image_processor_class để xử lý hình ảnh).
  • attention_mask (Union[torch.Tensor, dict] 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ì?

  • position_ids (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng [0, config.n_positions - 1].

    ID vị trí là gì?

  • past_key_values (~cache_utils.Cache, tuỳ chọn) — Các hidden-state đã tính trước (key và value 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 được trả về bởi mô hình ở 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 instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền past_key_values, 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 past_key_values được sử dụng, người dùng được kỳ vọng chỉ nhập 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ó hình dạng (batch_size, unprocessed_length) thay vì toàn bộ input_ids có hình dạng (batch_size, sequence_length).

  • mm_token_type_ids (torch.LongTensor có shape (batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào khớp với từng phương thức (modality). Ví dụ: văn bản (0), hình ảnh (1), video (2). Các id loại token đa phương thức có thể được lấy bằng cách sử dụng AutoProcessor. Xem ProcessorMixin.call() để biết chi tiết.
  • 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 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.
  • image_position_ids (torch.LongTensor có hình dạng (batch_size, max_patches, 2), tùy chọn) — Tọa độ vị trí patch 2D từ bộ xử lý ảnh, trong đó (-1, -1) biểu thị phần đệm (padding). Được truyền tiếp đến bộ mã hóa thị giác để tính toán nhúng vị trí (positional embedding).
  • mm_encoder_outputs (dict[str, ~modeling_outputs.BaseModelOutputWithPooling], tùy chọn) — Dict trong đó các khóa là các chế độ (modality) đượ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 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 phương tiện của bộ mã hóa đã được hợp nhất vào các nhúng văn bản.

Trả về

BaseModelOutputWithPast hoặc tuple(torch.Tensor)

Một 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 thành phần khác nhau tùy thuộc vào cấu hình (DiffusionGemmaConfig) và đầu vào.

Phương thức forward của DiffusionGemmaEncoderModel 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, người dùng 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ẽ lặng lẽ bỏ qua chú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. Để biết thêm chi tiết, hãy xem hướng dẫn về 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 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) — 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.

DiffusionGemmaEncoderTextModel

lớp transformers.DiffusionGemmaEncoderTextModel

< >

( config: DiffusionGemmaTextConfig )

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Union[torch.Tensor, dict, NoneType] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.Tensor)

Tham số

  • input_ids (torch.LongTensor có 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ừ điển. Mặc định, padding sẽ bị bỏ qua.

    Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào là gì?

  • attention_mask (Union[torch.Tensor, dict] 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ì?

  • position_ids (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng [0, config.n_positions - 1].

    ID vị trí là gì?

  • past_key_values (~cache_utils.Cache, tuỳ chọn) — Các hidden-state đã tính trước (key và value 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 được trả về bởi mô hình ở 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 instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền past_key_values, 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 past_key_values được sử dụng, người dùng được kỳ vọng chỉ nhập 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ó hình dạng (batch_size, unprocessed_length) thay vì toàn bộ input_ids có hình dạng (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 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.

Trả về

BaseModelOutputWithPast hoặc tuple(torch.Tensor)

Một 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 thành phần khác nhau tùy thuộc vào cấu hình (DiffusionGemmaConfig) và đầu vào.

Phương thức forward của DiffusionGemmaEncoderTextModel 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, người dùng 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ẽ lặng lẽ bỏ qua chú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. Để biết thêm chi tiết, hãy xem hướng dẫn về 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 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) — 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.

DiffusionGemmaDecoderModel

lớp transformers.DiffusionGemmaDecoderModel

< >

( config: DiffusionGemmaConfig )

Mô hình giải mã cho DiffusionGemma.

Xử lý các token canvas bằng self-attention hai chiều và cross-attention đến bộ nhớ đệm KV của encoder. Bộ giải mã chỉ đọc mà không cập nhật bộ nhớ đệm KV. Bỏ qua những khác biệt này, nó tương tự như DiffusionGemmaEncoderTextModel, và chúng chia sẻ tất cả các trọng số chung.

forward

< >

( decoder_input_ids: LongTensorpast_key_values: transformers.cache_utils.Cache | None = Noneself_conditioning_logits: typing.Optional[torch.Tensor] = Noneself_conditioning_mask: typing.Optional[torch.BoolTensor] = Nonedecoder_attention_mask: typing.Union[torch.Tensor, dict, NoneType] = Nonedecoder_position_ids: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.Tensor)

Tham số

  • decoder_input_ids (torch.LongTensor có hình dạng (batch_size, canvas_length)) — Các ID token cho canvas cần được tinh chỉnh.
  • past_key_values (~cache_utils.Cache, tuỳ chọn) — Các hidden-state đã tính trước (key và value 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 được trả về bởi mô hình ở 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 instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền past_key_values, 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 past_key_values được sử dụng, người dùng được kỳ vọng chỉ nhập 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ó hình dạng (batch_size, unprocessed_length) thay vì toàn bộ input_ids có hình dạng (batch_size, sequence_length).

  • self_conditioning_logits (torch.Tensor có hình dạng (batch_size, canvas_length, vocab_size), tùy chọn) — Logits tự điều kiện từ bước khử nhiễu trước đó, được sử dụng để tính các nhúng tự điều kiện.
  • self_conditioning_mask (torch.BoolTensor có shape (batch_size,), tuỳ chọn) — Mặt nạ cho từng ví dụ trên self_conditioning_logits: các ví dụ được đặt thành False sẽ nhận tín hiệu tự điều kiện bằng không, như thể không có logits nào được truyền cho chúng. Hữu ích cho việc huấn luyện, nơi tự điều kiện được bật cho từng ví dụ với một xác suất nhất định.
  • decoder_attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length+canvas_length) hoặc dict, tùy chọn) — Mặt nạ chú ý cho bộ đệm KV của bộ giải mã. Được sử dụng để chỉ định các mục đã đệm/chưa được lấp đầy trong bộ đệm KV của bộ mã hóa.
  • decoder_position_ids (torch.LongTensor có hình dạng (batch_size, canvas_length), tùy chọn) — Các ID vị trí cho các token trong canvas.

Trả về

BaseModelOutput hoặc tuple(torch.Tensor)

Một BaseModelOutput 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 thành phần khác nhau tùy thuộc vào cấu hình (DiffusionGemmaConfig) và đầu vào.

Phương thức forward của DiffusionGemmaDecoderModel 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, người dùng 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ẽ lặng lẽ bỏ qua chú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.

  • 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 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) — 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.

DiffusionGemmaForBlockDiffusion

lớp transformers.DiffusionGemmaForBlockDiffusion

< >

( config: DiffusionGemmaConfig )

Mô hình DiffusionGemma cho block diffusion. Nó gọi DiffusionGemmaModel để lấy các hidden states cho canvas đầu vào, có điều kiện bởi prompt KV cache. Sử dụng LM Head và các khối self-conditioning, nó chuyển đổi các hidden states đó thành logits để lấy mẫu canvas tiếp theo, cũng như các self-conditioning embeddings cho bước block diffusion tiếp theo.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Union[torch.Tensor, dict, NoneType] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Noneself_conditioning_logits: typing.Optional[torch.Tensor] = Noneself_conditioning_mask: typing.Optional[torch.BoolTensor] = Nonedecoder_attention_mask: typing.Union[torch.Tensor, dict, NoneType] = Nonedecoder_position_ids: typing.Optional[torch.LongTensor] = Nonemm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DiffusionGemmaBlockDiffusionOutputWithPast or tuple(torch.Tensor)

Tham số

  • input_ids (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Các ID token chưa được cache cho prompt để được mã hóa làm ngữ cảnh cho canvas.
  • attention_mask (torch.LongTensor có hình dạng (batch_size, sequence_length) hoặc dict, tùy chọn) — Mặt nạ cho các token đầu vào.
  • past_key_values (~cache_utils.Cache, tuỳ chọn) — Các hidden-state đã tính trước (key và value 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 được trả về bởi mô hình ở 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 instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền past_key_values, 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 past_key_values được sử dụng, người dùng được kỳ vọng chỉ nhập 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ó hình dạng (batch_size, unprocessed_length) thay vì toàn bộ input_ids có hình dạng (batch_size, sequence_length).

  • position_ids (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng [0, config.n_positions - 1].

    ID vị trí là gì?

  • decoder_input_ids (torch.LongTensor có hình dạng (batch_size, canvas_length), tùy chọn) — Các ID token cho canvas cần được tinh chỉnh.
  • self_conditioning_logits (torch.Tensor có hình dạng (batch_size, canvas_length, vocab_size), tùy chọn) — Logits tự điều kiện từ bước khử nhiễu trước đó, được sử dụng để tính các nhúng tự điều kiện.
  • self_conditioning_mask (torch.BoolTensor có shape (batch_size,), tuỳ chọn) — Mặt nạ cho từng ví dụ trên self_conditioning_logits: các ví dụ được đặt thành False sẽ nhận tín hiệu tự điều kiện bằng không, như thể không có logits nào được truyền cho chúng. Hữu ích cho việc huấn luyện, nơi tự điều kiện được bật cho từng ví dụ với một xác suất nhất định.
  • decoder_attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length+canvas_length) hoặc dict, tùy chọn) — Mặt nạ chú ý cho bộ đệm KV của bộ giải mã. Được sử dụng để chỉ định các mục đã đệm/chưa được lấp đầy trong bộ đệm KV của bộ mã hóa.
  • decoder_position_ids (torch.LongTensor có hình dạng (batch_size, canvas_length), tùy chọn) — Các ID vị trí cho các token trong canvas.
  • mm_encoder_outputs (dict[str, ~modeling_outputs.BaseModelOutputWithPooling], tùy chọn) — Dict trong đó các khóa là các chế độ (modality) đượ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 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 phương tiện của bộ mã hóa đã được hợp nhất vào các nhúng văn bản.

Trả về

DiffusionGemmaBlockDiffusionOutputWithPast hoặc tuple(torch.Tensor)

Một DiffusionGemmaBlockDiffusionOutputWithPast 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 thành phần khác nhau tùy thuộc vào cấu hình (DiffusionGemmaConfig) và đầu vào.

Phương thức forward của DiffusionGemmaForBlockDiffusion 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, người dùng 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ẽ lặng lẽ bỏ qua chúng.

  • loss (torch.Tensor có hình dạng (1,), tùy chọn) — Tổn mô hình hóa ngôn ngữ.

  • logits (torch.Tensor có hình dạng (batch_size, canvas_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 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. Để biết thêm chi tiết, hãy xem hướng dẫn về 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 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) — 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.

  • encoder_last_hidden_state (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Chuỗi các trạng thái ẩn tại đầu ra của lớp cuối cùng của bộ mã hóa. Chỉ được đặt khi input_ids được cung cấp, ví dụ để tính toán tổn thất tự hồi quy trên bộ mã hóa trong quá trình huấn luyện.

Ví dụ:

>>> from PIL import Image
>>> from transformers import AutoProcessor, DiffusionGemmaForBlockDiffusion

>>> model = DiffusionGemmaForBlockDiffusion.from_pretrained("google/diffusiongemma-26B-A4B-it")
>>> processor = AutoProcessor.from_pretrained("google/diffusiongemma-26B-A4B-it")

>>> 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]
Update on GitHub