Kaggle と Hugging Face で Keras モデルを公開しよう

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

Kaggle からの最新情報

1 年前にオープンした Kaggle Models には、さまざまな組織から寄せられた約 4,000 のトレーニング済みモデルがすでに登録されています。そして今回、ユーザーが Keras モデルをアップロードして公開できるようになりました。ファインチューニングしたモデルを世界と共有したい場合は、次のようにしてください。

import keras
import keras_nlp
 
# モデルを読み込む
gemma = keras_nlp.models.CausalLM.from_preset("gemma_1.1_instruct_7b_en")
 
# ここでモデルをファインチューニングする。例: Gemma を海賊のようにしゃべらせる
# ファインチューニング。bit.ly/gemma-pirate-demo
 を参照
# ...
 
# ファインチューニングしたモデルを KerasNLP プリセットとして保存する。
gemma.save_to_preset("./gemma-pirate-instruct-7b")
 
# プリセットを新規モデル バリアントとして Kaggle にアップロードする
kaggle_uri = "kaggle://my_kaggle_username/gemma-pirate/keras/gemma-pirate-instruct-7b"
keras_nlp.upload_preset(kaggle_uri, "./gemma-pirate-instruct-7b")

すると、オリジナルの Gemma を読み込むのとまったく同じように .from_preset(url) を呼び出してモデルを読み込めるようになります。ただし、URL はカスタムのファインチューニングしたバージョンを指している必要があります。

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

ユーザーがアップロードしたモデルを簡単に見つけられるようにするために、Kaggle はモデルのページを用意しています。そこに、説明やファインチューニングに使ったデータセットの詳細などを追加できます。アップロードしたモデルを公開するように設定できるのも、このページです(下のスクリーンショットの [Settings] タブ)。

Kaggle-Keras

Kaggle チームによるうれしい工夫として、ユーザビリティが評価できるようになっています。そのため、モデルがコミュニティの目にとまり、高く評価されるには、モデルにどのような説明が足りないのかがわかります。


Keras を選ぶべき理由

Keras に model.save_to_preset() と keras_nlp.upload_preset() を呼び出す機能が組み込まれているのは、アップロードを簡単にするためであることにお気づきになるでしょう。読み込み手順さえ公開すれば、モデルは形式を問わずアップロードできます。しかし 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:「transformers」の数は、Hugging Face からではなく、Kaggle からの Gemma の HF transformers バージョンのダウンロード数を表します。

Kaggle は 2 つの Gemma コンペティションを開催しており、そのための KerasNLP スターター ノートブックはその間に 950 回以上コピーされています(私たちの内部ベンチマークは、> 500 回 =「おっ、Kaggler ユーザーに役立つと思われている」、> 1000 回 =「これはすごい」)。

また、Kaggle ユーザーは、こういったモデルを使ってかなりすごいことを行っています。その一部を紹介しましょう。

これまで、Kaggle で変更されたモデルをコミュニティと共有するには、ノートブックを提供するしかありませんでした。しかし、ファインチューニングには時間がかかるため、最終結果を Kaggle モデルとして直接共有できる方がはるかに便利です。


もう 1 つの方法: Hugging Face

このリリースで、KerasNLP は Hugging Face の一流メンバーにもなりました。KerasNLP を使って Keras モデルを Hugging Face から直接読み込むことができます。KerasNLP は、Transformer や Diffuser と同じく、Hugging Face がサポートするトレーニング済みのモデル ライブラリの 1 つです。例として、Hugging Face の Gemma Keras ページをご覧ください。モデルは次のようにして読み込むことができます。

# モデルを読み込む
gemma = keras_nlp.models.CausalLM.from_preset("hf://google/gemma-7b-instruct-keras")

そして、次のようにすると、Hugging Face にモデルをアップロードできます。Kaggle のアップロードと違うのは、URLの「kaggle://」が「hf://」になる点だけです。

# モデルをファインチューニングする
# ...
# その後、KerasNLP プリセットとして保存する。
gemma.save_to_preset('./gemma-pirate-instruct-7b)
 
 
# プリセットを 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 のモデルカードが設定されます。詳しい情報を追加し、[Settings] タブからモデルを公開できます。

Hugging-Face-Keras

Hugging Face でモデルが自動認識され、「KerasNLP」と「テキスト生成」を表すタグが自動付与されていることに注目してください。


Kaggle と Hugging Face で活躍しよう

次は皆さんの番です。モデルのアップロードをお待ちしています!

モデルをアップロードするコードを直接試したい方は、Gemma 7B pirate を Kaggle と Hugging Face にアップロードしてみてください。

この機能の公式ドキュメントはこちらをご覧ください。