Publique modelos Keras no Kaggle e na Hugging Face

MAI 02, 2024
Martin Görner Product Manager Keras

Uma atualização do Kaggle

A Kaggle Models foi inaugurada há um ano e já hospeda cerca de 4.000 modelos pré-treinados de uma ampla variedade de organizações. E agora, a Kaggle Models está aceitando contribuições de usuários, com uploads de modelos Keras. Se você ajustou um modelo que deseja compartilhar com o mundo, veja como 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")

As pessoas poderão carregar o modelo usando exatamente a mesma chamada .from_preset(url) como se estivessem carregando o Gemma original, desde que apontem o URL para a versão personalizada ajustada.

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

Para facilitar a descoberta de modelos carregados pelos usuários, o Kaggle fornece páginas de modelos nas quais é possível adicionar uma descrição, detalhes sobre o conjunto de dados usado para ajustes, etc. Também é nessa página que você torna público o modelo carregado (guia "Settings" na captura de tela abaixo).

Kaggle-Keras

Um toque bacana da equipe Kaggle é a classificação de usabilidade. Isso ajuda você a ver quais detalhes de modelo estão faltando no seu para que ele seja visto e apreciado pela comunidade.


Por que o Keras?

Você deve ter notado que as chamadas model.save_to_preset() e keras_nlp.upload_preset() são incorporadas diretamente no Keras para tornar o upload conveniente. Embora seja possível fazer upload de modelos em qualquer formato, desde que você publique instruções para carregá-los, o Kaggle escolheu o Keras como o formato de modelo preferido devido à experiência do usuário consistente fornecida pelo Keras para modelos pré-treinados:

  • todos os modelos são carregados por meio da mesma API .from_preset();
  • os modelos contam com uma API Keras familiar depois de carregados (model.fit() para ajuste, etc.);
  • o código-fonte do modelo está sempre em kerasCV ou kerasNLP;
  • implementações do Keras limpas e legíveis;
  • e, com o Keras 3, todos os modelos funcionam no JAX, TensorFlow e PyTorch.

Mas é sempre importante verificar nossas suposições. O lançamento dos modelos Gemma, os mais recentes Modelos de Linguagem Grandes (LLM, na sigla em inglês) abertos do Google, foi um ótimo teste. Eles foram lançados em nada menos que 9 formatos (!), e os dados de download do Kaggle mostram que há mais do que o dobro de downloads em keras do que em todos os outros formatos combinados.

Gemma downloads on Kaggle since launch
Downloads do Gemma no Kaggle, por framework. Observação 1: a versão do keras é executada no JAX, PyTorch e Tensorflow. A contagem "pytorch" é para uma versão pura do pytorch. Observação 2: a contagem de "transformers" representa downloads da versão HF transformers do Gemma no Kaggle, não na Hugging Face.

O Kaggle realizou duas competições do Gemma, e os notebooks iniciais da KerasNLP para ambas foram copiados mais de 950 vezes entre elas (de acordo com o nosso comparativo de mercado interno: >500 cópias = "uau, os usuários do Kaggle o acharam útil", >1000 cópias ="incrível"):

E os usuários do Kaggle estão fazendo coisas incríveis com esses modelos. Veja a seguir alguns exemplos:

A disponibilização de um notebook costumava ser a única maneira de compartilhar um modelo modificado com a comunidade no Kaggle. Porém, com a demora para fazer ajustes, é muito melhor poder compartilhar o resultado final diretamente, como um Modelo Kaggle.


Mas ainda tem mais: a Hugging Face!

Com este lançamento, a KerasNLP também se torna uma cidadã VIP na Hugging Face. Os modelos Keras podem ser carregados diretamente da Hugging Face usando a KerasNLP, que agora é uma das bibliotecas de modelos pré-treinados aceitas na Hugging Face, da mesma forma que a Transformers ou Diffusers. Esta é a página da Gemma Keras na Hugging Face, por exemplo. Você pode carregar o modelo com:

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

E, a seguir, veja como fazer upload do modelo na Hugging Face. O que muda em comparação com os uploads do Kaggle é o uso de "hf://" em vez de "kaggle://" no 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 é o resultado: um cartão de modelo pré-preenchido na Hugging Face. Você pode adicionar mais informações e tornar o modelo público usando a guia "settings":

Hugging-Face-Keras

Observe como o modelo foi reconhecido automaticamente na Hugging Face e marcado automaticamente com "KerasNLP" e "Text Generation".


Chegou a hora de experimentar o Kaggle ou a Hugging Face

Agora é a sua vez. Sucesso no upload do modelo!

Para testar o código de upload do modelo diretamente, experimente Gemma 7B pirate upload to Kaggle and Hugging Face.

Encontre a documentação oficial desse recurso aqui.