Google によるオープンソースLLM “Gemma”
Google の LLM といえば Gemini が話題ですが、その脇でオープンソースの LLM も発表していたので以下メモ。
Hugging face の発表内容
Googleにより、最先端の新しいオープンLLMファミリーであるGemmaが本日リリースされました!GoogleがオープンソースAIへの取り組みを強化しているのを見るのは素晴らしいことであり、Hugging Faceでの包括的な統合を完全にサポートすることに興奮しています。
Gemmaは、消費者サイズのGPUおよびTPU上での効率的な展開および開発のための7Bパラメータ、CPUおよびオンデバイスアプリケーションのための2Bバージョンの2つのサイズで提供されます。両方とも、ベースとインストラクションチューニングされたバリアントで提供されます。
Googleとの協力により、Hugging Faceエコシステムへの最適な統合を実現しました。4つのオープンアクセスモデル(2つのベースモデルと2つのファインチューニングされたもの)をHubで見つけることができます。リリースされる機能と統合には、以下が含まれます:
- Hub上のモデル、それらのモデルカードとライセンス
- 🤗 Transformersの統合
- Google Cloudとの統合
- 推論エンドポイントとの統合
- 🤗 TRLでのシングルGPU上でのGemmaのファインチューニングの例
Gemmaとは何か? Gemmaは、Geminiに基づくGoogleの4つの新しいLLMモデルのファミリーです。2Bと7Bパラメータの2つのサイズで提供され、各サイズはベース(事前訓練済み)とインストラクションチューニングされたバージョンがあります。すべてのバリアントは、量子化なしでもさまざまな種類の消費者ハードウェア上で実行でき、8Kトークンのコンテキスト長を持っています:
- gemma-7b: ベース7Bモデル。
- gemma-7b-it: ベース7Bモデルのインストラクションファインチューニングバージョン。
- gemma-2b: ベース2Bモデル。
- gemma-2b-it: ベース2Bモデルのインストラクションファインチューニングバージョン。
性能
では、Gemmaモデルの性能はどうでしょうか?以下は、LLMリーダーボード上の他のオープンモデルと比較したベースモデルの概要です(スコアが高いほど良い):
モデル | ライセンス | 商用使用? | 事前訓練サイズ[トークン] | リーダーボードスコア ⬇️ |
---|---|---|---|---|
LLama 2 70B Chat(参照) | Llama 2 ライセンス | ✅ | 2T | 67.87 |
Gemma-7B | Gemma ライセンス | ✅ | 6T | 63.75 |
DeciLM-7B | Apache 2.0 | ✅ | 不明 | 61.55 |
PHI-2 (2.7B) | MIT | ✅ | 1.4T | 61.33 |
Mistral-7B-v0.1 | Apache 2.0 | ✅ | 不明 | 60.97 |
Llama 2 7B | Llama 2 ライセンス | ✅ | 2T | 54.32 |
Gemma 2B | Gemma ライセンス | ✅ | 2T | 46.51 |
Gemma 7Bは非常に強力なモデルであり、7Bウェイトの最高のモデルと比較可能な性能を持っています。Gemma 2Bはサイズの割には興味深いモデルですが、リーダーボードでのスコアは、Phi 2のような同様のサイズの最高のモデルと比べて高くありません。コミュニティからの実際の使用に関するフィードバックを楽しみにしています!
LLMリーダーボードは、事前訓練されたモデルの品質を測定するのに特に役立ちますが、チャットモデルにはそれほどではありません。他のベンチマーク、例えばMT Bench、EQ Bench、lmsys Arenaをチャットモデルに対して実行することをお勧めします!
プロンプト形式 ベースモデルにはプロンプト形式がありません。他のベースモデルと同様に、入力シーケンスを妥当な続きで続けたり、ゼロショット/数ショットの推論に使用したりすることができます。また、独自のユースケースでのファインチューニングのための素晴らしい基盤でもあります。Instructバージョンは、非常にシンプルな会話構造を持っています:
<start_of_turn>user knock knock<end_of_turn> <start_of_turn>model who is there<end_of_turn> <start_of_turn>user LaMDA<end_of_turn> <start_of_turn>model LaMDA who?<end_of_turn>
この形式は、効果的な使用のために正確に再現する必要があります。後ほど、transformersで利用可能なチャットテンプレートを使って、指示プロンプトをどれほど簡単に再現できるかを示します。
未知を探る 技術報告書には、ベースモデルの訓練と評価プロセスに関する情報が含まれていますが、データセットの構成や前処理に関する詳細な情報はありません。主にウェブドキュメント、コード、数学テキストからのデータで訓練されており、CSAMコンテンツとPIIを削除し、ライセンスチェックを行うためにフィルタリングされたことがわかっています。
同様に、Gemma instructモデルについても、ファインチューニングデータセットやSFTおよびRLHFに関連するハイパーパラメータの詳細は共有されていません。
🤗 Transformersの使用 Transformersリリース4.38では、Gemmaを使用し、Hugging Faceエコシステム内のすべてのツールを活用できます。これには、以下が含まれます:
- トレーニングと推論のスクリプトと例
- 安全なファイル形式(safetensors)
- bitsandbytes(4ビット量子化)、PEFT(パラメータ効率的なファインチューニング)、Flash Attention 2などのツールとの統合
- モデルでの生成を実行するためのユーティリティとヘルパー
- モデルをデプロイするためのメカニズム さらに、Gemmaモデルはtorch.compile()とCUDAグラフと互換性があり、推論時に約4倍のスピードアップを実現します!
次のスニペットは、transformersでgemma-7b-itを使用する方法を示しています。これには、3090や4090などの消費者向けGPUを含む約18GBのRAMが必要です。
すべての評価はbfloat16で実行された参照精度であるため、bfloat16を使用しました。ハードウェア上でfloat16を実行する方が速いかもしれません。
また、8ビットまたは4ビットモードでモデルを自動的に量子化してロードすることもできます。4ビットロードは約9GBのメモリを使用し、多くの消費者向けカードおよびGoogle Colab内のすべてのGPUと互換性があります。これは、4ビットで生成パイプラインをロードする方法です:
transformersでモデルを使用する詳細については、モデルカードを確認してください。
JAXウェイト すべてのGemmaモデルバリアントは、上記で説明したようにPyTorchまたはJAX / Flaxで使用できます。Flaxウェイトをロードするには、以下に示すように、リポジトリからflaxリビジョンを使用する必要があります:
Colab TPUs上でJAX推論を並列化する方法についての包括的な実践的なワークスルーを提供するこのノートブックを確認してください!
Google Cloudとの統合 Vertex AIまたはGoogle Kubernetes Engine(GKE)を介してGoogle Cloud上でGemmaをデプロイおよびトレーニングできます。これは、テキスト生成推論とTransformersを使用しています。
Hugging FaceからGemmaモデルをデプロイするには、モデルページに移動して、デプロイ-> Google Cloudをクリックします。これにより、Google Cloudコンソールに移動し、Vertex AIまたはGKE上でGemmaを1クリックでデプロイできます。テキスト生成推論は、Google Cloud上でGemmaを駆動し、Google Cloudとのパートナーシップの一環として最初の統合です。
GCP上でデプロイ
Vertex AIモデルガーデンを通じて、Gemmaに直接アクセスすることもできます。
Hugging FaceからGemmaモデルをチューニングするには、モデルページに移動して、トレーニング-> Google Cloudをクリックします。これにより、Google Cloudコンソールに移動し、Vertex AIまたはGKEでGemmaをチューニングするためのノートブックにアクセスできます。
GCP上でトレーニング
これらの統合は、Googleとの協力的なパートナーシップの結果として最初に立ち上げるオファリングであり、今後も続く予定です。お楽しみに!