Transformers 文档

Zamba2

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Zamba2

PyTorch FlashAttention SDPA

Zamba2 是由 Zyphra 训练的大型语言模型 (LLM),并根据 Apache 2.0 许可证提供。请参阅 Zyphra Hugging Face 仓库以获取模型权重。

此模型由 pglo 贡献。

模型详情

Zamba2-1.2B、Zamba2-2.7B 和 Zamba2-7B 是混合模型,结合了状态空间模型(特别是 Mamba)和 Transformer,并使用下一个 token 预测进行训练。Zamba2 在每 6 个 Mamba 模块后使用共享的 Transformer 层。它使用 Mistral v0.1 分词器。我们在小规模的消融研究后得出了这种架构。Zamba2-1.2B、Zamba2-2.7B 和 Zamba2-7B 分别在 2T 和 3T tokens 上进行了预训练。

快速开始

先决条件

Zamba2 要求您使用 transformers 版本 4.48.0 或更高版本

pip install transformers>=4.48.0

推理

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

tokenizer = AutoTokenizer.from_pretrained("Zyphra/Zamba2-7B")
model = AutoModelForCausalLM.from_pretrained("Zyphra/Zamba2-7B", device_map="cuda", torch_dtype=torch.bfloat16)

input_text = "What factors contributed to the fall of the Roman Empire?"
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")

outputs = model.generate(**input_ids, max_new_tokens=100)
print(tokenizer.decode(outputs[0]))

模型卡片

模型卡片可以在以下位置找到

问题

对于模型输出问题或社区讨论,请使用 Hugging Face 社区论坛

许可证

模型权重通过 Apache 2.0 许可证开源。

Zamba2Config

class transformers.Zamba2Config

< >

( vocab_size = 32000 max_position_embeddings = 4096 hidden_size = 2560 num_hidden_layers = 54 layers_block_type = None mamba_d_state = 64 mamba_d_conv = 4 mamba_expand = 2 mamba_ngroups = 1 time_step_min = 0.001 time_step_max = 0.1 time_step_floor = 0.0001 time_step_limit = None n_mamba_heads = 8 use_conv_bias = True chunk_size = 256 use_mem_eff_path = False add_bias_linear = False intermediate_size = None hidden_act = 'gelu' num_attention_heads = 32 num_key_value_heads = None attention_dropout = 0.0 num_mem_blocks = 1 use_shared_attention_adapter = False adapter_rank = 128 use_mem_rope = False rope_theta = 10000 initializer_range = 0.02 rms_norm_eps = 1e-05 use_cache = True num_logits_to_keep = 1 pad_token_id = 0 bos_token_id = 1 eos_token_id = 2 use_long_context = False **kwargs )

参数

  • vocab_size (int, 可选, 默认为 32000) — Zamba2 模型的词汇表大小。定义了在调用 Zamba2Model 时,由 inputs_ids 传递的可表示的不同 tokens 的数量
  • max_position_embeddings (int, 可选, 默认为 4096) — 此模型可能使用的最大序列长度。
  • hidden_size (int, 可选, 默认为 2560) — 隐藏层表示的维度。
  • num_hidden_layers (int, 可选, 默认为 54) — 模型中的隐藏层数。
  • layers_block_type (list, 可选) — 层类型的列表,可以是 “mamba” 或 “hybrid”。
  • mamba_d_state (int, 可选, 默认为 64) — 状态空间潜在变量的形状。
  • mamba_d_conv (int, 可选, 默认为 4) — 卷积核的大小。
  • mamba_expand (int, 可选, 默认为 2) — 用于确定中间大小的扩展因子。
  • mamba_ngroups (int, 可选, 默认为 1) — mamba 2 的演化矩阵的组数。
  • time_step_min (float, 可选, 默认为 0.001) — 用于限制 dt_proj.bias 的最小值 time_step
  • time_step_max (float, 可选, 默认为 0.1) — 用于限制 dt_proj.bias 的最大值 time_step
  • time_step_floor (float, 可选, 默认为 0.0001) — dt_proj.bias 层初始化的最小钳制值。
  • time_step_limit (tuple, 可选) — 接受的时间步长值范围。
  • n_mamba_heads (int, 可选, 默认为 8) — mamba 2 的演化矩阵的头数。
  • use_conv_bias (bool, 可选, 默认为 True) — 是否在混合器块的卷积层中使用偏置。
  • chunk_size (int, 可选, 默认为 256) — 将构成序列的块的大小。
  • use_mem_eff_path (bool, 可选, 默认为 False) — 是否在 mamba2 层中使用融合的 conv1d 和 scan。
  • add_bias_linear (bool, 可选, 默认为 False) — 指示是否在各种层中使用偏置的标志
  • intermediate_size (int, 可选, 默认为 4 * hidden_size) — MLP 表示的维度。
  • hidden_act (str, 可选, 默认为 "gelu") — MLP 中的非线性激活函数(函数或字符串)。
  • num_attention_heads (int, 可选, 默认为 32) — Transformer 解码器中每个注意力层的注意力头数。
  • num_key_value_heads (int, 可选) — 这是应用于实现分组查询注意力 (Grouped Query Attention) 的 key_value 头部的数量。如果 num_key_value_heads=None,模型将使用多头注意力 (Multi Head Attention, MHA);如果 num_key_value_heads=1,模型将使用多查询注意力 (Multi Query Attention, MQA);否则将使用 GQA。当将多头检查点转换为 GQA 检查点时,每个组的 key 和 value 头部应通过平均池化该组内的所有原始头部来构建。有关更多详细信息,请查看 本文
  • attention_dropout (float, 可选, 默认为 0.0) — 注意力概率的 dropout 比率。
  • num_mem_blocks (int, 可选, 默认为 1) — 非共享 Transformer 块的数量。
  • use_shared_attention_adapter (bool, 可选, 默认为 False) — 如果为 True,则非共享适配器(形式上与 LoRA 相同,但在基础模型中使用)将被添加到共享注意力层中的 q、k、v 投影层。
  • adapter_rank (int, 可选, 默认为 128) — 共享 MLP 和共享注意力层中适配器的秩。
  • use_mem_rope (bool, 可选, 默认为 False) — 如果为 True,则在共享注意力层中包含 RoPE。
  • rope_theta (float, 可选, 默认为 10000.0) — RoPE 嵌入的基础周期。
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • rms_norm_eps (float, 可选, 默认为 1e-05) — RMS 归一化层使用的 epsilon 值。
  • use_cache (bool, 可选, 默认为 True) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。仅当 config.is_decoder=True 时相关。
  • num_logits_to_keep (intNone, 可选, 默认为 1) — 生成期间要计算的 prompt logits 的数量。如果为 None,将计算所有 logits。如果为整数值,则仅计算最后 num_logits_to_keep 个 logits。默认为 1,因为生成只需要最后一个 prompt token 的 logits。对于长序列,整个序列的 logits 可能会占用大量内存,因此,设置 num_logits_to_keep=1 将显著减少内存占用。
  • pad_token_id (int, 可选, 默认为 0) — padding token 的 id。
  • bos_token_id (int, 可选, 默认为 1) — “sequence 的开始” token 的 id。
  • eos_token_id (int, 可选, 默认为 2) — “sequence 的结束” token 的 id。
  • use_long_context (bool, 可选, 默认为 False) — 通过修改 RoPE 激活 Zamba 的上下文扩展版本。

这是用于存储 Zamba2Model 配置的配置类。它用于根据指定的参数实例化 Zamba2 模型,定义模型架构。使用默认值实例化配置将产生与 Zamba2 模型类似的配置。

Zyphra/Zamba2-2.7B

配置对象继承自 PretrainedConfig,可用于控制模型输出。有关更多信息,请阅读 PretrainedConfig 中的文档。

>>> from transformers import Zamba2Model, Zamba2Config
>>> # Initializing a Zamba2-2.7B style configuration
>>> configuration = Zamba2Config()
>>> # Initializing a model from the Zamba2-2.7B style configuration
>>> model = Zamba2Model(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config

Zamba2Model

class transformers.Zamba2Model

< >

( config: Zamba2Config )

参数

  • config (Zamba2Config) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
  • config — Zamba2Config

裸 Zamba2 模型,输出原始隐藏状态,顶部没有任何特定的 head。此模型继承自 PreTrainedModel。查看超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入 embedding 大小、剪枝 head 等)。

此模型也是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档,了解与一般用法和行为相关的所有事项。

config.num_hidden_layers 层组成的模型。

forward

< >

( input_ids: LongTensor = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[transformers.models.zamba2.modeling_zamba2.Zamba2HybridDynamicCache] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None cache_position: typing.Optional[torch.LongTensor] = None )

参数

  • input_ids (torch.LongTensor,形状为 (batch_size, sequence_length)) — 词汇表中输入序列 token 的索引。如果您提供 padding,默认情况下 padding 将被忽略。

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

    什么是 input IDs?

  • attention_mask (torch.Tensor,形状为 (batch_size, sequence_length), 可选) — Mask,用于避免对 padding token 索引执行 attention。Mask 值在 [0, 1] 中选择:

    • 1 表示 token 未被 mask
    • 0 表示 token 已被 mask

    什么是 attention masks?

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

    如果使用 past_key_values,则可以选择仅输入最后一个 input_ids(请参阅 past_key_values)。

    如果您想更改 padding 行为,您应该阅读 modeling_opt._prepare_decoder_attention_mask 并根据您的需要进行修改。有关默认策略的更多信息,请参阅 论文 中的图 1。

    • 1 表示 head 未被 mask
    • 0 表示 head 已被 mask
  • position_ids (torch.LongTensor,形状为 (batch_size, sequence_length), 可选) — 位置 embedding 中每个输入序列 token 的位置索引。在范围 [0, config.n_positions - 1] 中选择。

    什么是 position IDs?

  • past_key_values (Zamba2HybridDynamicCache, 可选, 当传递 use_cache=Trueconfig.use_cache=True 时返回) — 一个 Zamba2HybridDynamicCache 对象,其中包含预先计算的隐藏状态(自注意力模块中的键和值,以及 Mamba 模块中的卷积和 SSM 状态),这些状态可以用于(请参阅 past_key_values 输入)加速顺序解码。键和值缓存张量的形状为 (batch_size, num_heads, seq_len, head_dim)。卷积和 SSM 状态张量的形状分别为 (batch_size, d_inner, d_conv)(batch_size, d_inner, d_state)。有关更多详细信息,请参阅 Zamba2HybridDynamicCache 类。

    如果使用 past_key_values,用户可以选择仅输入最后一个 input_ids(那些没有将其 past key value 状态提供给此模型的 input_ids),形状为 (batch_size, 1),而不是形状为 (batch_size, sequence_length) 的所有 input_ids

  • inputs_embeds (torch.FloatTensor,形状为 (batch_size, sequence_length, hidden_size), 可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递 input_ids。如果您希望比模型的内部 embedding 查找矩阵更精细地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。
  • use_cache (bool, 可选) — 如果设置为 True,则返回 past_key_values 键值状态,并且可以用于加速解码(请参阅 past_key_values)。
  • output_attentions (bool, 可选) — 是否返回所有 attention 层的 attentions 张量。 有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是纯粹的元组。
  • cache_position (torch.LongTensor,形状为 (sequence_length)可选) — 索引,描述输入序列 token 在序列中的位置。与 position_ids 相反,此张量不受 padding 的影响。它用于在正确的位置更新缓存并推断完整序列长度。

Zamba2Model 的 forward 方法重写了 __call__ 特殊方法。

尽管 forward 传递的配方需要在该函数中定义,但之后应该调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

Zamba2ForCausalLM

class transformers.Zamba2ForCausalLM

< >

( config: Zamba2Config )

forward

< >

( input_ids: LongTensor = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[transformers.models.zamba2.modeling_zamba2.Zamba2HybridDynamicCache] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None cache_position: typing.Optional[torch.LongTensor] = None logits_to_keep: typing.Union[int, torch.Tensor] = 0 **loss_kwargs ) transformers.modeling_outputs.CausalLMOutputWithPasttuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为 (batch_size, sequence_length)) — 词汇表中输入序列 tokens 的索引。如果提供 padding,默认情况下将被忽略。

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

    什么是输入 IDs?

  • attention_mask (torch.Tensor,形状为 (batch_size, sequence_length)可选) — 用于避免在 padding token 索引上执行 attention 的 Mask。Mask 值在 [0, 1] 中选择:

    • 1 表示 token 未被 mask
    • 0 表示 token 已被 mask

    什么是 attention masks?

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

    如果使用 past_key_values,则可以选择仅输入最后的 input_ids(请参阅 past_key_values)。

    如果要更改 padding 行为,则应阅读 modeling_opt._prepare_decoder_attention_mask 并根据您的需要进行修改。 有关默认策略的更多信息,请参见 论文 中的图 1。

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

    什么是位置 IDs?

  • past_key_values (Zamba2HybridDynamicCache可选,当传递 use_cache=True 或当 config.use_cache=True 时返回) — 一个 Zamba2HybridDynamicCache 对象,包含预先计算的 hidden-states(自注意力模块中的键和值,以及 mamba 模块中的卷积和 ssm 状态),可以用于(请参阅 past_key_values 输入)加速顺序解码。键和值缓存张量的形状为 (batch_size, num_heads, seq_len, head_dim)。卷积和 ssm 状态张量的形状分别为 (batch_size, d_inner, d_conv)(batch_size, d_inner, d_state)。有关更多详细信息,请参见 Zamba2HybridDynamicCache 类。

    如果使用 past_key_values,则用户可以选择仅输入最后的 input_ids(那些没有将其过去键值状态提供给此模型的输入 ID),形状为 (batch_size, 1),而不是形状为 (batch_size, sequence_length) 的所有 input_ids

  • inputs_embeds (torch.FloatTensor,形状为 (batch_size, sequence_length, hidden_size)可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递 input_ids。 如果您想要比模型的内部嵌入查找矩阵更好地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。
  • use_cache (bool可选) — 如果设置为 True,则返回 past_key_values 键值状态,并且可以用于加速解码(请参阅 past_key_values)。
  • output_attentions (bool可选) — 是否返回所有注意力层的 attentions 张量。 有关更多详细信息,请参见返回的张量下的 attentions
  • output_hidden_states (bool可选) — 是否返回所有层的 hidden states。 有关更多详细信息,请参见返回的张量下的 hidden_states
  • return_dict (bool可选) — 是否返回 ModelOutput 而不是纯粹的元组。
  • cache_position (torch.LongTensor,形状为 (sequence_length)可选) — 索引,描述输入序列 token 在序列中的位置。与 position_ids 相反,此张量不受 padding 的影响。它用于在正确的位置更新缓存并推断完整序列长度。
  • labels (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 用于计算 masked language modeling loss 的标签。 索引应在 [0, ..., config.vocab_size] 或 -100 范围内(请参阅 input_ids docstring)。 索引设置为 -100 的 tokens 将被忽略(masked),loss 仅针对标签在 [0, ..., config.vocab_size] 中的 tokens 计算。
  • logits_to_keep (inttorch.Tensor可选) — 如果是 int,则计算最后 logits_to_keep 个 tokens 的 logits。 如果为 0,则计算所有 input_ids 的 logits(特殊情况)。 生成只需要最后一个 token logits,并且仅为该 token 计算它们可以节省内存,这对于长序列或大词汇量大小来说变得非常重要。 如果是 torch.Tensor,则必须是与序列长度维度中要保留的索引相对应的 1D 张量。 这在使用 packed tensor 格式(批次和序列长度的单个维度)时很有用。

返回值

transformers.modeling_outputs.CausalLMOutputWithPasttuple(torch.FloatTensor)

一个 transformers.modeling_outputs.CausalLMOutputWithPast 或一个 torch.FloatTensor 元组(如果传递 return_dict=False 或当 config.return_dict=False 时),其中包含各种元素,具体取决于配置 (Zyphra/Zamba2-2.7B) 和输入。

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

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

  • past_key_values (tuple(tuple(torch.FloatTensor))可选,当传递 use_cache=True 或当 config.use_cache=True 时返回) — 长度为 config.n_layerstuple(tuple(torch.FloatTensor)) 元组,其中每个元组都有 2 个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量)

    包含预先计算的 hidden-states(自注意力模块中的键和值),可以用于(请参阅 past_key_values 输入)加速顺序解码。

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

    模型在每一层输出处的 Hidden-states,加上可选的初始嵌入输出。

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

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

Zamba2ForCausalLM 的 forward 方法重写了 __call__ 特殊方法。

尽管 forward 传递的配方需要在该函数中定义,但之后应该调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例

>>> from transformers import AutoTokenizer, Zamba2ForCausalLM

>>> model = Zamba2ForCausalLM.from_pretrained("Zyphra/Zamba2-7B-v1")
>>> tokenizer = AutoTokenizer.from_pretrained("Zyphra/Zamba2-7B-v1")

>>> prompt = "Hey, are you conscious? Can you talk to me?"
>>> 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]
"Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."

Zamba2ForSequenceClassification

class transformers.Zamba2ForSequenceClassification

< >

( config )

参数

  • config (Zamba2Config) — 具有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法以加载模型权重。

Zamba2 模型,顶部带有序列分类 head(线性层)。

Zamba2ForSequenceClassification 使用最后一个 token 来进行分类,就像其他因果模型(例如 GPT-2)一样。

由于它对最后一个 token 进行分类,因此需要知道最后一个 token 的位置。如果在配置中定义了 pad_token_id,它会在每一行中找到最后一个不是 padding token 的 token。 如果没有定义 pad_token_id,它会简单地取每行 batch 中的最后一个值。 由于当传递 inputs_embeds 而不是 input_ids 时,它无法猜测 padding token,因此它也会执行相同的操作(取每行 batch 中的最后一个值)。

此模型继承自 PreTrainedModel。 有关库为所有模型实现的通用方法(例如下载或保存、调整输入 embeddings 大小、剪枝 heads 等),请查看超类文档。

此模型也是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档,了解与一般用法和行为相关的所有事项。

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: typing.Union[transformers.cache_utils.Cache, typing.List[torch.FloatTensor], NoneType] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None )

参数

  • input_ids (形状为 (batch_size, sequence_length)torch.LongTensor) — 词汇表中输入序列 tokens 的索引。 如果您提供 padding,默认情况下将被忽略。

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

    什么是输入 IDs?

  • attention_mask (形状为 (batch_size, sequence_length)torch.Tensor, 可选) — Mask,用于避免在 padding token 索引上执行 attention。 在 [0, 1] 中选择的 Mask 值:

    • 1 表示 未被 mask 的 tokens,
    • 0 表示 已被 mask 的 tokens。

    什么是 attention masks?

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

    如果使用 past_key_values,则可以选择仅输入最后的 input_ids(请参阅 past_key_values)。

    如果您想更改 padding 行为,您应该阅读 modeling_opt._prepare_decoder_attention_mask 并根据您的需要进行修改。 有关默认策略的更多信息,请参见 论文 中的图 1。

    • 1 表示 head 未被 mask
    • 0 表示 head 已被 mask
  • position_ids (形状为 (batch_size, sequence_length)torch.LongTensor, 可选) — 位置 embeddings 中每个输入序列 token 的位置索引。 在 [0, config.n_positions - 1] 范围内选择。

    什么是位置 IDs?

  • past_key_values (Zamba2HybridDynamicCache, 可选, 当传递 use_cache=Trueconfig.use_cache=True 时返回) — 一个 Zamba2HybridDynamicCache 对象,其中包含预先计算的 hidden-states(自注意力模块中的 keys 和 values,以及 mamba 模块中的卷积和 ssm 状态),可以用于加速顺序解码(请参阅 past_key_values 输入)。 Key 和 value cache tensors 的形状为 (batch_size, num_heads, seq_len, head_dim)。 卷积和 ssm 状态 tensors 的形状分别为 (batch_size, d_inner, d_conv)(batch_size, d_inner, d_state)。 有关更多详细信息,请参阅 Zamba2HybridDynamicCache 类。

    如果使用 past_key_values,则用户可以选择仅输入最后的 input_ids(那些没有将其 past key value 状态提供给此模型的 input_ids),形状为 (batch_size, 1),而不是所有形状为 (batch_size, sequence_length)input_ids

  • inputs_embeds (形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor, 可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递 input_ids。 如果您希望比模型的内部 embedding 查找矩阵更精细地控制如何将 input_ids 索引转换为关联的向量,这将非常有用。
  • use_cache (bool, 可选) — 如果设置为 True,则返回 past_key_values 键值状态,并且可以用于加速解码(请参阅 past_key_values)。
  • output_attentions (bool, 可选) — 是否返回所有 attention 层的 attentions tensors。 有关更多详细信息,请参阅返回的 tensors 下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的 hidden states。 有关更多详细信息,请参阅返回的 tensors 下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。
  • cache_position (形状为 (sequence_length)torch.LongTensor, 可选) — 索引,描述输入序列 tokens 在序列中的位置。 与 position_ids 相反,此 tensor 不受 padding 的影响。 它用于在正确的位置更新 cache 并推断完整序列长度。
  • labels (形状为 (batch_size,)torch.LongTensor, 可选) — 用于计算序列分类/回归损失的标签。 索引应在 [0, ..., config.num_labels - 1] 中。 如果 config.num_labels == 1,则计算回归损失(均方误差损失)。 如果 config.num_labels > 1,则计算分类损失(交叉熵损失)。

Zamba2ForSequenceClassification 的 forward 方法,覆盖了 __call__ 特殊方法。

尽管 forward 传递的配方需要在该函数中定义,但之后应该调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

< > Update on GitHub