Transformers 文档
FalconH1
并获得增强的文档体验
开始使用
该模型于 2025-05-21 发布,并于 2025-05-21 添加到 Hugging Face Transformers。
FalconH1
概述
FalconH1 模型由 TII Pretraining 团队开发。一份涵盖模型架构、预训练动态、实验结果和结论的全面研究论文即将发布。您可以在 此网站 阅读有关该系列的更多信息。
Contributors
该模型由 DhiyaEddine、ybelkada、JingweiZuo、IlyasChahed 和 MaksimVelikanov 贡献。原始代码可以在 此处找到。
FalconH1Config
| 模型 | 深度 | Dim | Attn Heads | KV | Mamba Heads | d_head | d_state | Ctx Len |
|---|---|---|---|---|---|---|---|---|
| H1 0.5B | 36 | 1024 | 8 | 2 | 24 | 64 / 64 | 128 | 4K, 16K-SFT |
| H1 1.5B | 24 | 2048 | 8 | 2 | 48 | 128 / 64 | 256 | 128K |
| H1 1.5B-d | 66 | 1280 | 6 | 2 | 24 | 128 / 64 | 256 | 128K |
| H1 3B | 32 | 2560 | 10 | 2 | 32 | 128 / 128 | 256 | 128K |
| H1 7B | 44 | 3072 | 12 | 2 | 24 | 128 / 128 | 256 | 256K |
| H1 34B | 72 | 5120 | 20 | 4 | 32 | 128 / 128 | 256 | 256K |
class transformers.FalconH1Config
< source >( vocab_size: int | None = 128000 tie_word_embeddings: bool | None = False hidden_size: int | None = 4096 intermediate_size: int | None = 14336 num_hidden_layers: int | None = 32 num_attention_heads: int | None = 32 num_key_value_heads: int | None = 8 hidden_act: str | None = 'silu' initializer_range: float | None = 0.02 rms_norm_eps: int | None = 1e-05 use_cache: int | None = True num_logits_to_keep: int | None = 1 pad_token_id: int | None = 0 bos_token_id: int | None = 1 eos_token_id: int | None = 2 max_position_embeddings: int | None = 8192 attention_dropout: float | None = 0.0 mamba_d_ssm: int | None = 1024 mamba_n_heads: int | None = 128 mamba_d_head: str | None = 'auto' mamba_n_groups: int | None = 1 mamba_d_state: int | None = 256 mamba_d_conv: int | None = 4 mamba_expand: int | None = 2 mamba_chunk_size: int | None = 256 mamba_conv_bias: bool | None = True mamba_proj_bias: bool | None = False mamba_norm_before_gate: bool | None = True mamba_rms_norm: bool | None = False time_step_min: float | None = 0.001 time_step_max: float | None = 0.1 time_step_limit: tuple[float, float] | None = (0.0, inf) projectors_bias: bool | None = False rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict[str, transformers.modeling_rope_utils.RopeParameters] | None = None lm_head_multiplier: float | None = 1.0 embedding_multiplier: float | None = 1.0 mlp_multipliers: int | None = None key_multiplier: int | None = None attention_out_multiplier: int | None = None attention_in_multiplier: int | None = None ssm_multipliers: int | None = None ssm_in_multiplier: int | None = None ssm_out_multiplier: int | None = None **kwargs )
参数
- vocab_size (
int, optional, defaults to 128000) — Vocabulary size of the FalconH1 model. Defines the number of different tokens that can be represented by theinputs_idspassed when calling FalconH1Model - tie_word_embeddings (
bool, optional, defaults toFalse) — Whether the model’s input and output word embeddings should be tied. Note that this is only relevant if the model has a output word embedding layer. - hidden_size (
int, optional, defaults to 4096) — Dimension of the hidden representations. - intermediate_size (
int, optional, defaults to 14336) — Dimension of the MLP representations. - num_hidden_layers (
int, optional, defaults to 32) — Number of hidden layers in the Transformer encoder. - num_attention_heads (
int, optional, defaults to 32) — Number of attention heads for each attention layer in the Transformer encoder. - num_key_value_heads (
int, optional, defaults to 8) — This is the number of key_value heads that should be used to implement Grouped Query Attention. Ifnum_key_value_heads=num_attention_heads, the model will use Multi Head Attention (MHA), ifnum_key_value_heads=1the model will use Multi Query Attention (MQA) otherwise GQA is used. When converting a multi-head checkpoint to a GQA checkpoint, each group key and value head should be constructed by meanpooling all the original heads within that group. For more details, check out this paper. If it is not specified, will default to8. - hidden_act (
strorfunction, optional, defaults to"silu") — The non-linear activation function (function or string) in the decoder. - initializer_range (
float, optional, defaults to 0.02) — The standard deviation of the truncated_normal_initializer for initializing all weight matrices. - rms_norm_eps (
float, optional, defaults to 1e-05) — The epsilon used by the rms normalization layers. - use_cache (
bool, optional, defaults toTrue) — Whether or not the model should return the last key/values attentions (not used by all models). Only relevant ifconfig.is_decoder=True. - num_logits_to_keep (
intorNone, optional, defaults to 1) — Number of prompt logits to calculate during generation. IfNone, all logits will be calculated. If an integer value, only lastnum_logits_to_keeplogits will be calculated. Default is 1 because only the logits of the last prompt token are needed for generation. For long sequences, the logits for the entire sequence may use a lot of memory so, settingnum_logits_to_keep=1will reduce memory footprint significantly. - pad_token_id (
int, optional, defaults to 0) — The id of the padding token. - bos_token_id (
int, optional, defaults to 1) — The id of the “beginning-of-sequence” token. - eos_token_id (
int, optional, defaults to 2) — The id of the “end-of-sequence” token. - max_position_embeddings (
int, optional, defaults to 8192) — Max cached sequence length for the model - attention_dropout (
float, optional, defaults to 0.0) — The dropout ratio for the attention probabilities. - mamba_d_ssm (
int, optional, defaults to 1024) — The dimension of the SSM state space latents. - mamba_n_heads (
int, optional, defaults to 128) — v2实现中使用的mamba头数。 - mamba_d_head (
int, optional, defaults to"auto") — 头嵌入维度大小 - mamba_n_groups (
int, optional, defaults to 1) — v2实现中使用的mamba组数。 - mamba_d_state (
int, optional, defaults to 256) — mamba状态空间潜在值的维度 - mamba_d_conv (
int, optional, defaults to 4) — mamba卷积核的大小 - mamba_expand (
int, optional, defaults to 2) — 用于确定mamba中间大小的扩展因子(相对于hidden_size) - mamba_chunk_size (
int, optional, defaults to 256) — 在进行预填充/训练时,将序列分成块的大小 - mamba_conv_bias (
bool, optional, defaults toTrue) — mamba混合器块的卷积层是否使用偏置。 - mamba_proj_bias (
bool, optional, defaults toFalse) — mamba混合器块的输入和输出投影([“in_proj”, “out_proj”])是否使用偏置。 - mamba_norm_before_gate (
bool, optional, defaults toTrue) — Mamba块中门控前是否使用RMSNorm - mamba_rms_norm (
bool, optional, defaults toFalse) — Mamba块中是否使用RMSNorm代替LayerNorm - 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_limit (
tuple, optional, defaults to(0.0, inf)) — 用于钳制的time step值的可接受范围。 - projectors_bias (
bool, optional, defaults toFalse) — 注意力块的输入和输出投影([“in_proj”, “out_proj”])是否使用偏置。 - rope_parameters (
float, optional) — 用于RoPE嵌入的缩放值。如果为None,则不应用缩放。 - lm_head_multiplier (
float, optional, defaults to 1.0) — LM头部的乘数。用于缩放LM头部的输出。 - embedding_multiplier (
float, optional, defaults to 1.0) — 嵌入层的乘数。用于缩放嵌入层的输出。 - mlp_multipliers (
list[float], optional) — MLP层的乘数。用于缩放MLP层的输出。第一个值是门控层的乘数,第二个值是下行投影层的乘数。 - key_multiplier (
float, optional) — 键层的乘数。用于缩放键层的输出。 - attention_out_multiplier (
float, optional) — 注意力输出层的乘数。用于缩放注意力输出层的输出。 - attention_in_multiplier (
float, optional) — 注意力输入层的乘数。用于缩放注意力输入层的输出。 - ssm_multipliers (
list[float], optional) — SSM层的乘数。用于缩放SSM层的输出。 - ssm_in_multiplier (
float, optional) — SSM输入层的乘数。用于缩放SSM输入层的输出。 - ssm_out_multiplier (
float, optional) — SSM输出层的乘数。用于缩放SSM输出层的输出。
这是用于存储FalconH1Model配置的配置类。它用于根据指定的参数实例化一个FalconH1Model模型,定义模型架构。使用ibm-fms/FalconH1-9.8b-2.2T-hf的默认值实例化配置。FalconH1Model是一个混合mamba2架构,带有SwiGLU。检查点由IBM、普林斯顿和UIUC联合训练。配置对象继承自PreTrainedConfig,并可用于控制模型输出。有关更多信息,请阅读PreTrainedConfig的文档。
FalconH1ForCausalLM
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("tiiuae/Falcon-H1-7B-Instruct")
tokenizer = AutoTokenizer.from_pretrained("tiiuae/Falcon-H1-7B-Instruct")
message = ["Mamba is a snake with following properties "]
inputs = tokenizer(message, return_tensors='pt', return_token_type_ids=False)
response = model.generate(**inputs, max_new_tokens=64)
print(tokenizer.batch_decode(response, skip_special_tokens=True)[0])class transformers.FalconH1ForCausalLM
< 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 (FalconH1ForCausalLM) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。请查看from_pretrained()方法来加载模型权重。
用于因果语言建模的Falcon H1模型。
此模型继承自 PreTrainedModel。查看其父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头等)。
此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。
forward
< source >( input_ids: torch.LongTensor | None = None attention_mask: torch.Tensor | None = None position_ids: torch.LongTensor | None = None past_key_values: transformers.models.falcon_h1.modeling_falcon_h1.FalconHybridMambaAttentionDynamicCache | None = None inputs_embeds: torch.FloatTensor | None = None labels: torch.LongTensor | None = None use_cache: bool | None = None output_attentions: bool | None = None output_hidden_states: bool | None = None cache_position: torch.LongTensor | None = None logits_to_keep: int | torch.Tensor = 0 **kwargs ) → transformers.modeling_outputs.CausalLMOutputWithPast 或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor, shape(batch_size, sequence_length), optional) — 词汇表中的输入序列 token 索引。默认情况下会忽略填充。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.Tensor, shape(batch_size, sequence_length), optional) — 用于避免对填充 token 索引执行 attention 的掩码。掩码值选择在[0, 1]中:- 1 表示未被掩码的 token,
- 0 表示被掩码的 token。
- position_ids (
torch.LongTensor, shape(batch_size, sequence_length), optional) — 位置嵌入中每个输入序列 token 的位置索引。选择范围为[0, config.n_positions - 1]。 - past_key_values (
~models.falcon_h1.modeling_falcon_h1.FalconHybridMambaAttentionDynamicCache, optional) — 预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。这通常包括模型在之前的解码阶段返回的past_key_values,当use_cache=True或config.use_cache=True时。只允许使用 Cache 实例,请参阅我们的 kv 缓存指南。如果未传入
past_key_values,则默认会初始化 DynamicCache。模型将输出与输入相同的缓存格式。
如果使用了
past_key_values,用户应仅输入未处理的input_ids(那些未为其过去键值状态提供给该模型的input_ids),其形状为(batch_size, unprocessed_length),而不是所有形状为(batch_size, sequence_length)的input_ids。 - inputs_embeds (
torch.FloatTensor, shape(batch_size, sequence_length, hidden_size), optional) — 可选地,您可以直接传入嵌入表示,而不是传入input_ids。如果您想更好地控制如何将input_ids索引转换为关联向量,而不是使用模型内部的嵌入查找矩阵,这会很有用。 - labels (
torch.LongTensor, 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)。 - output_attentions (
bool, optional) — 是否返回所有 attention 层的 attention 张量。有关更多详细信息,请参阅返回张量下的attentions。 - output_hidden_states (
bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states。 - cache_position (
torch.LongTensor, shape(sequence_length), optional) — 指示输入序列 token 在序列中位置的索引。与position_ids不同,此张量不受填充影响。它用于在正确的位置更新缓存并推断完整的序列长度。 - logits_to_keep (
Union[int, torch.Tensor], optional, 默认值0) — 如果为整数,则计算最后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 时),根据配置(FalconH1Config)和输入包含各种元素。
-
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 后的注意力权重,用于计算自注意力头中的加权平均值。
FalconH1ForCausalLM 的 forward 方法覆盖了 __call__ 特殊方法。
虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用
Module实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。
示例
>>> from transformers import AutoTokenizer, FalconH1ForCausalLM
>>> model = FalconH1ForCausalLM.from_pretrained("...")
>>> tokenizer = AutoTokenizer.from_pretrained("...")
>>> 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."此 HF 实现由 younesbelkada 和 DhiaEddineRhaiem 贡献。
在 GitHub 上更新