Transformers 文档
FalconMamba
并获得增强的文档体验
开始使用
该模型于 2024-10-07 发布,并于 2024-08-12 添加到 Hugging Face Transformers。
FalconMamba
FalconMamba 是一个 7B 参数的大型语言模型,提供预训练和指令微调版本,基于 Mamba。该模型实现了纯 Mamba 设计,注重计算效率,同时保持强大的性能。FalconMamba 在推理速度上显著更快,并且在长序列生成时所需的内存大大减少。模型在包含 RefinedWeb、技术内容、代码和数学数据的多样化 5.8T token 数据集上进行了预训练。
您可以在 FalconMamba 7B 收藏中找到官方 FalconMamba 检查点。
点击右侧边栏的 FalconMamba 模型,了解更多关于如何将 FalconMamba 应用于不同语言任务的示例。
以下示例演示了如何使用 Pipeline、AutoModel 以及从命令行生成文本。
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
< source >( config: PreTrainedConfig max_batch_size: int dtype: dtype = torch.float16 device: torch.device | str | None = None )
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_paramsFalconMambaConfig
class transformers.FalconMambaConfig
< source >( 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 toFalse) — 是否在 mixer 块的 [“in_proj”, “out_proj”] 中使用偏置 - use_conv_bias (
bool, optional, defaults toTrue) — 是否在 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 toTrue) — 是否将残差保留在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 toFalse) — 是否在初始化时重新缩放out_proj权重。 - use_cache (
bool, optional, defaults toTrue) — 是否使用缓存。 - use_falcon_mambapy (
bool, optional, defaults toFalse) — 此参数对应于 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 toTrue) — 是否绑定词嵌入
这是用于存储 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.configFalconMambaModel
class transformers.FalconMambaModel
< source >( 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
< source >( 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.FalconMambaOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensorof shape(batch_size, sequence_length), optional) — 词汇表中输入序列 token 的索引。默认情况下,填充将被忽略。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- inputs_embeds (
torch.LongTensorof 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.LongTensorof shape(sequence_length), optional) — 索引,指示输入序列 token 在序列中的位置。与position_ids不同,该张量不受填充的影响。它用于在正确的位置更新缓存并推断完整的序列长度。 - attention_mask (
torch.LongTensorof shape(batch_size, sequence_length), optional) — 用于避免对填充 token 索引执行注意力操作的掩码。掩码值选择在[0, 1]:- 1 表示未被掩码的 token,
- 0 表示被掩码的 token。
返回
transformers.models.falcon_mamba.modeling_falcon_mamba.FalconMambaOutput 或 tuple(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
< source >( 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
< source >( 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.FalconMambaCausalLMOutput 或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensorof shape(batch_size, sequence_length), optional) — 输入序列 token 在词汇表中的索引。默认情况下会忽略填充。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.LongTensorof shape(batch_size, sequence_length), optional) — 用于避免对填充 token 索引执行注意力操作的掩码。掩码值选择在[0, 1]:- 1 表示未被掩码的 token,
- 0 表示被掩码的 token。
- inputs_embeds (
torch.FloatTensorof 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.LongTensorof 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.Tensorof shape(sequence_length), optional) — 索引,指示输入序列 token 在序列中的位置。与position_ids不同,该张量不受填充的影响。它用于在正确的位置更新缓存并推断完整的序列长度。 - logits_to_keep (
Union[int, torch.Tensor], optional, defaults to0) — 如果是int,则计算最后logits_to_keep个 token 的 logits。如果为0,则计算所有input_ids的 logits(特殊情况)。生成时只需要最后一个 token 的 logits,并且只为该 token 计算 logits 可以节省内存,这对于长序列或大词汇量非常重要。如果为torch.Tensor,则必须是 1D 的,对应于序列长度维度中的要保留的索引。这在使用打包张量格式(批量和序列长度的单维)时很有用。
返回
transformers.models.falcon_mamba.modeling_falcon_mamba.FalconMambaCausalLMOutput 或 tuple(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实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。