Uso de KerasHub para lograr flujos de trabajo de aprendizaje automático sencillos de extremo a extremo con Hugging Face

24 DE JUNIO DE 2025
Yufeng Guo Developer Advocate
Divyashree Sreepathihalli Software Engineer
Monica Song Product Manager

Cómo cargar los puntos de control de SafeTensors en diferentes marcos de trabajo


Conforme el ecosistema de IA continúa evolucionando, hay cada vez más formas de definir modelos de aprendizaje automático e incluso más formas de ahorrar los pesos de los modelos que resultan del entrenamiento y los ajustes. Ante este creciente conjunto de opciones, KerasHub te permite mezclar y combinar arquitecturas de modelos populares y sus pesos en diferentes marcos de trabajo de aprendizaje automático.

Por ejemplo, un lugar popular para cargar los puntos de control es Hugging Face Hub. Muchos de esos puntos de control de modelos se crearon con la biblioteca de transformadores de Hugging Face con el formato SafeTensors. Independientemente del marco de trabajo de aprendizaje automático que se haya utilizado para crear el punto de control del modelo, esos pesos se pueden cargar en un modelo de KerasHub, de modo que puedes usar el marco de trabajo que elijas (JAX, PyTorch o TensorFlow) para ejecutar el modelo.

Sí, eso significa que puedes ejecutar un punto de control de Mistral o Llama en JAX, o incluso cargar Gemma con PyTorch. No existe más flexibilidad que esa.

Veamos algunos de estos términos con más detalle y hablemos sobre cómo funciona todo esto en la práctica.


Arquitectura vs. pesos del modelo

Al cargar modelos, necesitamos dos partes distintas: la arquitectura y los pesos del modelo (que se suelen llamar “puntos de control”). Definamos cada parte con más detalle.

Cuando hablamos de “arquitectura del modelo”, nos referimos a cómo se organizan las capas del modelo y las operaciones que se ejecutan dentro de ellas. También podríamos llamarla “estructura” del modelo. Utilizamos marcos de trabajo de Python, como PyTorch, JAX o Keras, para definir arquitecturas de modelos.

Por su parte, cuando hablamos de “pesos del modelo”, nos referimos a los “parámetros” de un modelo, o los números de un modelo que se cambian a lo largo del entrenamiento. Los valores particulares de estos pesos son los que le dan a un modelo entrenado sus características.

Los “puntos de control” son una instantánea de los valores de los pesos del modelo en un punto particular del entrenamiento. Los archivos de punto de control típicos que se comparten y utilizan ampliamente son aquellos en los que el modelo alcanzó un resultado particularmente bueno en el entrenamiento. A medida que la misma arquitectura del modelo se refina aún más con ajustes y otras técnicas, se crean nuevos archivos de puntos de control. Por ejemplo, muchos desarrolladores tomaron el modelo gemma-2-2b-it de Google y lo ajustaron con sus propios conjuntos de datos; de hecho, podemos ver más de 600 ejemplos. Todos estos modelos ajustados utilizan la misma arquitectura que el modelo gemma-2-2b-it original, pero sus puntos de control tienen diferentes pesos.

Entonces, la arquitectura del modelo se describe con código, mientras que los pesos del modelo son parámetros entrenados, guardados como archivos de puntos de control. Cuando tenemos una arquitectura junto con un conjunto de pesos del modelo (en forma de un archivo de punto de control), creamos un modelo funcional que produce resultados útiles.

Se pueden cargar diferentes pesos en la misma arquitectura del modelo. Estos diferentes conjuntos de pesos se guardan como puntos de control.

Herramientas como la biblioteca de transformadores de Hugging Face y la biblioteca KerasHub de Google proporcionan arquitecturas de modelos y las APIs que necesitas para experimentar con ellas. Entre los ejemplos de repositorios de puntos de control, se incluyen Hugging Face Hub y Kaggle Models.

Puedes mezclar y combinar las bibliotecas de arquitectura de modelos con los repositorios de puntos de control que elijas. Por ejemplo, puedes cargar un punto de control de Hugging Face Hub en una arquitectura de modelo JAX y ajustarlo con KerasHub. Para una tarea diferente, es posible que encuentres un punto de control en los modelos Kaggle que sea adecuado según tus necesidades. Esta flexibilidad y capacidad de separación significa que no te tienes que centrar en un solo ecosistema.


¿Qué es KerasHub?

Ya que mencionamos KerasHub un par de veces, veamos de qué se trata en más detalles.

KerasHub es una biblioteca de Python que ayuda a facilitar la definición de arquitecturas de modelos. Contiene muchos de los modelos de aprendizaje automático más populares y de uso común en la actualidad, y se están agregando más todo el tiempo. Debido a que se basa en Keras, KerasHub es compatible con las tres bibliotecas principales de aprendizaje automático de Python que más se utilizan hoy en día: PyTorch, JAX y TensorFlow. Por todo esto, puedes tener arquitecturas de modelos definidas en la biblioteca que desees.

Además, dado que KerasHub es compatible con los formatos de puntos de control más comunes, puedes cargar fácilmente los puntos de control desde muchos repositorios. Por ejemplo, puedes buscar cientos de miles de puntos de control en Hugging Face y Kaggle para cargar en estas arquitecturas de modelo.


Comparaciones con la biblioteca de transformadores de Hugging Face

Un flujo de trabajo común entre los desarrolladores es usar la biblioteca de transformadores de Hugging Face para afinar un modelo y subirlo a Hugging Face Hub. Y si usas la de transformadores, también encontrarás muchos patrones de API familiares en KerasHub. Consulta la documentación de la API de KerasHub para obtener más información. Un aspecto interesante de KerasHub es que muchos de los puntos de control que se encuentran en Hugging Face Hub son compatibles no solo con la biblioteca de transformadores, sino también con KerasHub. Veamos cómo funciona.


KerasHub es compatible con Hugging Face Hub

Hugging Face tiene un repositorio de puntos de control de modelos, llamado Hugging Face Hub. Es uno de los muchos lugares donde la comunidad de aprendizaje automático carga sus puntos de control de modelos para compartir con el mundo. En Hugging Face, es especialmente popular el formato SafeTensors, que es compatible con KerasHub.

Puedes cargar estos puntos de control desde Hugging Face Hub directamente en tu modelo de KerasHub, siempre que la arquitectura del modelo esté disponible. ¿Quieres saber si tu modelo favorito está disponible? Puedes consultar https://keras.io/keras_hub/presets/ y obtener una lista de las arquitecturas de modelos compatibles. Y no lo olvides, ¡toda la comunidad creó puntos de control afinados de estas arquitecturas de modelos que también son compatibles! Hace muy poco, creamos una nueva guía para explicar el proceso con más detalle.

¿Cómo funciona todo esto? KerasHub tiene convertidores incorporados que simplifican el uso de los modelos de transformadores de Hugging Face. Estos convertidores se encargan automáticamente del proceso de traducción de los puntos de control del modelo de Hugging Face a un formato compatible con KerasHub. De esta manera, puedes cargar sin problemas una amplia variedad de modelos de transformadores de Hugging Face preentrenados desde Hugging Face Hub directamente en KerasHub con solo unas pocas líneas de código.

Si notas que falta una arquitectura de modelo, puedes agregarla presentando una solicitud de extracción en GitHub.


Cómo cargar un punto de control de Hugging Face Hub en KerasHub

Entonces, ¿cómo podemos cargar los puntos de control de Hugging Face Hub en KerasHub? Veamos algunos ejemplos concretos.

Para comenzar, elegiremos nuestra biblioteca de aprendizaje automático como nuestro “backend” de Keras. Usaremos JAX en nuestros ejemplos, pero puedes elegir entre JAX, PyTorch o TensorFlow para cualquiera de ellos. Todos los ejemplos que se muestran a continuación funcionan independientemente de cuál elijas. Luego, podemos proceder a importar keras, keras_hub y huggingface_hub, y luego iniciamos sesión con nuestro token de acceso de usuario de Hugging Face para acceder a los puntos de control del modelo.

import os
os.environ["KERAS_BACKEND"] = "jax" # or "torch" or "tensorflow"
 
import keras
from keras_hub import models
from huggingface_hub import login
login('HUGGINGFACE_TOKEN')
Python

Usar un modelo de Mistral en JAX

¿Qué pasa si queremos ejecutar un punto de control de Mistral en JAX? Hay varios modelos de Mistral disponibles en la lista de arquitecturas de modelos disponibles de KerasHub. Probemos mistral_0.2_instruct_7b_en. Si hacemos clic en él, vemos que deberíamos usar la clase MistralCausalLM para llamar a from_preset. En Hugging Face Hub, vemos que el punto de control del modelo correspondiente se guarda aquí y hay más de 900 versiones ajustadas. Si exploramos esa lista, veremos un popular modelo ajustado y centrado en la ciberseguridad llamado “Lily”, con el nombre de ruta segolilylabs/Lily-Cybersecurity-7B-v0.2. También tendremos que agregar “hf://” antes de esa ruta para especificar que KerasHub debería mirar a Hugging Face Hub.

En conjunto, obtenemos el siguiente código:

# Model checkpoint from Hugging Face Hub
gemma_lm = models.MistralCausalLM.from_preset("hf://segolilylabs/Lily-Cybersecurity-7B-v0.2")
gemma_lm.generate("Lily, how do evil twin wireless attacks work?", max_length=30)
Python

Ejecutar Llama 3.1 en JAX

Llama 3.1-8B-Instruct es un modelo popular del que se hicieron más de 5 millones de descargas el mes pasado. Pongamos una versión ajustada en JAX. Debido a que tiene más de 1,400 puntos de control ajustados, no faltan opciones. El punto de control ajustado xVerify parece interesante; carguémoslo en JAX en KerasHub.

Usaremos la clase Llama3CausalLM para reflejar la arquitectura del modelo que estamos usando. Como antes, necesitaremos la ruta apropiada de Hugging Face Hub, con el prefijo “hf://”. Es muy sorprendente que podamos cargar y llamar a un modelo con solo dos líneas de código, ¿verdad?

# Model checkpoint from Hugging Face Hub
gemma_lm = models.Llama3CausalLM.from_preset("hf://IAAR-Shanghai/xVerify-8B-I")
gemma_lm.generate("What is the tallest building in NYC?", max_length=100)
Python

Cargar Gemma en JAX

Finalmente, carguemos un punto de control ajustado de Gemma-3-4b-it en JAX. Usaremos la clase Gemma3CausalLM y seleccionaremos uno de los puntos de control ajustados. Podría ser EraX, un traductor multilingüe. Como antes, usaremos el nombre de ruta con el prefijo Hugging Face Hub para crear la ruta completa “hf://erax-ai/EraX-Translator-V1.0”.

# Model checkpoint from Hugging Face Hub
gemma_lm = models.Gemma3CausalLM.from_preset("hf://erax-ai/EraX-Translator-V1.0")
gemma_lm.generate("Translate to German: ", max_length=30)
Python

Flexibilidad al alcance de la mano

Como vimos, no es necesario que la arquitectura de un modelo esté determinada por sus pesos, de modo que puedes combinar arquitecturas y pesos de diferentes bibliotecas.

KerasHub cierra la brecha entre los diferentes marcos de trabajo y los repositorios de puntos de control. Puedes tomar un punto de control de un modelo de Hugging Face Hub, incluso uno creado con la biblioteca de transformadores basada en PyTorch, y cargarlo sin problemas en un modelo de Keras que se ejecute en el backend que elijas: JAX, TensorFlow o PyTorch. Así, puedes aprovechar una amplia colección de modelos ajustados por la comunidad, sin dejar de tener plena opción sobre qué marco de trabajo de backend vas a ejecutar.

Debido a que se simplifica el proceso de mezcla y combinación de arquitecturas, pesos y marcos de trabajo, KerasHub te permite experimentar e innovar con una flexibilidad simple pero poderosa.