Transformers documentation
Modelos
Modelos
A classe base PreTrainedModel implementa os métodos comuns para carregar/salvar um modelo a partir de um arquivo ou diretório local, ou a partir de uma configuração de modelo pré-treinado fornecida pela biblioteca (baixada do Hub da HuggingFace).
PreTrainedModel também implementa alguns métodos comuns a todos os modelos para:
- redimensionar os embeddings de tokens de entrada quando novos tokens são adicionados ao vocabulário
Os outros métodos comuns a cada modelo são definidos em ModuleUtilsMixin e GenerationMixin.
PreTrainedModel
Classe base para todos os modelos.
PreTrainedModel cuida do armazenamento da configuração dos modelos e gerencia os métodos para carregar, baixar e salvar modelos, além de alguns métodos comuns a todos os modelos:
- redimensionar os embeddings de entrada
Atributos de classe (substituídos por classes derivadas):
- config_class (PreTrainedConfig) — Uma subclasse de PreTrainedConfig a ser usada como classe de configuração para esta arquitetura de modelo.
- base_model_prefix (
str) — Uma string que indica o atributo associado ao modelo base em classes derivadas da mesma arquitetura que adicionam módulos sobre o modelo base. - main_input_name (
str) — O nome da entrada principal do modelo (frequentementeinput_idspara modelos de NLP,pixel_valuespara modelos de visão einput_valuespara modelos de fala). - can_record_outputs (dict):
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
Parâmetros
- repo_id (
str) — O nome do repositório para o qual você deseja enviar seu modelo. Deve conter o nome da sua organização ao enviar para uma organização específica. - commit_message (
str, opcional) — Mensagem de commit ao fazer push. O valor padrão é"Upload model". - commit_description (
str, opcional) — A descrição do commit que será criado - private (
bool, opcional) — Se deve tornar o repositório privado. SeNone(padrão), o repositório será público, a menos que o padrão da organização seja privado. Este valor é ignorado se o repositório já existir. - token (
booloustr, opcional) — O token a ser usado como autorização de bearer HTTP para arquivos remotos. SeTrue(padrão), usará o token gerado ao executarhf auth login(armazenado em~/.huggingface). - revision (
str, opcional) — Branch para a qual os arquivos enviados serão enviados. - create_pr (
bool, opcional, padrãoFalse) — Se deve ou não criar um PR com os arquivos enviados ou fazer o commit diretamente. - max_shard_size (
intoustr, opcional, padrão"50GB") — Aplicável apenas a modelos. O tamanho máximo de um checkpoint antes de ser dividido em shards. Os shards do checkpoint terão, então, cada um um tamanho menor que esse valor. Se expresso como string, deve ser composto por dígitos seguidos de uma unidade (como"5MB"). - tags (
list[str], opcional) — Lista de tags para enviar no Hub.
Envie o arquivo do modelo para o 🤗 Model Hub.
Exemplos:
from transformers import AutoModel
model = AutoModel.from_pretrained("google-bert/bert-base-cased")
# Push the model to your namespace with the name "my-finetuned-bert".
model.push_to_hub("my-finetuned-bert")
# Push the model to an organization with the name "my-finetuned-bert".
model.push_to_hub("huggingface/my-finetuned-bert")Desativa o checkpointing de ativação para o modelo atual.
activation_checkpointing_enable
< source >( activation_checkpointing_kwargs = Noneevery_n_layers: int = 1offload: bool = False )
Parâmetros
- every_n_layers (
int, opcional, padrão 1) — Cria checkpoint apenas a cadaevery_n_layers-ésima camada do decoder, mantendo as ativações das demais.1cria checkpoint em todas as camadas, o que é o comportamento usual de tudo-ou-nada. Valores maiores trocam memória por velocidade, o que vale a pena sempre que a memória liberada pelo checkpoint completo ficaria ociosa. - offload (
bool, opcional, padrãoFalse) — Mantém as ativações salvas para o recompute em memória de host fixada (pinned host memory) em vez de no acelerador. Isso liberalayers x sequence x hiddenbytes de memória de dispositivo, o que predomina em comprimentos de sequência longos, e custa uma cópia de dispositivo para host no forward e uma cópia de host para dispositivo no backward. Ambas as cópias são executadas no stream de computação, portanto o passo fica mais lento. - activation_checkpointing_kwargs (dict, opcional) —
Argumentos de palavra-chave adicionais passados para a função
torch.utils.checkpoint.checkpoint.
Ativa o checkpointing de ativação para o modelo atual.
Passamos o método __call__ dos módulos em vez de forward porque __call__ anexa todos os hooks do módulo. https://discuss.pytorch.org/t/any-different-between-model-input-and-model-forward-input/3690/2
add_model_tags
< source >( tags: list[str] | str )
Adiciona tags personalizadas ao modelo que será enviado ao Hugging Face Hub. Não substituirá as tags existentes no modelo.
can_generate
< source >( ) → bool
Retorna
bool
Se este modelo pode gerar sequências com .generate().
Indica se este modelo pode gerar sequências com .generate(), a partir da GenerationMixin ou de uma com interface semelhante.
Por baixo dos panos, nas classes em que esta função retorna True, algumas alterações específicas de geração são acionadas: por exemplo, a instância do modelo terá um atributo generation_config preenchido.
Um valor simulado para um caminho pontilhado (por exemplo, torch.float32): cadeias de acesso a atributos, chamadas se comportam como decoradores de passagem, repr é o caminho pontilhado, e usá-lo como classe base substitui uma base de type simples (PEP 560 __mro_entries__), de modo que subclasses reais mantêm uma metaclass normal e inspect.signature lê o __init__ real delas, em vez do de um mock.
Potencialmente desquantize o modelo, caso ele tenha sido quantizado por um método de quantização que suporte a desquantização.
Remove o _require_grads_hook.
Ativa os gradientes para os embeddings de entrada. Isso é útil para ajustar os pesos do adaptador mantendo os pesos do modelo fixos.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike | None*model_argsconfig: transformers.configuration_utils.PreTrainedConfig | str | os.PathLike | None = Nonecache_dir: str | os.PathLike | None = Noneignore_mismatched_sizes: bool = Falseforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'use_safetensors: bool | None = Noneweights_only: bool = Truefusion_config: dict[str, bool | dict[str, typing.Any]] | None = Nonedisable_mmap: bool | None = None**kwargs )
Parâmetros
- pretrained_model_name_or_path (
strouos.PathLike, opcional) — Pode ser:- Uma string, o model id de um modelo pré-treinado hospedado em um repositório de modelos no huggingface.co.
- Um caminho para um diretório contendo pesos de modelo salvos usando
save_pretrained(), por exemplo,
./my_model_directory/. Diretórios salvos comsave_pretrained(..., distributed_checkpoint=True)são detectados e carregados com checkpoint distribuído (DCP), preservando a malha e os posicionamentos atuais do modelo. Isso requertorch>=2.7e carrega de forma estrita: cada chave do modelo deve estar presente no checkpoint. Nonese você estiver fornecendo tanto a configuração quanto o dicionário de estado (respectivamente, com os argumentos de palavra-chaveconfigestate_dict).
- model_args (sequência de argumentos posicionais, opcional) —
Todos os argumentos posicionais restantes serão passados para o método
__init__do modelo subjacente. - config (
Union[PreTrainedConfig, str, os.PathLike], opcional) — Pode ser:- uma instância de uma classe derivada de PreTrainedConfig,
- uma string ou caminho válido como entrada para from_pretrained().
Configuração para o modelo a ser usado em vez de uma configuração carregada automaticamente. A configuração pode ser carregada automaticamente quando:
- O modelo é um modelo fornecido pela biblioteca (carregado com a string model id de um modelo pré-treinado).
- O modelo foi salvo usando save_pretrained() e é recarregado fornecendo o diretório de salvamento.
- O modelo é carregado ao fornecer um diretório local como
pretrained_model_name_or_pathe um arquivo JSON de configuração chamado config.json é encontrado no diretório.
- state_dict (
dict[str, torch.Tensor], opcional) — Um dicionário de estado para usar em vez de um dicionário de estado carregado de um arquivo de pesos salvos. Essa opção pode ser usada se você quiser criar um modelo a partir de uma configuração pré-treinada, mas carregar seus próprios pesos. Nesse caso, no entanto, você deve verificar se o uso de save_pretrained() e from_pretrained() não é uma opção mais simples.Essa opção pode ser usada se você deseja criar um modelo a partir de uma configuração pré-treinada, mas carregar seus próprios pesos. Nesse caso, no entanto, você deve verificar se o uso de save_pretrained() e from_pretrained() não é uma opção mais simples.
- cache_dir (
Union[str, os.PathLike], opcional) — Caminho para um diretório em que a configuração de um modelo pré-treinado baixado deve ser armazenada em cache, caso o cache padrão não deva ser usado. - ignore_mismatched_sizes (
bool, opcional, padrãoFalse) — Indica se deve ou não lançar um erro caso alguns dos pesos do checkpoint não tenham o mesmo tamanho que os pesos do modelo (por exemplo, se você estiver instanciando um modelo com 10 rótulos a partir de um checkpoint com 3 rótulos). - force_download (
bool, opcional, padrãoFalse) — Indica se deve forçar o (re)download dos pesos do modelo e dos arquivos de configuração, sobrescrevendo as versões em cache, caso existam. - proxies (
dict[str, str], opcional) — Um dicionário de servidores proxy a serem usados por protocolo ou endpoint, por exemplo,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Os proxies são usados em cada solicitação. - output_loading_info(
bool, opcional, padrãoFalse) — Indica se deve ou não retornar também um dicionário contendo chaves ausentes, chaves inesperadas e mensagens de erro. - local_files_only(
bool, opcional, padrãoFalse) — Indica se deve procurar apenas em arquivos locais (ou seja, não tentar baixar o modelo). - token (
stroubool, opcional) — O token a ser usado como autorização bearer HTTP para arquivos remotos. SeTrue, ou não especificado, usará o token gerado ao executarhf auth login(armazenado em~/.huggingface). - revision (
str, opcional, padrão é"main") — A versão específica do modelo a ser usada. Pode ser o nome de uma branch, o nome de uma tag ou um commit id, pois usamos um sistema baseado em git para armazenar modelos e outros artefatos no huggingface.co, portantorevisionpode ser qualquer identificador permitido pelo git.Para testar um pull request que você fez no Hub, você pode passar
revision="refs/pr/<pr_number>". - attn_implementation (
str, opcional) — A implementação de atenção a ser usada no modelo (se aplicável). Pode ser qualquer uma das seguintes:"eager"(implementação manual da atenção)"sdpa"(usandoF.scaled_dot_product_attention)"flash_attention_2"(usando Dao-AILab/flash-attention)"flash_attention_3"(usando Dao-AILab/flash-attention/hopper)"flash_attention_4"(usando Dao-AILab/flash-attention/flash_attn/cute). Por padrão, se disponível, o SDPA será usado. Caso contrário, o padrão é a implementação manual"eager".
Aceite referências de kernel do HF no formato:
/ [@ ][: ] e são sequências quaisquer que não contenham "/" nem ":". - “@
” é opcional (branch, tag ou commit-ish), por exemplo, “@main”, “@v1.2.0”, “@abc123”. - ”:
” é opcional e seleciona uma função dentro do repositório do kernel. - Ambas as opções podem aparecer juntas e somente nesta ordem: @revision primeiro, depois :kernel_name.
- Permitimos intencionalmente um prefixo inicial “
|” (por exemplo, “flash|…”) porque o código o remove antes de carregar; o “|” não é excluído nas classes de caracteres aqui.
Exemplos que correspondem: “org/model” “org/model@main” “org/model:custom_kernel” “org/model@v1.2.3:custom_kernel”
- experts_implementation (
str, opcional) — A implementação dos experts a ser usada no modelo (se aplicável). Pode ser uma das seguintes:"eager"(implementação sequencial das multiplicações de matrizes dos especialistas)."batched_mm"(usandotorch.bmm)."grouped_mm"(usandotorch.nn.functional.grouped_mm).
Por padrão, se o modelo for compatível,
"grouped_mm"será utilizado. Caso contrário, o padrão é a implementação manual"eager".
Parâmetros para inferência de modelos grandes
- dtype (
stroutorch.dtype, opcional, padrão é"auto") — Substitua o padrãotorch_dtypee carregue o modelo em umdtype. As diferentes opções são:-
torch.float16outorch.bfloat16outorch.float: carrega em umdtypeespecificado, ignorando oconfig.dtypedo modelo, se existir. Se não for especificado- o modelo será carregado em
torch.float(fp32).
- o modelo será carregado em
-
"auto"- Será tentado o uso de uma entradadtypeoutorch_dtypeno arquivoconfig.jsondo modelo. Se essa entrada não for encontrada, em seguida, verifique odtypedo primeiro peso no checkpoint que seja de um tipo de ponto flutuante e use-o comodtype. Isso carregará o modelo usando odtypeem que ele foi salvo ao final do treinamento. Não pode ser usado como indicador de como o modelo foi treinado, pois ele pode ter sido treinado em um dos dtypes de meia precisão, mas salvo em fp32. -
Uma string que é um
torch.dtypeválido. Por exemplo, “float32” carrega o modelo emtorch.float32, “float16” carrega emtorch.float16, etc.
Para alguns modelos, o
dtypeno qual foram treinados é desconhecido - você pode tentar verificar o paper do modelo ou entrar em contato com os autores e pedir que adicionem essa informação ao card do modelo e insiram a entradadtypeoutorch_dtypeemconfig.jsonno hub. -
- device_map (
stroudict[str, Union[int, str, torch.device]]ouintoutorch.device, opcional) — Um mapa que especifica para onde cada submódulo deve ser enviado. Não é necessário refinar para cada nome de parâmetro/buffer, pois, uma vez que um nome de módulo está incluído, todos os seus submódulos serão enviados para o mesmo dispositivo. Se passarmos apenas o dispositivo (e.g.,"cpu","cuda:1","mps", ou uma ordem ordinal de GPU, como1) no qual o modelo será alocado, o mapa de dispositivos mapeará o modelo inteiro para esse dispositivo. Passardevice_map = 0significa colocar o modelo inteiro na GPU 0. Para que o Accelerate calcule automaticamente o device_map mais otimizado, defina device_map="auto". Para mais informações sobre cada opção, consulte o projeto de um mapa de dispositivos.Para que o Accelerate calcule automaticamente o
device_mapmais otimizado, definadevice_map="auto". Para mais informações sobre cada opção, consulte projetando um mapa de dispositivos. - max_memory (
Dict, opcional) — Um dicionário de identificador de dispositivo para a memória máxima, caso esteja usandodevice_map. Se não for definido, o padrão será a memória máxima disponível para cada GPU e a RAM de CPU disponível. - distributed_config (DistributedConfig, opcional) —
Configuração para carregamento distribuído nativo com paralelismo de tensor ou FSDP2. Passe
DistributedConfig(tp_size=N)para usar o plano de paralelismo de tensor predefinido de um modelo,DistributedConfig(tp_plan=...)para especificar um plano de paralelismo de tensor, ouDistributedConfig(fsdp_size=N)para FSDP2. Exigetorchrune um grupo de processos inicializado quandotp_size > 1oufsdp_size > 1. Mutuamente exclusivo comdevice_map. - device_mesh (
torch.distributed.DeviceMesh, opcional) — Um device mesh do torch. Se não for fornecido, o padrão será o world size. Atualmente, é usado apenas para tensor parallel. Se fornecido, ele deve conter uma dimensão nomeada"tp"caso seja de mais de 1 dimensão; essa dimensão será usada para tensor parallelism. - offload_folder (
strouos.PathLike, opcional) — Se odevice_mapcontiver qualquer valor"disk", a pasta onde os pesos serão descarregados. - offload_buffers (
bool, opcional) — Se os buffers com os parâmetros do modelo devem ser descarregados ou não. - quantization_config (
Union[QuantizationConfigMixin,Dict], opcional) — Um dicionário de parâmetros de configuração ou um objeto QuantizationConfigMixin para quantização (por exemplo, bitsandbytes, gptq). - subfolder (
str, opcional, padrão"") — Caso os arquivos relevantes estejam localizados em uma subpasta do repositório do modelo no huggingface.co, você pode especificar o nome da pasta aqui. - variant (
str, opcional) — Se especificado, carrega os pesos do arquivovariant, por exemplo pytorch_model..bin. - use_safetensors (
bool, opcional, padrãoNone) — Indica se deve ou não usar checkpoints dosafetensors. O padrão éNone. Se não for especificado e osafetensorsnão estiver instalado, o valor será definido comoFalse. - weights_only (
bool, opcional, padrãoTrue) — Indica se o unpickler deve ser restrito a carregar apenas tensores, tipos primitivos, dicionários e quaisquer tipos adicionados via torch.serialization.add_safe_globals(). Quando definido como False, é possível carregar pesos de subclasses de tensores com wrapper. - disable_mmap (
bool, opcional) — Se deve desabilitar o mapeamento de memória ao carregar checkpoints em safetensors. QuandoNone(padrão), é detectado automaticamente comoTruequando o checkpoint está em um sistema de arquivos FUSEhf-mount(usado por HF Spaces/Endpoints), onde mmap + page-faults paralelos podem causar deadlock. QuandoTrue, os arquivos são lidos totalmente para a memória e analisados comsafetensors.torch.load. QuandoFalse, o carregador com mapeamento de memória padrão é sempre utilizado. - fusion_config (
dict[str, bool | dict[str, Any]], opcional) — Configuração de fusão opcional aplicada antes da instanciação do modelo. Cada chave habilita uma família de fusão e seu valor pode serTruepara habilitar aquela fusão com as opções padrão ou um dicionário de opções específicas da família. Por exemplo,{"patch_embeddings": True}habilita a fusão de patch embedding. Isso deve ser usado apenas como uma otimização de inferência, pois pode alterar ligeiramente as saídas. Se omitido,from_pretrained()recorre aconfig.fusion_configquando disponível. Consulte o guia de mapeamento de fusão emdocs/source/en/fusion_mapping.mdpara mais detalhes. - key_mapping (`dict[str, str], opcional) — Um mapeamento potencial dos nomes dos pesos, caso esteja usando um modelo no Hub que seja compatível com uma arquitetura do Transformers, mas que não foi convertido de acordo.
- kwargs (dicionário restante de argumentos por palavra-chave, opcional) —
Pode ser usado para atualizar o objeto de configuração (após o carregamento) e iniciar o modelo (por exemplo,
output_attentions=True). O comportamento varia conforme umaconfigé fornecida ou carregada automaticamente:- Se uma configuração for fornecida com
config,**kwargsserá passado diretamente para o método__init__do modelo subjacente (assumimos que todas as atualizações relevantes à configuração já foram realizadas) - Se uma configuração não for fornecida,
kwargsserá primeiro passado para a função de inicialização da classe de configuração (from_pretrained()). Cada chave dekwargsque corresponde a um atributo de configuração será usada para sobrescrever o referido atributo com o valor dekwargsfornecido. As chaves restantes que não correspondem a nenhum atributo de configuração serão passadas para a função__init__do modelo subjacente.
- Se uma configuração for fornecida com
Instancie um modelo pytorch pré-treinado a partir de uma configuração de modelo pré-treinado.
O modelo é definido no modo de avaliação por padrão usando model.eval() (os módulos Dropout são desativados). Para treinar
o modelo, você deve primeiro redefinir o modo de treinamento com model.train().
O aviso Weights from XXX not initialized from pretrained model significa que os pesos de XXX não vêm pré-treinados junto com o restante do modelo. Cabe a você treinar esses pesos com uma tarefa de ajuste fino de nível inferior.
O aviso Weights from XXX not used in YYY significa que a camada XXX não é utilizada por YYY, portanto, esses pesos são descartados.
Ative o modo especial “offline-mode” para usar este método em um ambiente com firewall.
Exemplos:
>>> from transformers import BertConfig, BertModel
>>> # Download model and configuration from huggingface.co and cache.
>>> model = BertModel.from_pretrained("google-bert/bert-base-uncased")
>>> # Model was saved using *save_pretrained('./test/saved_model/')* (for example purposes, not runnable).
>>> model = BertModel.from_pretrained("./test/saved_model/")
>>> # Update configuration during loading.
>>> model = BertModel.from_pretrained("google-bert/bert-base-uncased", output_attentions=True)
>>> assert model.config.output_attentions == Trueget_compiled_call
< source >( compile_config: transformers.generation.configuration_utils.CompileConfig | None )
Retorna uma versão compilada com torch.compile de self.__call__. Isso é útil para escolher dinamicamente entre forward não compilado/compilado durante a inferência, especialmente para alternar entre prefill (onde não queremos usar a versão compilada para evitar a recomputação do grafo com novos formatos) e decodificação iterativa (onde queremos as acelerações da versão compilada com formatos estáticos).
Busca de melhor esforço do módulo decoder.
Ordem das tentativas (cobre ~85 % dos usos atuais):
self.decoder/self.language_model/self.text_modelself.base_model(muitos wrappers armazenam o decoder aqui)self.base_model.get_decoder()(wrappers aninhados)- fallback: lançar exceção para os poucos modelos exóticos que exigem uma regra personalizada
Busca de melhor esforço do módulo encoder. Se fornecido com o argumento modality,
ele procura por um encoder específico da modalidade em modelos multimodais (por exemplo, “image_encoder”)
Por padrão, a função retorna o encoder de texto do modelo, se houver, e caso contrário retorna self.
Os valores possíveis para modality são “image”, “video” e “audio”.
Retorna as chaves de pesos vinculados expandidos (caso contenham módulos ou padrões de expressão regular) apenas para o modelo atual, ou recursivamente para todos os submodelos, se all_submodels=True (ou seja, ele reavaliará os valores de configuração para todos os submodelos).
Para quase todos os modelos, é necessário apenas vincular os embeddings, de modo que o modelo possui uma propriedade interna _tied_weights_keys = {"lm_head.weight": "model.embed_tokens.weight"}. Nesse caso, o mapeamento já está
“expandido”, ou seja, já contém os parâmetros completos, e esta função simplesmente retornará uma cópia da propriedade.
Para padrões mais complexos, por exemplo, para DFineForObjectDetection, temos o seguinte atributo
_tied_weights_keys = {
r"bbox_embed.(?![0])\d+": "bbox_embed.0",
r"class_embed.(?![0])\d+": "class_embed.0",
"model.decoder.class_embed": "class_embed",
"model.decoder.bbox_embed": "bbox_embed",
}retornando o seguinte:
{
'bbox_embed.1.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'bbox_embed.1.layers.0.weight': 'bbox_embed.0.layers.0.weight',
'bbox_embed.1.layers.1.bias': 'bbox_embed.0.layers.1.bias',
'bbox_embed.1.layers.1.weight': 'bbox_embed.0.layers.1.weight',
'bbox_embed.1.layers.2.bias': 'bbox_embed.0.layers.2.bias',
'bbox_embed.1.layers.2.weight': 'bbox_embed.0.layers.2.weight',
'bbox_embed.2.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'bbox_embed.2.layers.0.weight': 'bbox_embed.0.layers.0.weight',
...
'class_embed.1.bias': 'class_embed.0.bias',
'class_embed.1.weight': 'class_embed.0.weight',
'class_embed.2.bias': 'class_embed.0.bias',
'class_embed.2.weight': 'class_embed.0.weight',
...
'model.decoder.class_embed.0.bias': 'class_embed.0.bias',
'model.decoder.class_embed.0.weight': 'class_embed.0.weight',
'model.decoder.class_embed.1.bias': 'class_embed.0.bias',
'model.decoder.class_embed.1.weight': 'class_embed.0.weight',
...
'model.decoder.bbox_embed.0.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'model.decoder.bbox_embed.0.layers.0.weight': 'bbox_embed.0.layers.0.weight',
'model.decoder.bbox_embed.0.layers.1.bias': 'bbox_embed.0.layers.1.bias',
'model.decoder.bbox_embed.0.layers.1.weight': 'bbox_embed.0.layers.1.weight',
...
}Retorna a implementação dos especialistas deste modelo e de seus submodelos, como um dict no formato aceito por set_experts_implementation ("" para este modelo e uma entrada por sub_config). Este é o par de set_experts_implementation, por exemplo, para capturar a implementação atual e restaurá-la posteriormente.
get_memory_footprint
< source >( return_buffers = True )
Parâmetros
- return_buffers (
bool, opcional, padrãoTrue) — Se deve retornar o tamanho dos tensores de buffer no cálculo da pegada de memória. Buffers são tensores que não exigem gradientes e não estão registrados como parâmetros. Por exemplo, a média e o desvio padrão em camadas de normalização por lote. Consulte: https://discuss.pytorch.org/t/what-pytorch-means-by-buffers/120266/2
Obtenha a pegada de memória de um modelo. Isso retornará a pegada de memória do modelo atual em bytes. Útil para fazer o benchmark da pegada de memória do modelo atual e projetar alguns testes. Solução inspirada nas discussões do PyTorch: https://discuss.pytorch.org/t/gpu-memory-that-model-uses/56822/2
Retorna o parâmetro ou buffer indicado por target, caso exista; caso contrário, lança um erro. Esta função combina get_parameter() e get_buffer() em uma única função conveniente. Se o alvo for um atributo _extra_state, ela retornará o estado extra fornecido pelo módulo. Observe que isso só funciona se target for uma folha do modelo.
Alias obsoleto de activation_checkpointing_disable(), será removido na v6.
Alias obsoleto de activation_checkpointing_enable(), será removido na v6.
Inicialize e vincule os pesos, se necessário. Se estiver usando um PreTrainedModel personalizado, você precisa implementar a lógica de inicialização em _init_weights.
Isso é equivalente a chamar self.apply(self._initialize_weights), mas trata corretamente modelos compostos.
Esta função despacha dinamicamente a função init_weights correta para os módulos à medida que avançamos no
grafo de módulos ao longo da recursão. Ela pode lidar com um número arbitrário de submodelos. Sem ela, cada modelo
composto teria que recursar uma segunda vez em todos os submodelos explicitamente no _init_weights mais externo, o que
é extremamente propenso a erros e ineficiente.
Indica se o modelo atual é de código personalizado, ou seja, se o código foi carregado do hub ou definido em qualquer módulo/sessão específico do usuário.
Retorna se o modelo atual é de código personalizado, ou seja, código carregado do hub, ou uma classe que acabamos de registrar via register_for_auto_class.
Adiciona a flag _is_hf_initialized nos parâmetros que serão vinculados, a fim de evitar que sejam inicializados
posteriormente, já que serão vinculados (sobrescritos) de qualquer forma.
Isso é muito importante, pois a maioria dos embeddings é vinculada e são parâmetros enormes (os vocabulários frequentemente têm 256k),
então executar inits neles é muito custoso.
Semelhante a named_buffers, mas retorna apenas os não persistentes. É útil, pois não é totalmente óbvio saber se eles são persistentes ou não.
Um método executado ao final da inicialização de cada modelo Transformer, para executar código que requer que os módulos do modelo estejam devidamente inicializados (como a inicialização de pesos). Ele também é usado para obter todas as propriedades estáticas corretas (planos de paralelismo, tied_weights_keys, _keep_in_fp32_modules, etc.) corretamente no caso de modelos compostos (ou seja, o modelo de nível superior deve conhecer essas propriedades de seus filhos).
register_for_auto_class
< source >( auto_class = 'AutoModel' )
Registre esta classe com uma auto class específica. Isso deve ser usado apenas para modelos personalizados, pois os da biblioteca já estão mapeados com uma auto class.
resize_token_embeddings
< source >( new_num_tokens: int | None = Nonepad_to_multiple_of: int | None = Nonemean_resizing: bool = True ) → torch.nn.Embedding
Parâmetros
- new_num_tokens (
int, opcional) — O novo número de tokens na matriz de incorporação. Aumentar o tamanho adicionará vetores recém-inicializados no final. Reduzir o tamanho removerá vetores do final. Se não for fornecido ou forNone, retorna apenas um ponteiro para o módulotorch.nn.Embeddingde tokens de entrada do modelo, sem fazer nada. - pad_to_multiple_of (
int, opcional) — Se definido, o embedding matrix será preenchido até um múltiplo do valor fornecido. Senew_num_tokensestiver definido comoNone, apenas o embedding será preenchido até um múltiplo depad_to_multiple_of.Isso é especialmente útil para habilitar o uso de Tensor Cores em hardware NVIDIA com capacidade de computação
>= 7.5(Volta), ou em TPUs, que se beneficiam de ter comprimentos de sequência que sejam múltiplos de 128. Para mais detalhes sobre isso, ou ajuda na escolha do valor correto para o redimensionamento, consulte este guia: https://docs.nvidia.com/deeplearning/performance/dl-performance-matrix-multiplication/index.html#requirements-tc - mean_resizing (
bool) — Se as embeddings adicionadas devem ser inicializadas a partir de uma distribuição normal multivariada que possui a média e a covariância das embeddings antigas, ou se devem ser inicializadas com uma distribuição normal que tem média zero e desvio padrão igual aconfig.initializer_range.Definir
mean_resizingcomoTrueé útil ao aumentar o tamanho dos embeddings de modelos de linguagem causais, pois as probabilidades dos tokens gerados não serão afetadas pelos embeddings adicionados, uma vez que inicializar os novos embeddings com a média dos embeddings antigos reduzirá a divergência de KL entre a probabilidade do próximo token antes e depois da adição dos novos embeddings. Consulte este artigo para mais informações: https://nlp.stanford.edu/~johnhew/vocab-expansion.html
Retorna
torch.nn.Embedding
Ponteiro para o Módulo de Embeddings dos tokens de entrada do modelo.
Redimensiona a matriz de embeddings de tokens de entrada do modelo se new_num_tokens != config.vocab_size.
Cuida de vincular os pesos das embeddings em seguida, se a classe do modelo tiver um método tie_weights().
save_pretrained
< source >( save_directory: str | os.PathLikeis_main_process: bool = Truestate_dict: dict | None = Nonepush_to_hub: bool = Falsemax_shard_size: int | str = '50GB'variant: str | None = Nonetoken: str | bool | None = Nonesave_peft_format: bool = Truesave_original_format: bool = Truedistributed_checkpoint: bool = False**kwargs )
Parâmetros
- save_directory (
strouos.PathLike) — Diretório para onde salvar. Será criado se não existir. - is_main_process (
bool, opcional, padrãoTrue) — Indica se o processo que está chamando esta função é o processo principal. Útil em treinamento distribuído, como em TPUs, quando é necessário chamar esta função em todos os processos. Nesse caso, definais_main_process=Trueapenas no processo principal para evitar condições de corrida. - state_dict (dicionário aninhado de
torch.Tensor) — O dicionário de estado do modelo a ser salvo. O padrão éself.state_dict(), mas pode ser usado para salvar apenas partes do modelo ou quando forem necessárias precauções especiais ao recuperar o dicionário de estado de um modelo (como ao usar paralelismo de modelo). - push_to_hub (
bool, opcional, padrãoFalse) — Indica se o modelo deve ser enviado para o Hugging Face model hub após ser salvo. Você pode especificar o repositório de destino comrepo_id(por padrão, será usado o nome desave_directoryno seu namespace). - max_shard_size (
intoustr, opcional, padrão é"50GB") — O tamanho máximo de um checkpoint antes de ser dividido em shards. Os shards do checkpoint terão, então, cada um um tamanho menor que esse valor. Se expresso como string, deve ser composto por dígitos seguidos de uma unidade (como"5MB").Se um único peso do modelo for maior que
max_shard_size, ele ficará em seu próprio shard de checkpoint, que será maior quemax_shard_size. - variant (
str, opcional) — Se especificado, os pesos são salvos no formato model..safetensors. - token (
stroubool, opcional) — O token a ser usado como autorização bearer HTTP para arquivos remotos. SeTrue, ou não especificado, usará o token gerado ao executarhf auth login(armazenado em~/.huggingface). - save_peft_format (
bool, opcional, padrãoTrue) — Para compatibilidade reversa com a biblioteca PEFT, caso os pesos do adaptador estejam anexados ao modelo, todas as chaves do state dict dos adaptadores precisam ter o prefixobase_model.model. Usuários avançados podem desabilitar esse comportamento definindosave_peft_formatcomoFalse. - save_original_format (
bool, opcional, padrãoTrue) — Para compatibilidade com versões anteriores dotransformers, você pode salvar o checkpoint com o seu mapeamento reverso. O mapeamento reverso precisa existir mesmo que o modelo tenha sido carregado de um checkpoint legado None. - distributed_checkpoint (
bool, opcional, padrãoFalse) — Ao salvar um modelo particionado com FSDP ou TP, grava os safetensors com checkpoint distribuído (DCP) em vez de reunir os pesos na CPU primeiro. Todos os ranks devem chamar este método. QuandoFalse, os pesos são reunidos na CPU no rank 0 viagather_full_state_dictantes de gravar. É destinado apenas a salvar e retomar o treinamento; defina comoFalsese você quiser os recursos completos desave_pretrained. Compush_to_hub=True, o rank 0 consolida o checkpoint em um subdiretórioconsolidated/e faz o upload desse diretório. Requertorch>=2.7. - kwargs (
dict[str, Any], opcional) — Argumentos de palavra-chave adicionais passados ao método push_to_hub().
Salve um modelo e seu arquivo de configuração em um diretório, para que ele possa ser recarregado usando o método de classe from_pretrained().
set_attn_implementation
< source >( attn_implementation: str | dictallow_all_kernels: bool = False )
Parâmetros
- attn_implementation (
stroudict) — A implementação de atenção a ser definida para este modelo. Pode ser umastr, caso em que será distribuída para todos os submodelos, se aplicável, ou umdictem que as chaves são os nomes dos sub_configs, caso em que cada submodelo distribuirá o valor correspondente (a si mesmo e a todos os submodelos aninhados nele). Um valor pode ser, ele mesmo, umdictno mesmo formato, para direcionar os sub_configs daquele submodelo (como ao inicializar um config com umattn_implementationdict aninhado). - allow_all_kernels (
bool, opcional) — Se deve carregar kernels de repositórios não verificados do hub, casoattn_implementationseja um kernel personalizado fora do repositório do hubkernels-community.
Defina o attn_implementation solicitado para este modelo.
Setter simétrico. Espelha a lógica de busca usada em get_decoder.
Definidor simétrico. Espelha a lógica de consulta usada em get_encoder.
set_experts_implementation
< source >( experts_implementation: str | dict )
Parâmetros
- experts_implementation (
stroudict) — A implementação de experts a ser definida para este modelo. Pode ser umstr, caso em que será distribuída para todos os submodelos, se aplicável, ou umdictem que as chaves são os nomes dos sub_configs, caso em que cada submodelo distribuirá o valor correspondente.
Defina o experts_implementation solicitado para este modelo.
set_use_kernels
< source >( use_kernelskernel_config: transformers.utils.kernel_config.KernelConfig | None = Nonemode: Mode | None = None )
Parâmetros
- use_kernels (
bool) — Indica se a bibliotecakernelsdeve ser usada para kernelizar algumas camadas do modelo. - kernel_config (
KernelConfig, opcional) — A configuração de kernel a ser usada para kernelizar o modelo. SeNone, o mapeamento de kernel padrão será utilizado. - mode (
Mode, opcional) — O modo que deve ser aplicado durante okernelize. Opcional, padrão é o modo de treinamento ou inferência, com base na flag internatraining.
Defina se a biblioteca kernels deve ser usada para kernelizar algumas camadas do modelo.
Vincule os pesos do modelo. Se recompute_mapping=False (padrão quando chamado internamente), ele dependerá do atributo model.all_tied_weights_keys, que contém o mapeamento {target: source} para os parâmetros vinculados.
Se recompute_mapping=True, ele reavaliará todos os submodelos internos e seus configs para determinar os parâmetros
que precisam ser vinculados. Este é o padrão quando model.tie_weights() é chamado isoladamente, fora de __init__ e from_pretrained, caso os valores do config tenham sido alterados em algum lugar.
Observe que, durante o from_pretrained, a vinculação é simétrica: se o mapeamento indica “tie target -> source”, mas source está ausente no checkpoint enquanto target existe, fazemos a troca de source e target para que ainda seja possível vincular tudo ao parâmetro que realmente existe.
Um valor simulado para um caminho pontilhado (por exemplo, torch.float32): cadeias de acesso a atributos, chamadas se comportam como decoradores de passagem, repr é o caminho pontilhado, e usá-lo como classe base substitui uma base de type simples (PEP 560 __mro_entries__), de modo que subclasses reais mantêm uma metaclass normal e inspect.signature lê o __init__ real delas, em vez do de um mock.
Exibe um aviso único se os input_ids parecerem conter preenchimento (padding) e nenhuma máscara de atenção foi fornecida.
Modelos personalizados também devem incluir um _supports_assign_param_buffer, que determina se o superfast init pode ser aplicado ao modelo específico. Indícios de que seu modelo precisa disso são se test_save_and_load_from_pretrained falhar. Se for o caso, defina isso como False.
ModuleUtilsMixin
Algumas utilidades para torch.nn.Modules, para serem usadas como um mixin.
num_parameters
< source >( only_trainable: bool = Falseexclude_embeddings: bool = False ) → int
Obtém o número de parâmetros (opcionalmente, treináveis ou não de incorporação) no módulo.
Enviando para o Hub
Uma Mixin que contém a funcionalidade para enviar um modelo ou tokenizer para o hub.
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
Parâmetros
- repo_id (
str) — O nome do repositório para o qual você deseja enviar seu {object}. Deve conter o nome da sua organização ao enviar para uma organização específica. - commit_message (
str, opcional) — Mensagem de commit ao fazer push. O valor padrão é"Upload {object}". - commit_description (
str, opcional) — A descrição do commit que será criado - private (
bool, opcional) — Se deve tornar o repositório privado. SeNone(padrão), o repositório será público, a menos que o padrão da organização seja privado. Este valor é ignorado se o repositório já existir. - token (
booloustr, opcional) — O token a ser usado como autorização de bearer HTTP para arquivos remotos. SeTrue(padrão), usará o token gerado ao executarhf auth login(armazenado em~/.huggingface). - revision (
str, opcional) — Branch para a qual os arquivos enviados serão enviados. - create_pr (
bool, opcional, padrãoFalse) — Se deve ou não criar um PR com os arquivos enviados ou fazer o commit diretamente. - max_shard_size (
intoustr, opcional, padrão"50GB") — Aplicável apenas a modelos. O tamanho máximo de um checkpoint antes de ser dividido em shards. Os shards do checkpoint terão, então, cada um um tamanho menor que esse valor. Se expresso como string, deve ser composto por dígitos seguidos de uma unidade (como"5MB"). - tags (
list[str], opcional) — Lista de tags para enviar no Hub.
Faça o upload do {object_files} para o 🤗 Model Hub.
Exemplos:
from transformers import {object_class}
{object} = {object_class}.from_pretrained("google-bert/bert-base-cased")
# Push the {object} to your namespace with the name "my-finetuned-bert".
{object}.push_to_hub("my-finetuned-bert")
# Push the {object} to an organization with the name "my-finetuned-bert".
{object}.push_to_hub("huggingface/my-finetuned-bert")