Hub documentation

Usando 🤗 transformers na Hugging Face

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Usando 🤗 transformers na Hugging Face

🤗 transformers é uma biblioteca mantida pela Hugging Face e pela comunidade, para Machine Learning de ponta em PyTorch, TensorFlow e JAX. Ela oferece milhares de modelos pré-treinados para executar tarefas em diferentes modalidades, como texto, visão e áudio. Somos um pouco parciais, mas realmente gostamos do 🤗 transformers!

Explorando o 🤗 transformers no Hub

Há mais de 630.000 modelos transformers no Hub, que você pode encontrar filtrando à esquerda de a página de modelos.

Você pode encontrar modelos para muitas tarefas diferentes:

Você pode testar os modelos diretamente no navegador, sem precisar baixá-los, graças aos widgets integrados ao navegador!

Arquivos do repositório Transformers

Um repositório de modelos do Transformers geralmente contém arquivos de modelo e arquivos de pré-processador.

Model

  • O arquivo config.json armazena detalhes sobre a arquitetura do modelo, como o número de camadas ocultas, o tamanho do vocabulário, o número de cabeças de atenção, as dimensões de cada cabeça e muito mais. Esses metadados são o plano do modelo.

  • O arquivo model.safetensors armazena as camadas e os pesos pré-treinados dos modelos. Para modelos grandes, o arquivo safetensors é dividido em fragmentos para limitar a quantidade de memória necessária para carregá-lo. Consulte o arquivo model.safetensors.index.json para ver de qual arquivo safetensors os pesos do modelo estão sendo carregados.

    {
    "metadata": {
      "total_size": 16060522496
    },
    "weight_map": {
      "lm_head.weight": "model-00004-of-00004.safetensors",
      "model.embed_tokens.weight": "model-00001-of-00004.safetensors",
      ...
      }
    }

    Você também pode visualizar esse mapeamento clicando no botão ↗ no cartão do modelo.

    Safetensors é um formato de serialização mais seguro e rápido - em comparação com pickle - para armazenar pesos de modelos. Você pode encontrar pesos serializados em formatos como bin, pth ou ckpt, mas safetensors está sendo cada vez mais adotado no ecossistema de modelos como uma alternativa melhor.

  • Um modelo também pode ter um arquivo generation_config.json que armazena detalhes sobre como gerar texto, como se deve amostrar, os tokens principais a serem amostrados, a temperatura e os tokens especiais para iniciar e encerrar a geração.

Pré-processador

  • O arquivo tokenizer_config.json armazena os tokens especiais adicionados por um modelo. Esses tokens especiais sinalizam diversas coisas para um modelo, como o início de uma frase, formatação específica para modelos de chat ou a indicação de uma imagem. Este arquivo também exibe o comprimento máximo da sequência de entrada que o modelo pode aceitar, a classe do pré-processador e as saídas que ele retorna.
  • O arquivo tokenizer.json armazena o vocabulário aprendido do modelo.
  • O special_tokens_map.json é um mapeamento dos tokens especiais. Por exemplo, no Llama 3.1-8B-Instruct, o token de início de string é "<|begin_of_text|>".

Para outras modalidades, o arquivo tokenizer_config.json é substituído por preprocessor_config.json.

Usando modelos existentes

Todos os modelos transformer estão a uma linha de distância de serem usados! Dependendo de como você deseja usá-los, pode usar a API de alto nível com a função pipeline ou usar AutoModel para ter mais controle.

# With pipeline, just specify the task and the model id from the Hub.
from transformers import pipeline
pipe = pipeline("text-generation", model="distilbert/distilgpt2")

# If you want more control, you will need to define the tokenizer and model.
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("distilbert/distilgpt2")
model = AutoModelForCausalLM.from_pretrained("distilbert/distilgpt2")

Você também pode carregar um modelo de uma versão específica (com base no hash do commit, no nome da tag ou no branch) da seguinte forma:

model = AutoModel.from_pretrained(
    "julien-c/EsperBERTo-small", revision="v2.0.1"  # tag name, or branch name, or commit hash
)

Se você quiser ver como carregar um modelo específico, pode clicar em Use in Transformers e receber um trecho de código funcional para carregá-lo! Se precisar de mais informações sobre a arquitetura do modelo, também pode clicar em “Read model documentation” na parte inferior do trecho de código.

Compartilhando seus modelos

Para saber tudo sobre o compartilhamento de modelos com o transformers, consulte o guia Compartilhar um modelo na documentação oficial.

Muitas classes em transformers, como os modelos e tokenizadores, possuem um método push_to_hub que permite enviar facilmente os arquivos para um repositório.

# Pushing model to your own account
model.push_to_hub("my-awesome-model")

# Pushing your tokenizer
tokenizer.push_to_hub("my-awesome-model")

# Pushing all things after training
trainer.push_to_hub()

Há muito mais que você pode fazer, por isso sugerimos revisar o guia Compartilhar um modelo.

Recursos adicionais

Update on GitHub