Transformers documentation

Solução de problemas

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Solução de problemas

Às vezes, erros ocorrem, mas estamos aqui para ajudar! Este guia aborda alguns dos problemas mais comuns que já vimos e como você pode resolvê-los. No entanto, este guia não pretende ser uma coleção abrangente de todos os problemas do 🤗 Transformers. Para obter mais ajuda na solução do seu problema, tente:

  1. Pedir ajuda nos fóruns. Existem categorias específicas para postar sua pergunta, como Beginners ou 🤗 Transformers. Certifique-se de escrever um post de fórum bem descritivo, com algum código reproduzível, para maximizar as chances de seu problema ser resolvido!
  1. Crie uma Issue no repositório 🤗 Transformers se for um bug relacionado à biblioteca. Tente incluir o máximo de informações possível descrevendo o bug para nos ajudar a entender melhor o que está errado e como podemos corrigi-lo.

  2. Consulte o guia de Migração se você usa uma versão mais antiga do 🤗 Transformers, pois algumas mudanças importantes foram introduzidas entre as versões.

Para mais detalhes sobre solução de problemas e obtenção de ajuda, consulte o Capítulo 8 do curso da Hugging Face.

Ambientes com firewall

Algumas instâncias de GPU em configurações de nuvem e intranet são protegidas por firewall contra conexões externas, o que resulta em um erro de conexão. Quando seu script tenta baixar pesos de modelo ou conjuntos de dados, o download fica pendurado e, em seguida, expira com a seguinte mensagem:

ValueError: Connection error, and we cannot find the requested files in the cached path.
Please try again or make sure your Internet connection is on.

Nesse caso, você deve tentar executar o 🤗 Transformers em modo offline para evitar o erro de conexão.

CUDA sem memória suficiente

Treinar modelos grandes com milhões de parâmetros pode ser desafiador sem o hardware adequado. Um erro comum que você pode encontrar quando a GPU fica sem memória é:

CUDA out of memory. Tried to allocate 256.00 MiB (GPU 0; 11.17 GiB total capacity; 9.70 GiB already allocated; 179.81 MiB free; 9.85 GiB reserved in total by PyTorch)

Aqui estão algumas soluções potenciais que você pode tentar para reduzir o uso de memória:

Consulte a visão geral da otimização para mais detalhes sobre técnicas de economia de memória.

ImportError

Outro erro comum que você pode encontrar, especialmente se for um modelo recém-lançado, é ImportError:

ImportError: cannot import name 'ImageGPTImageProcessor' from 'transformers' (unknown location)

Para esses tipos de erro, verifique se você tem a versão mais recente do 🤗 Transformers instalada para acessar os modelos mais recentes:

pip install transformers --upgrade

Erro CUDA: assert do lado do dispositivo acionado

Às vezes, você pode se deparar com um erro genérico de CUDA relacionado a um erro no código do dispositivo.

RuntimeError: CUDA error: device-side assert triggered

Você deve tentar executar o código em uma CPU primeiro para obter uma mensagem de erro mais descritiva. Adicione a seguinte variável de ambiente no início do seu código para alternar para uma CPU:

>>> import os

>>> os.environ["CUDA_VISIBLE_DEVICES"] = ""

Outra opção é obter um traceback mais detalhado da GPU. Adicione a seguinte variável de ambiente no início do seu código para que o traceback aponte para a origem do erro:

>>> import os

>>> os.environ["CUDA_LAUNCH_BLOCKING"] = "1"

Saída incorreta quando os tokens de preenchimento não são mascarados

Em alguns casos, a saída hidden_state pode estar incorreta se os input_ids incluírem tokens de padding. Para demonstrar, carregue um modelo e um tokenizer. Você pode acessar o pad_token_id de um modelo para ver seu valor. O pad_token_id pode ser None em alguns modelos, mas você sempre pode defini-lo manualmente.

>>> from transformers import AutoModelForSequenceClassification
>>> import torch

>>> model = AutoModelForSequenceClassification.from_pretrained("google-bert/bert-base-uncased")
>>> model.config.pad_token_id
0

O exemplo a seguir mostra a saída sem mascarar os tokens de preenchimento:

>>> input_ids = torch.tensor([[7592, 2057, 2097, 2393, 9611, 2115], [7592, 0, 0, 0, 0, 0]])
>>> output = model(input_ids)
>>> print(output.logits)
tensor([[ 0.0082, -0.2307],
        [ 0.1317, -0.1683]], grad_fn=<AddmmBackward0>)

Aqui está a saída real da segunda sequência:

>>> input_ids = torch.tensor([[7592]])
>>> output = model(input_ids)
>>> print(output.logits)
tensor([[-0.1008, -0.4061]], grad_fn=<AddmmBackward0>)

Na maioria dos casos, você deve fornecer um attention_mask ao seu modelo para ignorar os tokens de preenchimento e evitar esse erro silencioso. Agora, a saída da segunda sequência corresponde à sua saída real:

Por padrão, o tokenizer cria um attention_mask para você com base nos padrões específicos do seu tokenizer.

>>> attention_mask = torch.tensor([[1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0]])
>>> output = model(input_ids, attention_mask=attention_mask)
>>> print(output.logits)
tensor([[ 0.0082, -0.2307],
        [-0.1008, -0.4061]], grad_fn=<AddmmBackward0>)

🤗 Transformers não cria automaticamente uma attention_mask para mascarar um token de padding, caso ele seja fornecido, porque:

  • Alguns modelos não possuem um token de padding.
  • Para alguns casos de uso, os usuários desejam que o modelo preste atenção a um token de preenchimento.

ValueError: Classe de configuração XYZ não reconhecida para este tipo de AutoModel

Em geral, recomendamos usar a classe AutoModel para carregar instâncias pré-treinadas de modelos. Essa classe pode inferir e carregar automaticamente a arquitetura correta a partir de um checkpoint específico com base na configuração. Se você vir esse ValueError ao carregar um modelo de um checkpoint, isso significa que a classe Auto não encontrou um mapeamento da configuração no checkpoint fornecido para o tipo de modelo que você está tentando carregar. Mais comumente, isso acontece quando um checkpoint não suporta uma tarefa específica. Por exemplo, você verá esse erro no exemplo a seguir porque não existe um GPT2 para question answering:

>>> from transformers import AutoProcessor, AutoModelForQuestionAnswering

>>> processor = AutoProcessor.from_pretrained("openai-community/gpt2-medium")
>>> model = AutoModelForQuestionAnswering.from_pretrained("openai-community/gpt2-medium")
ValueError: Unrecognized configuration class <class 'transformers.models.gpt2.configuration_gpt2.GPT2Config'> for this kind of AutoModel: AutoModelForQuestionAnswering.
Model type should be one of AlbertConfig, BartConfig, BertConfig, BigBirdConfig, BigBirdPegasusConfig, BloomConfig, ...
Update on GitHub