Publica tus modelos de Keras en Kaggle y Hugging Face

MAY 02, 2024
Martin Görner Product Manager Keras

Noticias de Kaggle

Kaggle Models comenzó sus actividades hace un año y ya alberga aproximadamente 4.000 modelos preentrenados de una amplia variedad de organizaciones. Y ahora, Kaggle Models permite las contribuciones de los usuarios, que pueden cargar modelos de Keras. Si ajustaste un modelo que quieres compartir con el mundo, te mostramos cómo funciona:

import keras
import keras_nlp
 
# Load the model
gemma = keras_nlp.models.CausalLM.from_preset("gemma_1.1_instruct_7b_en")
 
# Fine tune the model here. Example: Gemma fine-tuned to
# speak like a pirate. See bit.ly/gemma-pirate-demo
# ...
 
# Save the finetuned model as a KerasNLP preset.
gemma.save_to_preset("./gemma-pirate-instruct-7b")
 
# Upload the preset as a new model variant on Kaggle
kaggle_uri = "kaggle://my_kaggle_username/gemma-pirate/keras/gemma-pirate-instruct-7b"
keras_nlp.upload_preset(kaggle_uri, "./gemma-pirate-instruct-7b")

Los usuarios podrán cargar tu modelo utilizando exactamente la misma llamada .from_preset(url), como si estuvieran cargando el modelo de Gemma original, siempre y cuando orienten la URL a tu versión personalizada y ajustada.

gemma = keras_nlp.models.CausalLM.from_preset("kaggle://my_kaggle_username/gemma-pirate/keras/gemma-pirate-instruct-7b")

Para que se puedan encontrar más fácilmente los modelos cargados por los usuarios, Kaggle les proporciona páginas de modelos, donde puedes agregar una descripción, detalles sobre el conjunto de datos utilizado para el ajuste fino, etc. En esta página, también vas a hacer público el modelo que subas (pestaña “Settings” en la captura de pantalla que se muestra a continuación).

Kaggle-Keras

Un toque encantador del equipo de Kaggle es la calificación de usabilidad. Te ayuda a ver qué detalles del modelo faltan para que la comunidad pueda ver y apreciar tu modelo.


¿Por qué usar Keras?

Como habrás notado, las llamadas model.save_to_preset () y keras_nlp.upload_preset () están incorporadas en Keras para que se puedan cargar los modelos con comodidad. Si bien es posible cargarlos en cualquier formato, siempre y cuando publiques las instrucciones para hacerlo, Kaggle eligió Keras como el formato de modelo preferido debido a la experiencia del usuario coherente que brinda Keras para los modelos preentrenados:

  • Todos los modelos se cargan a través de la misma API: .from_preset()
  • Una vez que se cargan, los modelos tienen una API de Keras familiar, (model.fit(), para ajuste, etc.)
  • El código fuente del modelo siempre está en kerasCV o kerasNLP
  • Las implementaciones de Keras son claras y legibles
  • Con Keras 3, todos los modelos funcionan en JAX, TensorFlow y PyTorch

Sin embargo, siempre es importante comprobar nuestras suposiciones. El lanzamiento de los modelos Gemma, los últimos modelos abiertos de lenguaje grande (LLM) de Google, fue una gran prueba. Se lanzó en no menos de 9 formatos y los datos de descarga de Kaggle son contundentes: se realizaron más de 2 veces más descargas en Keras que en todos los demás formatos combinados.

Gemma downloads on Kaggle since launch
Gemma se descarga en Kaggle, por marco de trabajo. Nota 1: La versión de Keras se ejecuta en JAX, PyTorch y Tensorflow. El recuento de “pytorch” es para una versión pura de pytorch. Nota 2: El recuento de “transformadores” representa las descargas de la versión de transformadores HF de Gemma desde Kaggle, no desde Hugging Face.

Kaggle organizó dos concursos de Gemma y el material de KerasNLP de estos se copió más de 950 veces (nuestro punto de referencia interno es: >500 copias = “vaya, a los Kagglers les resultó útil”, >1.000 copias = “increíble”):

Y los Kagglers están haciendo algunas cosas bastante sorprendentes con estos modelos. Estas son solo algunas:

Proporcionar material solía ser la única forma que Kaggle tenía de compartir un modelo modificado con la comunidad. Pero con un ajuste fino que lleva horas, es mucho mejor poder compartir el resultado final directamente, como un modelo Kaggle.


Pero, un momento, falta algo: ¡Hugging Face!

Con este lanzamiento, KerasNLP también se convierte en un ciudadano de primera clase en Hugging Face. Los modelos de Keras se pueden cargar directamente desde Hugging Face utilizando KerasNLP, que ahora es una de las bibliotecas de modelos preentrenados compatibles con Hugging Face, de la misma manera que los transformadores o difusores. Esta es la página sobre Gemma de Keras en Hugging Face, por ejemplo. Puedes cargar el modelo con:

# Load the model
gemma = keras_nlp.models.CausalLM.from_preset("hf://google/gemma-7b-instruct-keras")

Y así es como subes tu modelo a Hugging Face. Lo único que cambia en comparación con las cargas de Kaggle es "hf://", en lugar de "kaggle://", en la URL.

# Fine-tune model
# ...
# Then save it as a KerasNLP preset.
gemma.save_to_preset('./gemma-pirate-instruct-7b)
 
 
# Upload the preset to Hugging Face Hub
hf_uri = "hf://my_hf_username/gemma-pirate-instruct-7b"
keras_nlp.upload_preset(hf_uri, './gemma-pirate-instruct-7b)

Este es el resultado, una tarjeta de modelo prepropagada en Hugging Face. Puedes agregar más información ahí y hacer que tu modelo sea público desde la pestaña “Settings”:

Hugging-Face-Keras

Observa cómo el modelo se reconoció automáticamente en Hugging Face y se etiquetó con “KerasNLP“ y “Text Generation”.


Ahora te toca a ti jugar en Kaggle o Hugging Face

Ahora te toca a ti jugar. ¡Feliz carga de modelos!

Para probar el código de carga del modelo directamente, prueba la carga pirata de Gemma 7B en Kaggle y Hugging Face.

Encontrarás la documentación oficial de esta función aquí.