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 上更新

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