Hub documentation

Uso de 🤗 transformers en Hugging Face

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Uso de 🤗 transformers en Hugging Face

🤗 transformers es una biblioteca mantenida por Hugging Face y la comunidad, para Machine Learning de vanguardia en PyTorch, TensorFlow y JAX. Ofrece miles de modelos preentrenados para realizar tareas en diferentes modalidades, como texto, visión y audio. Somos un poco parciales, pero ¡realmente nos encanta 🤗 transformers!

Explorar 🤗 transformers en el Hub

Hay más de 630.000 modelos de transformers en el Hub, que puedes encontrar filtrando a la izquierda de la página de modelos.

Puedes encontrar modelos para muchas tareas diferentes:

Puedes probar los modelos directamente en el navegador si quieres probarlos sin descargarlos, ¡gracias a los widgets en el navegador!

Archivos del repositorio Transformers

Un repositorio de modelos de Transformers generalmente contiene archivos de modelo y archivos de preprocesador.

Modelo

  • El archivo config.json almacena detalles sobre la arquitectura del modelo, como el número de capas ocultas, el tamaño del vocabulario, el número de cabezas de atención, las dimensiones de cada cabeza, entre otros. Esta metadatos es el plano del modelo.

  • El archivo model.safetensors almacena las capas y los pesos preentrenados de los modelos. Para modelos grandes, el archivo safetensors se divide en fragmentos para limitar la cantidad de memoria necesaria para cargarlo. Examine el archivo model.safetensors.index.json para ver desde qué archivo safetensors se están cargando los pesos del modelo.

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

    También puedes visualizar este mapeo haciendo clic en el botón ↗ de la tarjeta del modelo.

    Safetensors es un formato de serialización más seguro y rápido que pickle para almacenar los pesos de un modelo. Es posible que encuentres pesos serializados con pickle en formatos como bin, pth o ckpt, pero safetensors se está adoptando cada vez más en el ecosistema de modelos como una alternativa mejor.

  • Un modelo también puede tener un archivo generation_config.json que almacena detalles sobre cómo generar texto, como si se debe muestrear, los tokens superiores desde los que muestrear, la temperatura y los tokens especiales para iniciar y detener la generación.

Preprocesador

  • El archivo tokenizer_config.json almacena los tokens especiales añadidos por un modelo. Estos tokens especiales indican al modelo muchas cosas, como el inicio de una oración, un formato específico para plantillas de chat o la presencia de una imagen. Este archivo también muestra la longitud máxima de la secuencia de entrada que el modelo puede aceptar, la clase de preprocesador y las salidas que devuelve.
  • El archivo tokenizer.json almacena el vocabulario aprendido del modelo.
  • El special_tokens_map.json es un mapeo de los tokens especiales. Por ejemplo, en Llama 3.1-8B-Instruct, el token de inicio de cadena es "<|begin_of_text|>".

Para otras modalidades, el archivo tokenizer_config.json se reemplaza por preprocessor_config.json.

Uso de modelos existentes

Todos los modelos transformer están a un paso de poder usarse. Dependiendo de cómo quieras utilizarlos, puedes emplear la API de alto nivel mediante la función pipeline o usar AutoModel para tener más control.

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

También puede cargar un modelo desde una versión específica (basada en el hash de commit, el nombre de la etiqueta o la rama) de la siguiente manera:

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

Si quieres ver cómo cargar un modelo específico, puedes hacer clic en Use in Transformers y se te proporcionará un fragmento de código funcional para cargarlo. Si necesitas más información sobre la arquitectura del modelo, también puedes hacer clic en “Read model documentation” en la parte inferior del fragmento.

Compartir tus modelos

Para leer todo sobre el intercambio de modelos con transformers, diríjase a la guía Compartir un modelo en la documentación oficial.

Muchas clases de transformers, como los modelos y los tokenizadores, tienen un método push_to_hub que permite subir fácilmente los archivos a un repositorio.

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

Hay mucho más que puedes hacer, por lo que sugerimos revisar la guía Compartir un modelo.

Recursos adicionales

Update on GitHub