Transformers documentation
FalconH1
Este modelo foi contribuído para o Hugging Face Transformers em 2025-05-21.
FalconH1
Visão geral
O modelo FalconH1 foi desenvolvido pela equipe de pré-treinamento da TII. Um artigo de pesquisa abrangente, que cobre a arquitetura, a dinâmica de pré-treinamento, os resultados experimentais e as conclusões, será publicado em breve. Você pode ler mais sobre essa série em este site.
Contribuidores
Este modelo foi contribuído por DhiyaEddine, ybelkada, JingweiZuo, IlyasChahed e MaksimVelikanov. O código original pode ser encontrado aqui.
Observações
- Use padding à esquerda para geração em lote. Consulte Lado do padding.
FalconH1Config
| Model | Profundidade | Dim | Cabeças de Attn | KV | Mamba Heads | d_head | d_state | Compr. do Ctx |
|---|---|---|---|---|---|---|---|---|
| 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 |
classe transformers.FalconH1Config
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 128000tie_word_embeddings: bool = Falsehidden_size: int = 4096intermediate_size: int = 14336num_hidden_layers: int = 32num_attention_heads: int = 32num_key_value_heads: int | None = 8hidden_act: str = 'silu'initializer_range: float = 0.02rms_norm_eps: float = 1e-05use_cache: bool | None = Truenum_logits_to_keep: int | None = 1pad_token_id: int | None = 0bos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2max_position_embeddings: int = 8192attention_dropout: float | int | None = 0.0mamba_d_ssm: int | None = 1024mamba_n_heads: int | None = 128mamba_d_head: str | int | None = 'auto'mamba_n_groups: int | None = 1mamba_d_state: int | None = 256mamba_d_conv: int | None = 4mamba_expand: int | None = 2mamba_chunk_size: int | None = 256mamba_conv_bias: bool | None = Truemamba_proj_bias: bool | None = Falsemamba_norm_before_gate: bool | None = Truemamba_rms_norm: bool | None = Falsetime_step_limit: list[float, float] | tuple[float, float] | None = (0.0, inf)projectors_bias: bool | None = Falserope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Nonelm_head_multiplier: float | None = 1.0embedding_multiplier: float | None = 1.0mlp_multipliers: list[float] | None = Nonekey_multiplier: float | None = 1.0attention_out_multiplier: float | None = 1.0attention_in_multiplier: float | None = 1.0ssm_multipliers: list[float] | None = Nonessm_in_multiplier: float | None = 1.0ssm_out_multiplier: float | None = 1.0attention_bias: bool = Falsemlp_bias: bool = False )
Parâmetros
- vocab_size (
int, opcional, padrão128000) — Tamanho do vocabulário do modelo. Define o número de tokens diferentes que podem ser representados pelosinput_ids. - tie_word_embeddings (
bool, opcional, padrãoFalse) — Se deve vincular as embeddings de pesos de acordo com o mapeamentotied_weights_keysdo modelo. - hidden_size (
int, opcional, padrão4096) — Dimensão das representações ocultas. - intermediate_size (
int, opcional, padrão14336) — Dimensão das representações do MLP. - num_hidden_layers (
int, opcional, padrão32) — Número de camadas ocultas no decodificador do Transformer. - num_attention_heads (
int, opcional, padrão32) — Número de cabeças de atenção para cada camada de atenção no decodificador do Transformer. - num_key_value_heads (
int, opcional, padrão8) — Este é o número de cabeças de key_value que devem ser usadas para implementar Grouped Query Attention. Senum_key_value_heads=num_attention_heads, o modelo usará Multi Head Attention (MHA); senum_key_value_heads=1, o modelo usará Multi Query Attention (MQA); caso contrário, será usado GQA. Ao converter um checkpoint multi-head para um checkpoint GQA, cada grupo de cabeças de chave e valor deve ser construído por meio do meanpooling de todas as cabeças originais dentro desse grupo. Para mais detalhes, consulte este artigo. Se não for especificado, o valor padrão seránum_attention_heads. - hidden_act (
str, opcional, padrãosilu) — A função de ativação não linear (função ou string) no decodificador. Por exemplo,"gelu","relu","silu", etc. - initializer_range (
float, opcional, padrão0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos. - rms_norm_eps (
float, opcional, padrão1e-05) — O epsilon usado pelas camadas de normalização rms. - use_cache (
bool, opcional, padrãoTrue) — Se o modelo deve ou não retornar as últimas chaves/valores de atenção (não usado por todos os modelos). Relevante apenas seconfig.is_decoder=Trueou quando o modelo for um modelo generativo somente decodificador. - num_logits_to_keep (
intorNone, opcional, padrão 1) — Número de logits do prompt a serem calculados durante a geração. SeNone, todos os logits serão calculados. Se um valor inteiro, apenas os últimosnum_logits_to_keeplogits serão calculados. O padrão é 1, pois apenas os logits do último token do prompt são necessários para a geração. Para sequências longas, os logits da sequência inteira podem consumir muita memória, portanto, definirnum_logits_to_keep=1reduzirá significativamente o uso de memória. - pad_token_id (
int, opcional, padrão0) — ID do token usado para preenchimento no vocabulário. - bos_token_id (
int, opcional, padrão1) — ID do token usado para o início do fluxo no vocabulário. - eos_token_id (
Union[int, list[int]], opcional, padrão2) — ID do token usado para o fim do fluxo no vocabulário. - max_position_embeddings (
int, opcional, padrão8192) — O comprimento máximo de sequência com o qual este modelo pode ser utilizado. - attention_dropout (
Union[float, int], opcional, padrão0.0) — A taxa de dropout para as probabilidades de atenção. - mamba_d_ssm (
int, opcional, padrão1024) — Tamanho do estado interno do SSM (modelo de espaço de estados) nas camadas Mamba do FalconH1. - mamba_n_heads (
int, opcional, padrão128) — O número de cabeças mamba usadas na implementação v2. - mamba_d_head (
Union[str, int], opcional, padrãoauto) — Tamanho da dimensão de incorporação da cabeça - mamba_n_groups (
int, opcional, padrão1) — O número de grupos mamba usados na implementação v2. - mamba_d_state (
int, opcional, padrão256) — Tamanho do estado do SSM (dimensão do estado latente) nas camadas Mamba. - mamba_d_conv (
int, opcional, padrão4) — O tamanho do kernel de convolução do mamba - mamba_expand (
int, opcional, padrão2) — Fator de expansão (em relação a hidden_size) usado para determinar o tamanho intermediário do mamba - mamba_chunk_size (
int, opcional, padrão256) — Os blocos em que a sequência deve ser dividida durante o prefill/treinamento - mamba_conv_bias (
bool, opcional, padrãoTrue) — Indica se deve ou não usar viés na camada de convolução do bloco mamba mixer. - mamba_proj_bias (
bool, opcional, padrãoFalse) — Indica se deve ou não usar viés nas projeções de entrada e saída ([“in_proj”, “out_proj”]) do bloco mamba mixer - mamba_norm_before_gate (
bool, opcional, padrãoTrue) — Indica se a normalização deve ser aplicada antes do mecanismo de gating no mixer Mamba. - mamba_rms_norm (
bool, opcional, padrãoFalse) — Se deve usar normalização RMS nas camadas Mamba (em oposição ao LayerNorm padrão). - time_step_limit (
Union[list[float, float], tuple[float, float]], opcional, padrão(0.0, inf)) — Intervalo aceito de valores de passo de tempo para clamping. - projectors_bias (
bool, opcional, padrãoFalse) — Indica se deve ou não usar viés nas projeções de entrada e saída ([“in_proj”, “out_proj”]) do bloco de atenção - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], opcional) — Dicionário contendo os parâmetros de configuração para os embeddings RoPE. O dicionário deve conter um valor pararope_thetae, opcionalmente, parâmetros usados para escalonamento, caso você queira usar RoPE commax_position_embeddingsmaiores. - lm_head_multiplier (
float, opcional, padrão 1.0) — O multiplicador para o LM head. Isso é usado para escalar a saída do LM head. - embedding_multiplier (
float, opcional, padrão 1.0) — O multiplicador da camada de embedding. Isso é usado para escalar a saída da camada de embedding. - mlp_multipliers (
list[float], opcional) — Os multiplicadores das camadas MLP. Isso é usado para escalar a saída das camadas MLP. O primeiro valor é o multiplicador da camada gate, e o segundo valor é o multiplicador da camada down_proj. - key_multiplier (
float, opcional) — O multiplicador para a camada de chave. Isso é usado para escalar a saída da camada de chave. - attention_out_multiplier (
float, opcional) — O multiplicador para a camada de saída da atenção. Isso é usado para escalar a saída da camada de saída da atenção - attention_in_multiplier (
float, opcional) — O multiplicador para a camada de entrada de atenção. Isso é usado para escalar a saída da camada de entrada de atenção. - ssm_multipliers (
list[float], opcional) — Os multiplicadores para as camadas SSM. Isso é usado para escalar a saída das camadas SSM. - ssm_in_multiplier (
float, opcional) — O multiplicador para a camada de entrada do SSM. Isso é usado para escalar a saída da camada de entrada do SSM. - ssm_out_multiplier (
float, opcional) — O multiplicador para a camada de saída do SSM. Isso é usado para escalar a saída da camada de saída do SSM. - attention_bias (
bool, opcional, padrãoFalse) — Indica se deve ser usado um viés nas camadas de projeção de query, key, value e output durante a autoatenção. - mlp_bias (
bool, opcional, padrãoFalse) — Se deve usar um viés nas camadas up_proj, down_proj e gate_proj das camadas MLP.
Esta é a classe de configuração para armazenar a configuração de um FalconH1Model. Ela é usada para instanciar um modelo Falcon H1 de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do tiiuae/Falcon-H1-1.5B-Deep-Instruct
Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.
FalconH1ForCausalLM
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("tiiuae/Falcon-H1-7B-Instruct", device_map="auto")
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).to(model.device)
response = model.generate(**inputs, max_new_tokens=64)
print(tokenizer.batch_decode(response, skip_special_tokens=True)[0])classe transformers.FalconH1ForCausalLM
< source >( config: FalconH1Config )
Parâmetros
- config (FalconH1Config) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
O Modelo Falcon H1 para modelagem de linguagem causal.
Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)
Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs ) → CausalLMOutputWithPast or tuple(torch.FloatTensor)
Parâmetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices dos tokens da sequência de entrada no vocabulário. O padding será ignorado por padrão.Os índices podem ser obtidos usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.
- attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar a execução de atenção nos índices de tokens de preenchimento. Valores de máscara selecionados em[0, 1]:- 1 para tokens que não estão mascarados,
- 0 para tokens que estão mascarados.
- position_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices das posições dos tokens de cada sequência de entrada nos embeddings de posição. Selecionados no intervalo[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção e nos blocos de atenção cruzada) que podem ser usados para acelerar a decodificação sequencial. Isso geralmente consiste nopast_key_valuesretornado pelo modelo em uma etapa anterior da decodificação, quandouse_cache=Trueouconfig.use_cache=True.Apenas uma instância de Cache é permitida como entrada, consulte nosso guia de cache de kv. Se nenhum
past_key_valuesfor passado, DynamicCache será inicializado por padrão.O modelo sairá no mesmo formato de cache que é fornecido como entrada.
Se
past_key_valuesforem usados, espera-se que o usuário insira apenas osinput_idsnão processados (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo) com a forma(batch_size, unprocessed_length), em vez de todos osinput_idscom a forma(batch_size, sequence_length). - inputs_embeds (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passarinput_ids, você pode escolher passar diretamente uma representação incorporada. Isso é útil se você quiser ter mais controle sobre como converter os índices deinput_idsnos vetores associados do que a matriz de incorporação interna do modelo. - labels (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Rótulos para o cálculo da perda de modelagem de linguagem mascarada. Os índices devem estar em[0, ..., config.vocab_size]ou ser -100 (veja a docstring deinput_ids). Tokens com índices definidos como-100são ignorados (mascarados); a perda é calculada apenas para os tokens com rótulos em[0, ..., config.vocab_size]. - use_cache (
bool, opcional) — Se definido comoTrue, os estados de chave-valorpast_key_valuessão retornados e podem ser usados para acelerar a decodificação (vejapast_key_values). - logits_to_keep (
Union[int, torch.Tensor], opcional, padrão0) — Se for umint, calcula os logits para os últimoslogits_to_keeptokens. Se for0, calcula os logits para todos osinput_ids(caso especial). Apenas os logits do último token são necessários para a geração, e calculá-los apenas para esse token pode economizar memória, o que se torna bastante significativo para sequências longas ou tamanho de vocabulário grande. Se for umtorch.Tensor, deve ser 1D, correspondendo aos índices a serem mantidos na dimensão de comprimento da sequência. Isso é útil ao usar o formato de tensor empacotado (uma única dimensão para lote e comprimento da sequência).
Retorna
CausalLMOutputWithPast ou tuple(torch.FloatTensor)
Um CausalLMOutputWithPast ou uma tupla de
torch.FloatTensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (FalconH1Config) e das entradas.
O método forward de FalconH1ForCausalLM substitui o método especial __call__.
Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de
Moduleem seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.
loss (
torch.FloatTensorde forma(1,), opcional, retornado quandolabelsé fornecido) — Perda de modelagem de linguagem (para previsão do próximo token).logits (
torch.FloatTensorde forma(batch_size, sequence_length, config.vocab_size)) — Pontuações de previsão da cabeça de modelagem de linguagem (pontuações para cada token do vocabulário antes do SoftMax).past_key_values (
Cache, opcional, retornado quandouse_cache=Trueé passado ou quandoconfig.use_cache=True) — É uma instância de Cache. Para mais detalhes, consulte nosso guia de cache kv.Contém estados ocultos pré-computados (chaves e valores nos blocos de autoatenção) que podem ser usados (veja a entrada
past_key_values) para acelerar a decodificação sequencial.hidden_states (
tuple(torch.FloatTensor), opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) com formato(batch_size, sequence_length, hidden_size).Estados ocultos do modelo na saída de cada camada, além das saídas opcionais do embedding inicial.
attentions (
tuple(torch.FloatTensor), opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(uma para cada camada) com a forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
Exemplo:
>>> 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."Esta implementação do HF foi contribuída por younesbelkada e DhiaEddineRhaiem.
Update on GitHub