Transformers 文档

FalconMamba

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

PyTorch

FalconMamba

FalconMamba 是一个 7B 参数的大型语言模型,提供预训练和指令微调两种版本,基于 Mamba 架构。该模型采用纯粹的 Mamba 设计,专注于计算效率,同时保持强大的性能。FalconMamba 的推理速度显著加快,并且在生成长序列时所需的内存也大大减少。这些模型在包含 5.8 万亿个词元(token)的多样化数据集上进行预训练,其中包括 RefinedWeb、技术内容、代码和数学数据。

你可以在 FalconMamba 7B 集合中找到官方的 FalconMamba 模型检查点。

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

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

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

pipeline = pipeline(
    "text-generation",
    model="tiiuae/falcon-mamba-7b-instruct",
    torch_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",
    torch_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("cuda")
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

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_mambapy = False mixer_rms_eps = 1e-06 **kwargs )

参数

  • vocab_size (int, 可选, 默认为 50280) — FALCON_MAMBA 模型的词汇表大小。定义了在调用 FalconMambaModel 时,可以通过 `inputs_ids` 表示的不同词元的数量。
  • 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) — 填充词元的 ID。
  • bos_token_id (int, 可选, 默认为 0) — 词汇表中句子开头词元的 ID。
  • eos_token_id (int, 可选, 默认为 0) — 词汇表中句子结尾词元的 ID。
  • expand (int, 可选, 默认为 2) — 用于确定中间大小的扩展因子。
  • conv_kernel (int, 可选, 默认为 4) — 卷积核的大小。
  • use_bias (bool, 可选, 默认为 False) — 是否在混合器块的 [“in_proj”, “out_proj”] 中使用偏置。
  • use_conv_bias (bool, 可选, 默认为 True) — 是否在混合器块的卷积层中使用偏置。
  • hidden_act (str, 可选, 默认为 "silu") — 解码器中的非线性激活函数(函数或字符串)。
  • initializer_range (float, 可选, 默认为 0.1) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • residual_in_fp32 (bool, 可选, 默认为 True) — 残差连接是否应为 float32 类型。如果设置为 False,残差将保持与模型其余部分相同的 `dtype`。
  • time_step_rank (Union[int,str], 可选, 默认为 "auto") — 离散化投影矩阵的秩。"auto" 表示它将默认为 math.ceil(self.hidden_size / 16)
  • time_step_scale (float, 可选, 默认为 1.0) — 用于缩放 `dt_proj.bias` 的比例因子。
  • time_step_min (float, 可选, 默认为 0.001) — 用于限制 `dt_proj.bias` 的最小 `time_step` 值。
  • time_step_max (float, 可选, 默认为 0.1) — 用于限制 `dt_proj.bias` 的最大 `time_step` 值。
  • time_step_init_scheme (float, 可选, 默认为 "random") — 用于 `dt_proj.weight` 的初始化方案。应为 `["random", "uniform"]` 之一。
  • time_step_floor (float, 可选, 默认为 0.0001) — `dt_proj.bias` 层初始化的最小钳位值。
  • rescale_prenorm_residual (bool, 可选, 默认为 False) — 是否在初始化时重新缩放 `out_proj` 权重。
  • use_cache (bool, 可选, 默认为 True) — 是否应使用缓存。
  • use_mambapy (bool, optional, defaults to False) — 决定在训练期间,当基于 CUDA 的 FalconMamba 官方实现不可用时的备选策略。如果为 `True`,则使用 `falcon_mamba.py` 实现。如果为 `False`,则使用朴素且较慢的实现。如果内存有限,请考虑切换到朴素版本。
  • mixer_rms_eps (float, optional, defaults to 1e-06) — 用于 B、C 和 dt 状态的 Mixer RMS 范数中的 RMS 范数 epsilon 值。

这是一个配置类,用于存储 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 )

参数

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

基础的 Falcon Mamba 模型,输出原始的隐藏状态,顶部没有任何特定的头部。

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

该模型也是 PyTorch torch.nn.Module 的子类。可以像常规的 PyTorch 模块一样使用它,并参考 PyTorch 文档了解所有与通用用法和行为相关的事项。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None inputs_embeds: typing.Optional[torch.LongTensor] = None cache_params: typing.Optional[transformers.cache_utils.MambaCache] = None use_cache: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None cache_position: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None ) `transformers.models.falcon_mamba.modeling_falcon_mamba.FalconMambaOutput` 或 `tuple(torch.FloatTensor)`

参数

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

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

    什么是输入 ID?

  • inputs_embeds (形状为 `(batch_size, sequence_length, hidden_size)` 的 `torch.LongTensor`,可选) — 可选地,你可以不传递 `input_ids`,而是直接传递嵌入表示。如果你想比模型内部的嵌入查找矩阵有更多控制权来将 `input_ids` 索引转换为相关向量,这会很有用。
  • cache_params (`MambaCache`, 可选) — 如果传递该参数,模型将在所有块中使用先前的状态(这将为提供的 `input_ids` 给出输出,就好像模型将 `state_input_ids + input_ids` 作为上下文一样)。
  • use_cache (`bool`, 可选) — 如果设置为 `True`,将返回 `cache_params`,可用于快速生成下一个 logits。
  • output_hidden_states (`bool`, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参见返回张量下的 `hidden_states`。
  • return_dict (`bool`, 可选) — 是否返回 ModelOutput 而不是普通的元组。
  • cache_position (形状为 `(sequence_length)` 的 `torch.LongTensor`,可选) — 表示输入序列标记在序列中位置的索引。与 `position_ids` 不同,此张量不受填充影响。它用于在正确的位置更新缓存并推断完整的序列长度。
  • attention_mask (形状为 `(batch_size, sequence_length)` 的 `torch.LongTensor`,可选) — 用于避免在填充标记索引上执行注意力操作的掩码。掩码值从 `[0, 1]` 中选择:

    • 1 表示标记未被遮盖
    • 0 表示标记被遮盖

    什么是注意力掩码?

返回

`transformers.models.falcon_mamba.modeling_falcon_mamba.FalconMambaOutput` 或 `tuple(torch.FloatTensor)`

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

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

  • cache_params (`~cache_utils.MambaCache`, 可选, 默认为 `None`) — 模型在最后一个时间步的状态。可以与下一个 `input_ids` 一起在 forward 方法中使用,以避免提供旧的 `input_ids`。

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

  • hidden_states (`tuple[torch.FloatTensor]`, 可选, 当传递 `output_hidden_states=True` 或当 `config.output_hidden_states=True` 时返回) — `torch.FloatTensor` 的元组(如果模型有嵌入层,则一个是嵌入层的输出,加上每个层的输出),形状为 `(batch_size, sequence_length, hidden_size)`。

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

FalconMambaModel 的 forward 方法,重写了 `__call__` 特殊方法。

虽然前向传递的逻辑需要在这个函数中定义,但之后应该调用 `Module` 实例而不是这个函数,因为前者会处理运行前处理和后处理步骤,而后者会默默地忽略它们。

FalconMambaLMHeadModel

class transformers.FalconMambaForCausalLM

< >

( config )

参数

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

带语言模型头部的 FALCONMAMBA 模型转换器(线性层,权重与输入嵌入绑定)。

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

该模型也是 PyTorch torch.nn.Module 的子类。可以像常规的 PyTorch 模块一样使用它,并参考 PyTorch 文档了解所有与通用用法和行为相关的事项。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None cache_params: typing.Optional[transformers.cache_utils.MambaCache] = None labels: typing.Optional[torch.LongTensor] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None use_cache: typing.Optional[bool] = None cache_position: typing.Optional[torch.Tensor] = None **kwargs ) `transformers.models.falcon_mamba.modeling_falcon_mamba.FalconMambaCausalLMOutput` 或 `tuple(torch.FloatTensor)`

参数

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

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

    什么是输入 ID?

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

    • 1 表示标记未被遮盖
    • 0 表示标记被遮盖

    什么是注意力掩码?

  • inputs_embeds (形状为 `(batch_size, sequence_length, hidden_size)` 的 `torch.FloatTensor`,可选) — 可选地,你可以不传递 `input_ids`,而是直接传递嵌入表示。如果你想比模型内部的嵌入查找矩阵有更多控制权来将 `input_ids` 索引转换为相关向量,这会很有用。
  • cache_params (`MambaCache`, 可选) — 如果传递该参数,模型将在所有块中使用先前的状态(这将为提供的 `input_ids` 给出输出,就好像模型将 `state_input_ids + input_ids` 作为上下文一样)。
  • labels (形状为 `(batch_size, sequence_length)` 的 `torch.LongTensor`,可选) — 语言建模的标签。注意,标签在模型内部被移动了,即你可以设置 `labels = input_ids`。索引在 `[-100, 0, ..., config.vocab_size]` 中选择。所有设置为 `-100` 的标签都将被忽略(遮盖),损失仅对 `[0, ..., config.vocab_size]` 中的标签计算。
  • output_hidden_states (`bool`, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参见返回张量下的 `hidden_states`。
  • return_dict (`bool`, 可选) — 是否返回 ModelOutput 而不是普通的元组。
  • use_cache (`bool`, 可选) — 如果设置为 `True`,将返回 `cache_params`,可用于快速生成下一个 logits。
  • cache_position (形状为 `(sequence_length)` 的 `torch.Tensor`,可选) — 表示输入序列标记在序列中位置的索引。与 `position_ids` 不同,此张量不受填充影响。它用于在正确的位置更新缓存并推断完整的序列长度。

返回

`transformers.models.falcon_mamba.modeling_falcon_mamba.FalconMambaCausalLMOutput` 或 `tuple(torch.FloatTensor)`

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

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

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

  • cache_params (`~cache_utils.MambaCache`, 可选, 默认为 `None`) — 模型在最后一个时间步的状态。可以与下一个 `input_ids` 一起在 forward 方法中使用,以避免提供旧的 `input_ids`。

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

  • hidden_states (`tuple[torch.FloatTensor]`, 可选, 当传递 `output_hidden_states=True` 或当 `config.output_hidden_states=True` 时返回) — `torch.FloatTensor` 的元组(如果模型有嵌入层,则一个是嵌入层的输出,加上每个层的输出),形状为 `(batch_size, sequence_length, hidden_size)`。

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

FalconMambaForCausalLM 的 forward 方法,重写了 `__call__` 特殊方法。

虽然前向传递的逻辑需要在这个函数中定义,但之后应该调用 `Module` 实例而不是这个函数,因为前者会处理运行前处理和后处理步骤,而后者会默默地忽略它们。

示例

< > 在 GitHub 上更新