Transformers documentation

Solución 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.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Solución de problemas

A veces ocurren errores, ¡pero estamos aquí para ayudar! Esta guía cubre algunos de los problemas más comunes que hemos visto y cómo puedes resolverlos. Sin embargo, esta guía no pretende ser una colección exhaustiva de todos los problemas de 🤗 Transformers. Para obtener más ayuda con la solución de tu problema, prueba:

  1. Pedir ayuda en los foros. Hay categorías específicas a las que puedes publicar tu pregunta, como Beginners o 🤗 Transformers. Asegúrate de escribir una publicación de foro descriptiva con código reproducible para maximizar la probabilidad de que tu problema se resuelva.
  1. Crea un Issue en el repositorio de 🤗 Transformers si se trata de un error relacionado con la biblioteca. Intenta incluir la mayor cantidad de información posible que describa el error para ayudarnos a identificar mejor qué está fallando y cómo podemos solucionarlo.

  2. Consulta la guía de Migración si usas una versión anterior de 🤗 Transformers, ya que se han introducido algunos cambios importantes entre versiones.

Para obtener más detalles sobre la solución de problemas y cómo obtener ayuda, consulta el Capítulo 8 del curso de Hugging Face.

Entornos con cortafuegos

Algunas instancias de GPU en configuraciones de nube e intranet están protegidas por un cortafuegos frente a conexiones externas, lo que provoca un error de conexión. Cuando su script intenta descargar pesos de modelos o conjuntos de datos, la descarga se quedará colgada y luego expirará con el siguiente mensaje:

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.

En este caso, debes intentar ejecutar 🤗 Transformers en modo sin conexión para evitar el error de conexión.

CUDA sin memoria

Entrenar modelos grandes con millones de parámetros puede ser un desafío sin el hardware adecuado. Un error común que puede encontrarse cuando la GPU se queda sin memoria es:

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)

Aquí tienes algunas posibles soluciones que puedes probar para reducir el uso de memoria:

Consulte el resumen de optimización para obtener más detalles sobre las técnicas de ahorro de memoria.

ImportError

Otro error común que puede encontrarse, especialmente si se trata de un modelo recién publicado, es ImportError:

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

Para estos tipos de error, comprueba que tienes instalada la última versión de 🤗 Transformers para acceder a los modelos más recientes:

pip install transformers --upgrade

Error de CUDA: se activó una aserción en el dispositivo

A veces, es posible que se encuentre con un error genérico de CUDA relacionado con un error en el código del dispositivo.

RuntimeError: CUDA error: device-side assert triggered

Deberías intentar ejecutar el código en una CPU primero para obtener un mensaje de error más descriptivo. Añade la siguiente variable de entorno al principio de tu código para cambiar a una CPU:

>>> import os

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

Otra opción es obtener un traceback más detallado desde la GPU. Añada la siguiente variable de entorno al inicio de su código para que el traceback apunte al origen del error:

>>> import os

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

Salida incorrecta cuando los tokens de relleno no se enmascaran

En algunos casos, la salida hidden_state puede ser incorrecta si input_ids incluye tokens de relleno. Para demostrarlo, cargue un modelo y un tokenizador. Puede acceder a pad_token_id de un modelo para ver su valor. pad_token_id puede ser None en algunos modelos, pero siempre puede configurarlo manualmente.

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

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

El siguiente ejemplo muestra la salida sin enmascarar los tokens de relleno:

>>> 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>)

Aquí está la salida real de la segunda secuencia:

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

En la mayoría de los casos, debe proporcionar un attention_mask a su modelo para ignorar los tokens de relleno y evitar este error silencioso. Ahora, la salida de la segunda secuencia coincide con su salida real:

Por defecto, el tokenizador crea un attention_mask para usted en función de los valores predeterminados de su tokenizador específico.

>>> 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 no crea automáticamente una attention_mask para enmascarar un token de relleno si se proporciona, porque:

  • Algunos modelos no tienen un token de relleno.
  • Para algunos casos de uso, los usuarios desean que un modelo preste atención a un token de relleno.

ValueError: Clase de configuración XYZ no reconocida para este tipo de AutoModel

En general, recomendamos usar la clase AutoModel para cargar instancias preentrenadas de modelos. Esta clase puede inferir y cargar automáticamente la arquitectura correcta a partir de un punto de control dado, basándose en la configuración. Si ves este ValueError al cargar un modelo desde un punto de control, significa que la clase Auto no pudo encontrar una correspondencia entre la configuración del punto de control dado y el tipo de modelo que estás intentando cargar. Lo más común es que esto ocurra cuando un punto de control no admite una tarea determinada. Por ejemplo, verás este error en el siguiente ejemplo porque no existe un GPT2 para el planteamiento de preguntas:

>>> 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