Transformers 文档

Gemma

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

此模型于 2024-03-13 发布,并于 2024-02-21 添加到 Hugging Face Transformers。

PyTorch FlashAttention SDPA Tensor parallelism

Gemma

Gemma 是一系列轻量级语言模型,具有预训练和指令微调版本,参数量为 2B 和 7B。其架构基于仅解码器的 Transformer 设计。它具有多查询注意力 (Multi-Query Attention)、旋转位置嵌入 (RoPE)、GeGLU 激活函数和 RMSNorm 层归一化。

指令微调版本通过在指令遵循数据上进行监督学习进行微调,然后通过人类反馈强化学习 (RLHF) 来使模型输出与人类偏好保持一致。

您可以在 Gemma 发布页面找到所有原始 Gemma 检查点。

点击右侧边栏的 Gemma 模型,以获取更多关于如何将 Gemma 应用于不同语言任务的示例。

下面的示例演示了如何使用 PipelineAutoModel 类,以及从命令行生成文本。

流水线
自动模型
Transformers CLI
import torch
from transformers import pipeline

pipeline = pipeline(
    task="text-generation",
    model="google/gemma-2b",
    dtype=torch.bfloat16,
    device_map="auto",
)

pipeline("LLMs generate text through a process known as", max_new_tokens=50)

量化通过以较低精度表示权重来减少大型模型的内存负担。有关更多可用量化后端,请参阅量化概述。

以下示例使用 bitsandbytes 将权重仅量化为 int4。

#!pip install bitsandbytes
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig

quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.bfloat16,
    bnb_4bit_quant_type="nf4"
)
tokenizer = AutoTokenizer.from_pretrained("google/gemma-7b")
model = AutoModelForCausalLM.from_pretrained(
    "google/gemma-7b",
    quantization_config=quantization_config,
    device_map="auto",
    attn_implementation="sdpa"
)

input_text = "LLMs generate text through a process known as."
input_ids = tokenizer(input_text, return_tensors="pt").to(model.device)
outputs = model.generate(
    **input_ids,
    max_new_tokens=50,
    cache_implementation="static"
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

使用 AttentionMaskVisualizer 可以更好地了解模型可以关注哪些 token,不能关注哪些 token。

from transformers.utils.attention_visualizer import AttentionMaskVisualizer

visualizer = AttentionMaskVisualizer("google/gemma-2b")
visualizer("LLMs generate text through a process known as")

注意事项

  • 原始 Gemma 模型支持许多基于 Transformer 的语言模型中使用的标准 kv 缓存。您可以在生成过程中使用默认的 DynamicCache 实例或张量元组来存储过去的键值。这使其与典型的自回归生成工作流兼容。

    import torch
    from transformers import AutoTokenizer, AutoModelForCausalLM, DynamicCache
    
    tokenizer = AutoTokenizer.from_pretrained("google/gemma-2b")
    model = AutoModelForCausalLM.from_pretrained(
        "google/gemma-2b",
        dtype=torch.bfloat16,
        device_map="auto",
        attn_implementation="sdpa"
    )
    input_text = "LLMs generate text through a process known as"
    input_ids = tokenizer(input_text, return_tensors="pt").to(model.device)
    past_key_values = DynamicCache(config=model.config)
    outputs = model.generate(**input_ids, max_new_tokens=50, past_key_values=past_key_values)
    print(tokenizer.decode(outputs[0], skip_special_tokens=True))

GemmaConfig

class transformers.GemmaConfig

< >

( vocab_size: int | None = 256000 hidden_size: int | None = 3072 intermediate_size: int | None = 24576 num_hidden_layers: int | None = 28 num_attention_heads: int | None = 16 num_key_value_heads: int | None = 16 head_dim: int | None = 256 hidden_act: str | None = 'gelu_pytorch_tanh' max_position_embeddings: int | None = 8192 initializer_range: float | None = 0.02 rms_norm_eps: int | None = 1e-06 use_cache: bool | None = True pad_token_id: int | None = 0 eos_token_id: int | None = 1 bos_token_id: int | None = 2 tie_word_embeddings: bool | None = True rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict[str, transformers.modeling_rope_utils.RopeParameters] | None = None attention_bias: bool | None = False attention_dropout: float | None = 0.0 use_bidirectional_attention: bool | None = None **kwargs )

参数

  • vocab_size (int, optional, defaults to 256000) — Gemma 模型词汇量大小。定义调用 GemmaModel 时传入的 inputs_ids 可以表示的不同 token 的数量。
  • hidden_size (int, optional, defaults to 3072) — 隐藏表示的维度。
  • intermediate_size (int, optional, defaults to 24576) — MLP 的维度。
  • num_hidden_layers (int, optional, defaults to 28) — Transformer 解码器中的隐藏层数量。
  • num_attention_heads (int, optional, defaults to 16) — Transformer 解码器中每个注意力层的注意力头数量。
  • num_key_value_heads (int, optional, defaults to 16) — 这是实现分组查询注意力 (Grouped Query Attention) 所需的 key_value 头数。如果 num_key_value_heads=num_attention_heads,模型将使用多头注意力 (MHA);如果 num_key_value_heads=1,模型将使用多查询注意力 (MQA),否则使用 GQA。在将多头检查点转换为 GQA 检查点时,每个组的键和值头应通过平均池化组内所有原始头来构建。更多细节请参见 此论文。如果未指定,将默认为 num_attention_heads
  • head_dim (int, optional, defaults to 256) — 注意力头的维度。
  • hidden_act (str or function, optional, defaults to "gelu_pytorch_tanh") — 遗留的激活函数。它将被 hidden_activation 覆盖。
  • max_position_embeddings (int, optional, defaults to 8192) — 该模型可能使用的最大序列长度。
  • initializer_range (float, optional, defaults to 0.02) — 初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • rms_norm_eps (float, optional, defaults to 1e-06) — rms 归一化层使用的 epsilon。
  • use_cache (bool, optional, defaults to True) — 模型是否应返回最后一个键/值注意力(并非所有模型都使用)。仅当 config.is_decoder=True 时相关。
  • pad_token_id (int, optional, defaults to 0) — 填充 token ID。
  • eos_token_id (int, optional, defaults to 1) — End of stream token ID。
  • bos_token_id (int, optional, defaults to 2) — Beginning of stream token ID。
  • tie_word_embeddings (bool, optional, defaults to True) — 是否绑定词嵌入。
  • rope_parameters (RopeParameters, optional) — 包含 RoPE 嵌入配置参数的字典。该字典应包含 rope_theta 的值,以及用于缩放的参数(如果您想使用 RoPE 并具有更长的 max_position_embeddings)。
  • attention_bias (bool, defaults to False, optional, defaults to False) — 在自注意力机制的查询、键、值和输出投影层中是否使用偏置。
  • attention_dropout (float, optional, defaults to 0.0) — 注意力概率的 dropout 比率。
  • use_bidirectional_attention (bool, optional) — 如果为 True,则模型将注意所有文本 token 而不是使用因果掩码。

这是用于存储GemmaModel配置的配置类。它用于根据指定的参数实例化一个 Gemma 模型,定义模型的架构。使用默认值实例化一个配置将产生一个与 Gemma-7B 相似的配置,例如 google/gemma-7b。配置对象继承自 PreTrainedConfig,可用于控制模型的输出。有关更多信息,请阅读 PreTrainedConfig 的文档。

>>> from transformers import GemmaModel, GemmaConfig
>>> # Initializing a Gemma gemma-7b style configuration
>>> configuration = GemmaConfig()
>>> # Initializing a model from the gemma-7b style configuration
>>> model = GemmaModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config

GemmaTokenizer

class transformers.GemmaTokenizer

< >

( vocab: str | dict[str, int] | None = None merges: str | list[str] | None = None unk_token: str = '<unk>' bos_token: str = '<bos>' eos_token: str = '<eos>' pad_token: str = '<pad>' mask_token: str = '<mask>' **kwargs: )

参数

  • tokenizer_file (str, 可选) — 包含分词器序列化的 tokenizers JSON 文件。
  • unk_token (str, 可选,默认为 ””) — 未知标记。
  • bos_token (str, 可选,默认为 ””) — 序列起始标记。
  • eos_token (str, 可选,默认为 ””) — 序列结束标记。
  • pad_token (str, 可选,默认为 ””) — 填充标记。
  • mask_token (str, 可选,默认为 ””) — 掩码标记。
  • add_bos_token (bool, 可选,默认为 True) — 是否在序列开头添加 bos_token
  • add_eos_token (bool, 可选,默认为 False) — 是否在序列末尾添加 eos_token
  • vocab (strdict[str, int], 可选) — 自定义词汇表字典。如果未提供,则使用特殊标记创建一个最小词汇表。

构建一个快速的 Gemma 分词器(由 HuggingFace 的 tokenizers 库支持)。

此分词器使用带有字节回退的 BPE 模型,没有前缀空格,并使用一个将空格替换为 ”▁“ 的规范化器。

GemmaTokenizerFast

class transformers.GemmaTokenizer

< >

( vocab: str | dict[str, int] | None = None merges: str | list[str] | None = None unk_token: str = '<unk>' bos_token: str = '<bos>' eos_token: str = '<eos>' pad_token: str = '<pad>' mask_token: str = '<mask>' **kwargs: )

参数

  • tokenizer_file (str, 可选) — 包含分词器序列化的 tokenizers JSON 文件。
  • unk_token (str, 可选,默认为 ””) — 未知标记。
  • bos_token (str, 可选,默认为 ””) — 序列起始标记。
  • eos_token (str, 可选,默认为 ””) — 序列结束标记。
  • pad_token (str, 可选,默认为 ””) — 填充标记。
  • mask_token (str, 可选,默认为 ””) — 掩码标记。
  • add_bos_token (bool, 可选,默认为 True) — 是否在序列开头添加 bos_token
  • add_eos_token (bool, 可选,默认为 False) — 是否在序列末尾添加 eos_token
  • vocab (strdict[str, int], 可选) — 自定义词汇表字典。如果未提供,则使用特殊标记创建一个最小词汇表。

构建一个快速的 Gemma 分词器(由 HuggingFace 的 tokenizers 库支持)。

此分词器使用带有字节回退的 BPE 模型,没有前缀空格,并使用一个将空格替换为 ”▁“ 的规范化器。

GemmaModel

class transformers.GemmaModel

< >

( config: GemmaConfig )

参数

  • config (GemmaConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只加载配置。请查看 from_pretrained() 方法以加载模型权重。

输出原始隐藏状态而没有在顶层添加任何特定头的裸 Gemma 模型。

此模型继承自 PreTrainedModel。查看其父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头等)。

此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。

forward

< >

( input_ids: torch.LongTensor | None = None attention_mask: torch.Tensor | None = None position_ids: torch.LongTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None inputs_embeds: torch.FloatTensor | None = None use_cache: bool | None = None cache_position: torch.LongTensor | None = None **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] ) transformers.modeling_outputs.BaseModelOutputWithPasttuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为 (batch_size, sequence_length), 可选) — 输入序列标记在词汇表中的索引。默认情况下会忽略填充。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是输入 ID?

  • attention_mask (torch.Tensor,形状为 (batch_size, sequence_length), 可选) — 用于避免对填充标记索引执行注意力的掩码。掩码值在 [0, 1] 中选择:
    • 未掩码 的标记为 1,
    • 被掩码 的标记为 0。

    什么是注意力掩码?

  • position_ids (torch.LongTensor,形状为 (batch_size, sequence_length), 可选) — 每个输入序列标记在位置嵌入中的索引。选择范围在 [0, config.n_positions - 1]

    什么是位置 ID?

  • past_key_values (~cache_utils.Cache, 可选) — 可以在顺序解码中加速的预计算隐藏状态(自注意力块和交叉注意力块中的键和值)。这通常包括在解码的先前阶段(当 use_cache=Trueconfig.use_cache=True 时)模型返回的 past_key_values

    只允许使用 Cache 实例,请参阅我们的 KV 缓存指南。如果未传递 past_key_values,则默认初始化 DynamicCache

    模型将输出与输入相同的缓存格式。

    如果使用 past_key_values,则期望用户只输入未处理的 input_ids(未将过去的键值状态传递给此模型的部分),形状为 (batch_size, unprocessed_length),而不是所有 input_ids 的形状 (batch_size, sequence_length)

  • inputs_embeds (torch.FloatTensor,形状为 (batch_size, sequence_length, hidden_size), 可选) — 可选地,您可以选择直接传入嵌入表示,而不是传入 input_ids。当您想比模型的内部嵌入查找矩阵对如何将 input_ids 索引转换为相关向量有更多控制时,这很有用。
  • use_cache (bool, 可选) — 如果设置为 True,将返回 past_key_values 键值状态,可用于加速解码(参见 past_key_values)。
  • cache_position (torch.LongTensor,形状为 (sequence_length), 可选) — 指示输入序列标记在序列中位置的索引。与 position_ids 不同,此张量不受填充的影响。它用于以正确的位置更新缓存并推断完整的序列长度。

返回

transformers.modeling_outputs.BaseModelOutputWithPast or tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BaseModelOutputWithPasttorch.FloatTensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),其中包含根据配置(GemmaConfig)和输入而变化的各种元素。

  • last_hidden_state (torch.FloatTensor, 形状为 (batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。

    如果使用了 past_key_values,则只输出形状为 (batch_size, 1, hidden_size) 的序列的最后一个隐藏状态。

  • past_key_values (Cache, optional, 当传递 use_cache=True 或当 config.use_cache=True 时返回) — 它是 Cache 实例。更多详情,请参阅我们的 kv cache 指南

    Contains pre-computed hidden-states (key and values in the self-attention blocks and optionally if config.is_encoder_decoder=True in the cross-attention blocks) that can be used (see past_key_values input) to speed up sequential decoding.

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(一个用于嵌入层的输出,如果模型有嵌入层;+一个用于每个层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每个层输出的隐藏状态以及可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), optional, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — torch.FloatTensor 的元组(每个层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

GemmaModel 的前向方法,覆盖了 __call__ 特殊方法。

虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用 Module 实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

GemmaForCausalLM

class transformers.GemmaForCausalLM

< >

( config model_args: ~utils.generic.ModelArgs | None = None adapter_args: ~utils.generic.AdapterArgs | None = None lora_args: ~utils.generic.LoRAArgs | None = None tokenizer_args: ~utils.generic.TokenizerArgs | None = None dataset_args: ~utils.generic.DatasetArgs | None = None data_args: ~utils.generic.DataArgs | None = None training_args: ~utils.generic.TrainingArgs | None = None generation_args: ~utils.generic.GenerationArgs | None = None vision_tower_args: ~utils.generic.VisionTowerArgs | None = None qlora_args: ~utils.generic.QLoRAArgs | None = None vision_tower_template_args: ~utils.generic.VisionTowerTemplateArgs | None = None video_tower_args: ~utils.generic.VideoTowerArgs | None = None vision_config: ~utils.generic.VisionConfig | None = None video_config: ~utils.generic.VideoConfig | None = None load_dataset: bool | None = None load_data_collator: bool | None = None load_processor: bool | None = None load_lora_adapter: bool | None = None load_adapter: bool | None = None load_qlora_adapter: bool | None = None **kwargs: typing_extensions.Unpack[transformers.modeling_utils.PreTrainedModelKwargs] )

参数

  • config (GemmaForCausalLM) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。请查看 from_pretrained() 方法来加载模型权重。

Gemma 模型用于因果语言建模。

此模型继承自 PreTrainedModel。查看其父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头等)。

此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。

forward

< >

( input_ids: torch.LongTensor | None = None attention_mask: torch.Tensor | None = None position_ids: torch.LongTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None inputs_embeds: torch.FloatTensor | None = None labels: torch.LongTensor | None = None use_cache: bool | None = None cache_position: torch.LongTensor | None = None logits_to_keep: int | torch.Tensor = 0 **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] ) transformers.modeling_outputs.CausalLMOutputWithPasttuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 词汇表中输入序列 token 的索引。默认情况下,填充将被忽略。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    输入 ID 是什么?

  • attention_mask (torch.Tensor of shape (batch_size, sequence_length), optional) — 用于避免对填充 token 索引执行注意力操作的掩码。掩码值选择在 [0, 1]

    • 1 表示未被掩盖的 token,
    • 0 表示被掩盖的 token。

    注意力掩码是什么?

  • position_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 词汇表中每个输入序列 token 的位置索引。选择范围为 [0, config.n_positions - 1]

    位置 ID 是什么?

  • past_key_values (~cache_utils.Cache, optional) — 可用于加速顺序解码的预计算隐藏状态(自注意力块和交叉注意力块中的键值)。这通常包括在 use_cache=Trueconfig.use_cache=True 时,模型在先前解码阶段返回的 past_key_values

    只有 Cache 实例允许作为输入,请参阅我们的 kv cache 指南。如果未传递 past_key_values,则默认会初始化 DynamicCache

    模型将输出与输入相同的缓存格式。

    如果使用 past_key_values,则用户应仅输入未处理的 input_ids(即未提供过去键值状态的模型)的形状为 (batch_size, unprocessed_length),而不是全部 input_ids 的形状 (batch_size, sequence_length)

  • inputs_embeds (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size), optional) — 备选方案:您可以直接传入嵌入表示,而不是传递 input_ids。如果您希望比模型内部的嵌入查找矩阵拥有更多控制权来将 input_ids 索引转换为相关的向量,则此选项很有用。
  • labels (torch.LongTensor of shape (batch_size, sequence_length), optional) — 用于计算掩码语言模型损失的标签。索引应为 [0, ..., config.vocab_size] 或 -100(请参阅 input_ids 文档字符串)。索引设置为 -100 的 token 将被忽略(掩盖),损失仅针对标签在 [0, ..., config.vocab_size] 范围内的 token 计算。
  • use_cache (bool, optional) — 如果设置为 True,则会返回 past_key_values 键值状态,并可用于加速解码(请参阅 past_key_values)。
  • cache_position (torch.LongTensor of shape (sequence_length), optional) — 指示输入序列 token 在序列中位置的索引。与 position_ids 不同,此张量不受填充的影响。它用于在正确的位置更新缓存并推断完整的序列长度。
  • logits_to_keep (Union[int, torch.Tensor], optional, defaults to 0) — 如果是 int,则计算最后 logits_to_keep 个 token 的 logits。如果为 0,则计算所有 input_ids 的 logits(特殊情况)。生成过程只需要最后一个 token 的 logits,并且只为该 token 计算 logits 可以节省内存,这对于长序列或大词汇量非常重要。如果是 torch.Tensor,则必须是一维的,对应于序列长度维度中要保留的索引。当使用打包张量格式(批次和序列长度的单维)时,这很有用。

返回

transformers.modeling_outputs.CausalLMOutputWithPast or tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.CausalLMOutputWithPast 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),其中包含根据配置(GemmaConfig)和输入而变化的各种元素。

  • loss (torch.FloatTensor 形状为 (1,)可选,当提供 labels 时返回) — 语言建模损失(用于下一个 token 预测)。

  • logits (形状为 (batch_size, sequence_length, config.vocab_size)torch.FloatTensor) — 语言建模头部的预测分数(SoftMax 之前的每个词汇标记的分数)。

  • past_key_values (Cache, optional, 当传递 use_cache=True 或当 config.use_cache=True 时返回) — 它是 Cache 实例。更多详情,请参阅我们的 kv cache 指南

    包含预计算的隐藏状态(自注意力块中的键和值),可用于(参见 past_key_values 输入)加速顺序解码。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(一个用于嵌入层的输出,如果模型有嵌入层;+一个用于每个层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每个层输出的隐藏状态以及可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), optional, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — torch.FloatTensor 的元组(每个层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

transformers.GemmaForCausalLMforward 方法,覆盖了 __call__ 特殊方法。

虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用 Module 实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

示例

>>> from transformers import AutoTokenizer, GemmaForCausalLM

>>> model = GemmaForCausalLM.from_pretrained("google/gemma-7b")
>>> tokenizer = AutoTokenizer.from_pretrained("google/gemma-7b")

>>> 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?"

GemmaForSequenceClassification

class transformers.GemmaForSequenceClassification

< >

( config )

forward

< >

( input_ids: torch.LongTensor | None = None attention_mask: torch.Tensor | None = None position_ids: torch.LongTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None inputs_embeds: torch.FloatTensor | None = None labels: torch.LongTensor | None = None use_cache: bool | None = None **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] ) transformers.modeling_outputs.SequenceClassifierOutputWithPasttuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 词汇表中输入序列 token 的索引。默认情况下,填充将被忽略。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    输入 ID 是什么?

  • attention_mask (torch.Tensor of shape (batch_size, sequence_length), optional) — 用于避免对填充 token 索引执行注意力操作的掩码。掩码值选择在 [0, 1]

    • 1 表示未被掩盖的 token,
    • 0 表示被掩盖的 token。

    注意力掩码是什么?

  • position_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 词汇表中每个输入序列 token 的位置索引。选择范围为 [0, config.n_positions - 1]

    位置 ID 是什么?

  • past_key_values (~cache_utils.Cache, optional) — 可用于加速顺序解码的预计算隐藏状态(自注意力块和交叉注意力块中的键值)。这通常包括在 use_cache=Trueconfig.use_cache=True 时,模型在先前解码阶段返回的 past_key_values

    只有 Cache 实例允许作为输入,请参阅我们的 kv cache 指南。如果未传递 past_key_values,则默认会初始化 DynamicCache

    模型将输出与输入相同的缓存格式。

    如果使用 past_key_values,则用户应仅输入未处理的 input_ids(即未提供过去键值状态的模型)的形状为 (batch_size, unprocessed_length),而不是全部 input_ids 的形状 (batch_size, sequence_length)

  • inputs_embeds (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size), optional) — 备选方案:您可以直接传入嵌入表示,而不是传递 input_ids。如果您希望比模型内部的嵌入查找矩阵拥有更多控制权来将 input_ids 索引转换为相关的向量,则此选项很有用。
  • labels (torch.LongTensor of shape (batch_size, sequence_length), optional) — 用于计算掩码语言模型损失的标签。索引应为 [0, ..., config.vocab_size] 或 -100(请参阅 input_ids 文档字符串)。索引设置为 -100 的 token 将被忽略(掩盖),损失仅针对标签在 [0, ..., config.vocab_size] 范围内的 token 计算。
  • use_cache (bool, optional) — 如果设置为 True,则会返回 past_key_values 键值状态,并可用于加速解码(请参阅 past_key_values)。

返回

transformers.modeling_outputs.SequenceClassifierOutputWithPasttuple(torch.FloatTensor)

A transformers.modeling_outputs.SequenceClassifierOutputWithPast or a tuple of torch.FloatTensor (if return_dict=False is passed or when config.return_dict=False) comprising various elements depending on the configuration (None) and inputs.

  • loss (形状为 (1,)torch.FloatTensor可选,当提供 labels 时返回) — 分类损失(如果 config.num_labels==1,则为回归损失)。

  • logits (形状为 (batch_size, config.num_labels)torch.FloatTensor) — 分类(如果 config.num_labels==1,则为回归)分数(SoftMax 之前)。

  • past_key_values (Cache, optional, 当传递 use_cache=True 或当 config.use_cache=True 时返回) — 它是 Cache 实例。更多详情,请参阅我们的 kv cache 指南

    包含预计算的隐藏状态(自注意力块中的键和值),可用于(参见 past_key_values 输入)加速顺序解码。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(一个用于嵌入层的输出,如果模型有嵌入层;+一个用于每个层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每个层输出的隐藏状态以及可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), optional, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — torch.FloatTensor 的元组(每个层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

The GenericForSequenceClassification forward method, overrides the __call__ special method.

虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用 Module 实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

GemmaForTokenClassification

class transformers.GemmaForTokenClassification

< >

( config )

forward

< >

( input_ids: torch.LongTensor | None = None attention_mask: torch.Tensor | None = None position_ids: torch.LongTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None inputs_embeds: torch.FloatTensor | None = None labels: torch.LongTensor | None = None use_cache: bool | None = None **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] ) transformers.modeling_outputs.TokenClassifierOutputtuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 词汇表中输入序列 token 的索引。默认情况下会忽略填充。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是输入 ID?

  • attention_mask (torch.Tensor of shape (batch_size, sequence_length), optional) — 用于避免在填充 token 索引上执行注意力操作的掩码。掩码值选择在 [0, 1] 中:

    • 1 表示未被掩码的 token,
    • 0 表示被掩码的 token。

    什么是注意力掩码?

  • position_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 输入序列中每个 token 在位置嵌入中的索引。选择范围为 [0, config.n_positions - 1]

    什么是位置 ID?

  • past_key_values (~cache_utils.Cache, optional) — 可用于加速顺序解码的预计算隐藏状态(自注意力块和交叉注意力块中的键值)。这通常包括在 use_cache=Trueconfig.use_cache=True 时,在模型的先前解码阶段返回的 past_key_values

    仅允许使用 Cache 实例,请参阅我们的 kv cache 指南。如果未传入 past_key_values,则默认初始化 DynamicCache

    模型将输出与输入相同的缓存格式。

    如果使用 past_key_values,用户应仅输入未处理的 input_ids(其 past key value 状态未传递给此模型的那些),形状为 (batch_size, unprocessed_length),而不是所有 input_ids,形状为 (batch_size, sequence_length)

  • inputs_embeds (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size), optional) — 或者,您可以选择直接传递嵌入表示,而不是传递 input_ids。如果您想比模型内部的嵌入查找矩阵更精确地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。
  • labels (torch.LongTensor of shape (batch_size, sequence_length), optional) — 用于计算掩码语言模型损失的标签。索引应在 [0, ..., config.vocab_size] 或 -100(请参阅 input_ids 文档字符串)范围内。索引设置为 -100 的 token 被忽略(掩码),仅为标签在 [0, ..., config.vocab_size] 范围内的 token 计算损失。
  • use_cache (bool, optional) — 如果设置为 True,则返回 past_key_values 键值状态,并可用于加速解码(请参阅 past_key_values)。

返回

transformers.modeling_outputs.TokenClassifierOutputtuple(torch.FloatTensor)

A transformers.modeling_outputs.TokenClassifierOutput or a tuple of torch.FloatTensor (if return_dict=False is passed or when config.return_dict=False) comprising various elements depending on the configuration (None) and inputs.

  • loss (形状为 (1,)torch.FloatTensor可选,当提供 labels 时返回) — 分类损失。

  • logits (形状为 (batch_size, sequence_length, config.num_labels)torch.FloatTensor) — 分类分数(SoftMax 之前)。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(一个用于嵌入层的输出,如果模型有嵌入层;+一个用于每个层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每个层输出的隐藏状态以及可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), optional, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — torch.FloatTensor 的元组(每个层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

The GenericForTokenClassification forward method, overrides the __call__ special method.

虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用 Module 实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.