在 Kaggle 和 Hugging Face 上发布您的 Keras 模型

五月 02, 2024
Martin Görner Product Manager Keras

Kaggle 更新

Kaggle Models 于一年前推出,已经拥有来自各种组织的约 4,000 个预训练模型。现在,Kaggle Models 接受用户贡献,允许用户上传 Keras 模型。如果您对模型进行了微调并想要与其他用户分享该模型,以下为操作方法:

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

只要用户将网址指向您的自定义微调版本,他们就能够使用完全相同的 .from_preset(url) 调用来加载您的模型,就如同加载原始 Gemma 一样。

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

为便于其他用户探索您上传的模型,Kaggle 为这些模型提供模型页面,您可以在其中添加描述以及与用于微调的数据集相关的详细信息等。您还可以在此页面上发布自己上传的模型(在下方屏幕截图中的“设置”标签页中)。

Kaggle-Keras

在此次更新中,Kaggle 团队推出了一项可喜的功能,那就是易用性分级。通过该功能,您可以查看为提升您模型的社群关注度和使用率,您还需补充哪些模型详细信息。


为什么选择 Keras?

您可能已经注意到,model.save_to_preset() 和 keras_nlp.upload_preset() 调用直接内置于 Keras 中,让上传更加便利。虽然您只要发布加载模型的说明,就可以使用任意格式上传模型,但是 Kaggle 选择 Keras 作为首选模型格式,这是因为 Keras 为预训练模型提供一致的用户体验:

但是我们需要检验推测是否正确,这一点非常重要。Google 发布的最新开放大型语言模型 (LLM) Gemma 模型就是一次很好的检验。Gemma 模型以不少于 9 种格式(!)发布,而且根据 Kaggle 的下载数据统计,Keras 格式的下载量是所有其他格式下载量总和的 2 倍以上。

Gemma downloads on Kaggle since launch
Kaggle 上的 Gemma 下载量(按框架划分)。备注 1:keras 版本可在 JAX、PyTorch 和 Tensorflow 上运行。“pytorch”数量仅统计 pytorch 版本下载量。备注 2:“转换器”数量统计从 Kaggle 下载的 HF 转换器版本的 Gemma 数量,不统计从 Hugging Face 下载的 HF 转换器版本的 Gemma 数量。

Kaggle 已经举办了两场 Gemma 竞赛,而在比赛期间,KerasNLP 新手笔记本被复制了 950 多次(我们的内部基准是:>500 份=“哇,Kaggle 用户认为很有用”,>1000 份=“太棒了”):

Kaggle 用户使用这些模型实现了一些非常令人赞叹的成就。以下是其中一些成就:

在 Kaggle,提供笔记本曾经是与社区分享经过修改的模型的唯一途径。由于微调需要数小时时间,如果能够直接以 Kaggle 模型分享最终结果,这样会更加便利。


还可以在 Hugging Face 上发布 Keras 模型!

在此版本,KerasNLP 也获得了 Hugging Face 中的头等地位。KerasNLP 现在是 Hugging Face 支持的预训练模型库之一,您可以使用 KerasNLP 直接从 Hugging Face 加载 Keras 模型,这与从 Transformers 或 Diffusers 加载 Keras 模型相同。以下是 Hugging Face 上的 Gemma Keras 页面示例。您可以使用以下代码加载 Keras 模型:

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

以下是将您的模型上传到 Hugging Face 的方法。与上传到 Kaggle 相比,唯一的不同之处是网址使用“hf://”,而不是“kaggle://”。

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

以下是结果:Hugging Face 上预先填充的模型卡片。您可以在此处添加更多信息,并通过“设置”标签页发布您的模型:

Hugging-Face-Keras

您可以发现,Hugging Face 会自动识别模型,并自动为模型添加“KerasNLP”和“文本生成”标签。


尝试使用 Kaggle 或 Hugging Face 进行构建

现在您可以尝试使用 Kaggle 或 Hugging Face 进行构建了。助您拥有畅快的模型上传体验!

要直接尝试上传模型代码,请尝试将 Gemma 7B 海盗上传到 Kaggle 和 Hugging Face

要查看此功能的官方文档,请在前往此页面