Transformers 文档

FalconMamba

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

该模型于 2024-10-07 发布,并于 2024-08-12 添加到 Hugging Face Transformers。

PyTorch

FalconMamba

FalconMamba 是一个 7B 参数的大型语言模型,提供预训练和指令微调版本,基于 Mamba。该模型实现了纯 Mamba 设计,注重计算效率,同时保持强大的性能。FalconMamba 在推理速度上显著更快,并且在长序列生成时所需的内存大大减少。模型在包含 RefinedWeb、技术内容、代码和数学数据的多样化 5.8T token 数据集上进行了预训练。

您可以在 FalconMamba 7B 收藏中找到官方 FalconMamba 检查点。

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

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

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

pipeline = pipeline(
    "text-generation",
    model="tiiuae/falcon-mamba-7b-instruct",
    dtype=torch.bfloat16,
    device=0
)
pipeline(
    "Explain the difference between transformers and SSMs",
    max_length=100,
    do_sample=True,
    temperature=0.7
)

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

以下示例使用 bitsandbytes 将权重量化为 4 位。

import torch
from transformers import AutoTokenizer, FalconMambaForCausalLM, BitsAndBytesConfig

quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.bfloat16,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_use_double_quant=True,
)

tokenizer = AutoTokenizer.from_pretrained("tiiuae/falcon-mamba-7b")
model = FalconMambaForCausalLM.from_pretrained(
    "tiiuae/falcon-mamba-7b",
    dtype=torch.bfloat16,
    device_map="auto",
    quantization_config=quantization_config,
)

inputs = tokenizer("Explain the concept of state space models in simple terms", return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

FalconMambaCache

class transformers.FalconMambaCache

< >

( config: PreTrainedConfig max_batch_size: int dtype: dtype = torch.float16 device: torch.device | str | None = None )

参数

  • config (`PreTrainedConfig) — 初始化静态缓存所需的形状相关属性的配置文件。
  • max_batch_size (int) — 模型将使用的最大批处理大小。请注意,如果使用较小的批处理大小,则必须实例化一个新实例。
  • dtype (torch.dtype, 可选, 默认为 torch.float16) — 初始化层时使用的默认 dtype
  • device (torch.devicestr, 可选) — 缓存应初始化到的设备。应与层相同。

Falcon_mamba 模型的缓存,该模型没有注意力机制和键值状态。

示例

>>> import torch
>>> from transformers import AutoTokenizer, FalconMambaForCausalLM, FalconMambaCache

>>> model = FalconMambaForCausalLM.from_pretrained("tiiuae/falcon-mamba-7b")
>>> tokenizer = AutoTokenizer.from_pretrained("tiiuae/falcon-mamba-7b")

>>> inputs = tokenizer(text="My name is FalconMamba", return_tensors="pt")

>>> # Prepare a cache class and pass it to model's forward
>>> cache_params = FalconMambaCache(config=model.config, max_batch_size=1, device=model.device, dtype=model.dtype)
>>> cache_position = torch.arange(len(inputs["input_ids"][0]), device=model.device)  # sequence length
>>> outputs = model(**inputs, cache_params=cache_params, cache_position=cache_position, use_cache=True)
>>> outputs.cache_params

update_conv_state

< >

( layer_idx: int new_conv_state: Tensor cache_position: LongTensor )

update_ssm_state

< >

( layer_idx: int new_ssm_state: Tensor )

重置

< >

( )

FalconMambaConfig

class transformers.FalconMambaConfig

< >

( vocab_size = 50280 hidden_size = 768 state_size = 16 num_hidden_layers = 32 layer_norm_epsilon = 1e-05 pad_token_id = 0 bos_token_id = 0 eos_token_id = 0 expand = 2 conv_kernel = 4 use_bias = False use_conv_bias = True hidden_act = 'silu' initializer_range = 0.1 residual_in_fp32 = True time_step_rank = 'auto' time_step_scale = 1.0 time_step_min = 0.001 time_step_max = 0.1 time_step_init_scheme = 'random' time_step_floor = 0.0001 rescale_prenorm_residual = False use_cache = True use_falcon_mambapy = False mixer_rms_eps = 1e-06 tie_word_embeddings = True **kwargs )

参数

  • vocab_size (int, 可选, 默认为 50280) — FALCON_MAMBA 模型的词汇量大小。定义调用 FalconMambaModel 时传入的 inputs_ids 所能表示的不同 token 的数量。
  • hidden_size (int, 可选, 默认为 768) — 嵌入和隐藏状态的维度。
  • state_size (int, 可选, 默认为 16) — 状态空间潜变量的形状。
  • num_hidden_layers (int, 可选, 默认为 32) — 模型中的隐藏层数量。
  • layer_norm_epsilon (float, 可选, 默认为 1e-05) — 层归一化层中使用的 epsilon。
  • pad_token_id (int, 可选, 默认为 0) — 填充 token 的 id。
  • bos_token_id (int, 可选, 默认为 0) — 词汇表中开始标记的 id。
  • eos_token_id (int, 可选, 默认为 0) — 词汇表中结束标记的 id。
  • expand (int, 可选, 默认为 2) — 用于确定中间大小的扩展因子。
  • conv_kernel (int, 可选, 默认为 4) — 卷积核的大小。
  • use_bias (bool, optional, defaults to False) — 是否在 mixer 块的 [“in_proj”, “out_proj”] 中使用偏置
  • use_conv_bias (bool, optional, defaults to True) — 是否在 mixer 块的卷积层中使用偏置。
  • hidden_act (str, optional, defaults to "silu") — 解码器中的非线性激活函数(函数或字符串)。
  • initializer_range (float, optional, defaults to 0.1) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • residual_in_fp32 (bool, optional, defaults to True) — 是否将残差保留在 float32 中。如果设置为 False,残差将保持与模型其余部分相同的 dtype
  • time_step_rank (Union[int,str], optional, defaults to "auto") — 离散化投影矩阵的秩。"auto" 表示将默认设置为 math.ceil(self.hidden_size / 16)
  • time_step_scale (float, optional, defaults to 1.0) — 用于缩放 dt_proj.bias 的尺度。
  • time_step_min (float, optional, defaults to 0.001) — 用于限制 dt_proj.bias 的最小 time_step
  • time_step_max (float, optional, defaults to 0.1) — 用于限制 dt_proj.bias 的最大 time_step
  • time_step_init_scheme (float, optional, defaults to "random") — dt_proj.weight 的初始化方案。应为 ["random","uniform"] 之一
  • time_step_floor (float, optional, defaults to 0.0001) — dt_proj.bias 层初始化的最小钳位值。
  • rescale_prenorm_residual (bool, optional, defaults to False) — 是否在初始化时重新缩放 out_proj 权重。
  • use_cache (bool, optional, defaults to True) — 是否使用缓存。
  • use_falcon_mambapy (bool, optional, defaults to False) — 此参数对应于 MambaConfig 中的 use_mambapy。它决定了在 CUDA 版本 Mamba 的官方实现不可用时,训练期间的后备策略。如果设置为 True,则使用 mamba.py 实现。如果设置为 False,则使用原生且速度较慢的实现。如果内存有限,请考虑切换到原生版本。
  • mixer_rms_eps (float, optional, defaults to 1e-06) — 在 Mixer RMS norm 中用于 B、C 和 dt 状态的 RMS norm epsilon 值。
  • tie_word_embeddings (bool, optional, defaults to True) — 是否绑定词嵌入

这是用于存储 FalconMambaModel 配置的类。它用于根据指定的参数实例化 FALCON_MAMBA 模型,定义了模型架构。使用默认值实例化配置将得到与 FALCON_MAMBA tiiuae/falcon-mamba-7b 架构相似的配置。

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

示例

>>> from transformers import FalconMambaConfig, FalconMambaModel

>>> # Initializing a FalconMamba configuration
>>> configuration = FalconMambaConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = FalconMambaModel(configuration)

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

FalconMambaModel

class transformers.FalconMambaModel

< >

( 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 (FalconMambaModel) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。请查看 from_pretrained() 方法来加载模型权重。

Bare Falcon Mamba Model,输出原始隐藏状态,没有任何特定的顶部头部。

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

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

forward

< >

( input_ids: torch.LongTensor | None = None inputs_embeds: torch.LongTensor | None = None cache_params: transformers.models.falcon_mamba.modeling_falcon_mamba.FalconMambaCache | None = None use_cache: bool | None = None output_hidden_states: bool | None = None return_dict: bool | None = None cache_position: torch.LongTensor | None = None attention_mask: torch.LongTensor | None = None **kwargs ) transformers.models.falcon_mamba.modeling_falcon_mamba.FalconMambaOutputtuple(torch.FloatTensor)

参数

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

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

    什么是输入 ID?

  • inputs_embeds (torch.LongTensor of shape (batch_size, sequence_length, hidden_size), optional) — 选项,可以不传入 input_ids,而是直接传入嵌入表示。如果您想对模型内部嵌入查找矩阵如何将 input_ids 索引转换为关联向量进行更精细地控制,这将非常有用。
  • cache_params (FalconMambaCache, optional) — 如果传入,模型将使用所有块的先前状态(这将产生与模型添加 state_input_ids + input_ids 作为上下文时相同的输出)。
  • use_cache (bool, optional) — 如果设置为 True,则返回 cache_params 并可用于快速生成下一个 logits。
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回一个 ModelOutput 而不是一个普通的元组。
  • cache_position (torch.LongTensor of shape (sequence_length), optional) — 索引,指示输入序列 token 在序列中的位置。与 position_ids 不同,该张量不受填充的影响。它用于在正确的位置更新缓存并推断完整的序列长度。
  • attention_mask (torch.LongTensor of shape (batch_size, sequence_length), optional) — 用于避免对填充 token 索引执行注意力操作的掩码。掩码值选择在 [0, 1]:

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

    什么是注意力掩码?

返回

transformers.models.falcon_mamba.modeling_falcon_mamba.FalconMambaOutputtuple(torch.FloatTensor)

根据配置 (FalconMambaConfig) 和输入,一个 transformers.models.falcon_mamba.modeling_falcon_mamba.FalconMambaOutput 或一个 torch.FloatTensor 的元组(如果传入 return_dict=False 或当 config.return_dict=False 时)包含各种元素。

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

  • cache_params (~models.falcon_mamba.modeling_falcon_mamba.FalconMambaCache | None.cache_params, 默认为 None) — 上一个时间步的模型状态。可以在具有下一个 input_ids 的前向方法中使用,以避免提供旧的 input_ids

    包括选择性扫描后的状态空间模型状态矩阵和卷积状态

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

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

transformers.FalconMambaModel 的前向方法,重写了 __call__ 特殊方法。

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

FalconMambaLMHeadModel

class transformers.FalconMambaForCausalLM

< >

( 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 (FalconMambaForCausalLM) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。请查看 from_pretrained() 方法来加载模型权重。

FALCON_MAMBA 模型 transformer,顶部带有一个语言模型头(与输入嵌入层权值相连的线性层)。

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

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

forward

< >

( input_ids: torch.LongTensor | None = None attention_mask: torch.LongTensor | None = None inputs_embeds: torch.FloatTensor | None = None cache_params: transformers.models.falcon_mamba.modeling_falcon_mamba.FalconMambaCache | None = None labels: torch.LongTensor | None = None output_hidden_states: bool | None = None return_dict: bool | None = None use_cache: bool | None = None cache_position: torch.Tensor | None = None logits_to_keep: int | torch.Tensor = 0 **kwargs ) transformers.models.falcon_mamba.modeling_falcon_mamba.FalconMambaCausalLMOutputtuple(torch.FloatTensor)

参数

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

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

    什么是输入 ID?

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

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

    什么是注意力掩码?

  • inputs_embeds (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size), optional) — 可选地,您可以选择直接传入嵌入表示,而不是传入 input_ids。如果您希望比模型内部嵌入查找矩阵更精确地控制如何将 input_ids 索引转换为关联向量,则此选项很有用。
  • cache_params (FalconMambaCache, optional) — 如果传入,模型将使用所有块的先前状态(这将产生就好像模型将 state_input_ids + input_ids 添加为上下文的 input_ids 的输出)。
  • labels (torch.LongTensor of shape (batch_size, sequence_length), optional) — 语言模型的标签。请注意,标签会在模型内部进行移位,也就是说,您可以将 labels = input_ids。索引选择在 [-100, 0, ..., config.vocab_size] 之间。所有设置为 -100 的标签都会被忽略(掩码),损失仅在 [0, ..., config.vocab_size] 范围内的标签上计算。
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回一个 ModelOutput 而不是一个普通的元组。
  • use_cache (bool, optional) — 如果设置为 True,则返回 cache_params,可用于快速生成下一个 logits。
  • cache_position (torch.Tensor 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,则必须是 1D 的,对应于序列长度维度中的要保留的索引。这在使用打包张量格式(批量和序列长度的单维)时很有用。

返回

transformers.models.falcon_mamba.modeling_falcon_mamba.FalconMambaCausalLMOutputtuple(torch.FloatTensor)

根据配置 (FalconMambaConfig) 和输入,一个 transformers.models.falcon_mamba.modeling_falcon_mamba.FalconMambaCausalLMOutput 或一个 torch.FloatTensor 的元组(如果传入 return_dict=False 或当 config.return_dict=False 时)包含各种元素。

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

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

  • cache_params (~models.falcon_mamba.modeling_falcon_mamba.FalconMambaCache | None.cache_params, 默认为 None) — 上一个时间步的模型状态。可以在具有下一个 input_ids 的前向方法中使用,以避免提供旧的 input_ids

    包括选择性扫描后的状态空间模型状态矩阵和卷积状态

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

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

transformers.FalconMambaForCausalLM 的前向方法,重写了 __call__ 特殊方法。

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

示例

在 GitHub 上更新

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