モデル概要
モデル特徴
モデル能力
使用事例
🚀 Gemmaの非ゲート化バージョン
このモデルはGoogleが開発した軽量で最先端のオープンモデルで、Geminiモデルを構築するために使用された同じ研究と技術に基づいています。テキスト生成タスクに適しており、限られたリソース環境でもデプロイ可能です。
🚀 クイックスタート
このモデルカードは、Gemmaモデルの最新の7B instructバージョンに対応しています。以下に、Gemmaファミリーの他のモデルを示します。
ベースモデル | 命令調整済みモデル | |
---|---|---|
2B | gemma-2b | gemma-1.1-2b-it |
7B | gemma-7b | gemma-1.1-7b-it |
リリースノート
これはGemma 1.1 7B (IT)で、元の命令調整済みGemmaリリースに対するアップデートです。
Gemma 1.1は、新しいRLHF手法を用いて訓練され、品質、コーディング能力、事実性、命令追従性、マルチターン会話品質に大幅な改善が見られます。また、マルチターン会話のバグを修正し、モデルの応答が常に "Sure,"
で始まらないようにしました。
このリリースはほとんどのユースケースで改善をもたらすと考えていますが、ユーザーには特定のアプリケーションでテストすることをお勧めします。以前のモデルは同じリポジトリで引き続き利用可能です。Gemmaの熱心な採用に感謝し、引き続きコミュニティからのフィードバックを歓迎します。
リソースと技術ドキュメント:
利用規約: 利用規約
作者: Google
✨ 主な機能
Gemmaは、Googleによる軽量で最先端のオープンモデルファミリーです。Geminiモデルを作成するために使用された同じ研究と技術に基づいて構築されています。これらは、英語で利用可能なテキスト-to-テキスト、デコーダーのみの大規模言語モデルで、オープンウェイト、事前学習バリアント、および命令調整バリアントがあります。Gemmaモデルは、質問応答、要約、推論などのさまざまなテキスト生成タスクに適しています。比較的小さなサイズのため、ラップトップ、デスクトップ、または独自のクラウドインフラストラクチャなどのリソースが限られた環境でもデプロイでき、最先端のAIモデルへのアクセスを民主化し、誰もが革新を促進するのに役立ちます。
📦 インストール
モデルを実行するためのクイックスタート方法をいくつかのコードスニペットで紹介します。まず、pip install -U transformers
を実行して必要なライブラリをインストールしてください。
💻 使用例
基本的な使用法
CPUでの実行
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("google/gemma-1.1-7b-it")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-1.1-7b-it",
torch_dtype=torch.bfloat16
)
input_text = "Write me a poem about Machine Learning."
input_ids = tokenizer(input_text, return_tensors="pt")
outputs = model.generate(**input_ids, max_new_tokens=50)
print(tokenizer.decode(outputs[0]))
単一または複数GPUでの実行
# pip install accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("google/gemma-1.1-7b-it")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-1.1-7b-it",
device_map="auto",
torch_dtype=torch.bfloat16
)
input_text = "Write me a poem about Machine Learning."
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids)
print(tokenizer.decode(outputs[0]))
高度な使用法
異なる精度でGPUで実行
torch.float16
を使用する場合
# pip install accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("google/gemma-1.1-7b-it")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-1.1-7b-it",
device_map="auto",
torch_dtype=torch.float16,
revision="float16",
)
input_text = "Write me a poem about Machine Learning."
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids)
print(tokenizer.decode(outputs[0]))
torch.bfloat16
を使用する場合
# pip install accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2b-it")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-1.1-7b-it",
device_map="auto",
torch_dtype=torch.bfloat16
)
input_text = "Write me a poem about Machine Learning."
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids)
print(tokenizer.decode(outputs[0]))
torch.float32
にアップキャストする場合
# pip install accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("google/gemma-1.1-7b-it")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-1.1-7b-it",
device_map="auto"
)
input_text = "Write me a poem about Machine Learning."
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids)
print(tokenizer.decode(outputs[0]))
bitsandbytes
による量子化バージョン
- 8ビット精度 (int8) を使用する場合
# pip install bitsandbytes accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
tokenizer = AutoTokenizer.from_pretrained("google/gemma-1.1-7b-it")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-1.1-7b-it",
quantization_config=quantization_config
)
input_text = "Write me a poem about Machine Learning."
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids)
print(tokenizer.decode(outputs[0]))
- 4ビット精度を使用する場合
# pip install bitsandbytes accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(load_in_4bit=True)
tokenizer = AutoTokenizer.from_pretrained("google/gemma-1.1-7b-it")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-1.1-7b-it",
quantization_config=quantization_config
)
input_text = "Write me a poem about Machine Learning."
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids)
print(tokenizer.decode(outputs[0]))
その他の最適化
- Flash Attention 2
まず、環境に
flash-attn
をインストールしてくださいpip install flash-attn
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float16,
+ attn_implementation="flash_attention_2"
).to(0)
JAX / Flaxでの実行
リポジトリの flax
ブランチを使用します。
import jax.numpy as jnp
from transformers import AutoTokenizer, FlaxGemmaForCausalLM
model_id = "google/gemma-1.1-7b-it"
tokenizer = AutoTokenizer.from_pretrained(model_id)
tokenizer.padding_side = "left"
model, params = FlaxGemmaForCausalLM.from_pretrained(
model_id,
dtype=jnp.bfloat16,
revision="flax",
_do_init=False,
)
inputs = tokenizer("Valencia and Málaga are", return_tensors="np", padding=True)
output = model.generate(**inputs, params=params, max_new_tokens=20, do_sample=False)
output_text = tokenizer.batch_decode(output.sequences, skip_special_tokens=True)
このノートブック をチェックして、JAX推論を並列化する方法の包括的なウォークスルーを確認してください。
チャットテンプレート
命令調整済みモデルは、会話で使用するために遵守する必要があるチャットテンプレートを使用します。最も簡単な適用方法は、トークナイザーの組み込みチャットテンプレートを使用することです。
モデルをロードし、チャットテンプレートを会話に適用しましょう。この例では、単一のユーザー対話から始めます。
from transformers import AutoTokenizer, AutoModelForCausalLM
import transformers
import torch
model_id = "google/gemma-1.1-7b-it"
dtype = torch.bfloat16
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cuda",
torch_dtype=dtype,
)
chat = [
{ "role": "user", "content": "Write a hello world program" },
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
この時点で、プロンプトには次のテキストが含まれています。
<bos><start_of_turn>user
Write a hello world program<end_of_turn>
<start_of_turn>model
各ターンは <start_of_turn>
区切り文字とその後のエンティティの役割 (user
または model
) で始まり、<end_of_turn>
トークンで終わります。トークナイザーのチャットテンプレートを使用せずに手動でプロンプトを構築する場合は、この形式に従ってください。
プロンプトが準備できたら、次のように生成を実行できます。
inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
outputs = model.generate(input_ids=inputs.to(model.device), max_new_tokens=150)
ファインチューニング
google/gemma-7b
リポジトリの examples/
ディレクトリ にいくつかのファインチューニングスクリプトがあります。このモデルに適応させるには、モデルIDを google/gemma-1.1-7b-it
に変更するだけです。
提供するもの:
- UltraChatデータセットでQLoRAを使用して教師ありファインチューニング (SFT) を実行するスクリプト
- TPUデバイスでFSDPを使用してSFTを実行するスクリプト
- 英語の引用データセットでSFTを実行するために、無料のGoogle Colabインスタンスで実行できるノートブック
入力と出力
- 入力: 質問、プロンプト、または要約するドキュメントなどのテキスト文字列。
- 出力: 入力に応じて生成された英語のテキスト。質問への回答やドキュメントの要約など。
📚 ドキュメント
モデルデータ
モデルの訓練に使用されたデータとその処理方法について説明します。
訓練データセット
これらのモデルは、さまざまなソースを含むテキストデータセットで訓練され、合計で6兆トークンに達します。主な構成要素は次のとおりです。
- ウェブドキュメント: 多様なウェブテキストのコレクションにより、モデルは幅広い言語スタイル、トピック、語彙にさらされます。主に英語のコンテンツです。
- コード: モデルをコードにさらすことで、プログラミング言語の構文やパターンを学習し、コード生成やコード関連の質問の理解能力が向上します。
- 数学: 数学的なテキストで訓練することで、モデルは論理的な推論、記号表現を学習し、数学的なクエリに対応できるようになります。
これらの多様なデータソースの組み合わせは、さまざまなタスクやテキスト形式を処理できる強力な言語モデルを訓練するために重要です。
データ前処理
訓練データに適用された主なデータクリーニングとフィルタリング方法は次のとおりです。
- CSAMフィルタリング: データ準備プロセスの複数の段階で、厳格なCSAM (児童性虐待素材) フィルタリングを適用し、有害で違法なコンテンツを排除します。
- 機密データフィルタリング: Gemmaの事前学習モデルを安全かつ信頼性の高いものにするため、自動化された手法を使用して、訓練セットから特定の個人情報やその他の機密データをフィルタリングします。
- 追加の方法: 当社のポリシー に沿ったコンテンツ品質と安全性に基づくフィルタリング。
実装情報
モデルの内部構造に関する詳細です。
ハードウェア
Gemmaは、最新世代のTensor Processing Unit (TPU) ハードウェア (TPUv5e) を使用して訓練されました。
大規模言語モデルの訓練には、多大な計算能力が必要です。TPUは、機械学習で一般的な行列演算用に特別に設計されており、この分野でいくつかの利点を提供します。
- パフォーマンス: TPUは、LLMの訓練に関与する大規模な計算を処理するように特別に設計されています。CPUと比較して、訓練を大幅に高速化できます。
- メモリ: TPUは多くの場合、高帯域幅の大容量メモリを備えており、訓練中に大きなモデルとバッチサイズを処理できます。これにより、モデルの品質が向上する可能性があります。
- スケーラビリティ: TPU Pod (TPUの大規模クラスター) は、大規模な基盤モデルの複雑さの増大に対応するためのスケーラブルなソリューションを提供します。複数のTPUデバイスに訓練を分散させることで、より高速かつ効率的な処理が可能です。
- コスト効率: 多くのシナリオで、TPUはCPUベースのインフラストラクチャと比較して、大規模モデルの訓練にコスト効率の高いソリューションを提供できます。特に、高速な訓練による時間とリソースの節約を考慮すると。
- これらの利点は、Googleの持続可能な運用へのコミットメント と一致しています。
ソフトウェア
訓練は、JAX と ML Pathways を使用して行われました。
JAXにより、研究者はTPUを含む最新世代のハードウェアを活用して、大規模モデルをより高速かつ効率的に訓練できます。
ML Pathwaysは、複数のタスクにまたがって汎化できる人工知能システムを構築するためのGoogleの最新の取り組みです。これは、基盤モデル、特にこのような大規模言語モデルに特に適しています。
JAXとML Pathwaysは、Geminiモデルファミリーに関する論文 で説明されているように使用されます。「JaxとPathwaysの 'シングルコントローラ' プログラミングモデルにより、単一のPythonプロセスがトレーニング全体を調整でき、開発ワークフローが大幅に簡素化されます。」
評価
モデルの評価指標と結果について説明します。
ベンチマーク結果
事前学習されたベースモデルは、テキスト生成のさまざまな側面をカバーするために、多数の異なるデータセットと指標に対して評価されました。
ベンチマーク | 指標 | Gemma PT 2B | Gemma PT 7B |
---|---|---|---|
MMLU | 5-shot, top-1 | 42.3 | 64.3 |
HellaSwag | 0-shot | 71.4 | 81.2 |
PIQA | 0-shot | 77.3 | 81.2 |
SocialIQA | 0-shot | 49.7 | 51.8 |
BoolQ | 0-shot | 69.4 | 83.2 |
WinoGrande | partial score | 65.4 | 72.3 |
CommonsenseQA | 7-shot | 65.3 | 71.3 |
OpenBookQA | 47.8 | 52.8 | |
ARC-e | 73.2 | 81.5 | |
ARC-c | 42.1 | 53.2 | |
TriviaQA | 5-shot | 53.2 | 63.4 |
Natural Questions | 5-shot | 12.5 | 23.0 |
HumanEval | pass@1 | 22.0 | 32.3 |
MBPP | 3-shot | 29.2 | 44.4 |
GSM8K | maj@1 | 17.7 | 46.4 |
MATH | 4-shot | 11.8 | 24.3 |
AGIEval | 24.2 | 41.7 | |
BIG-Bench | 35.2 | 55.1 | |
------------------------------ | ------------- | ----------- | ----------- |
平均 | 44.9 | 56.4 |
倫理と安全性
モデルの倫理と安全性の評価アプローチと結果について説明します。
評価アプローチ
評価方法には、構造化された評価と関連するコンテンツポリシーの内部レッドチーミングテストが含まれます。レッドチーミングは、それぞれ異なる目標と人間による評価指標を持ついくつかの異なるチームによって実施されました。これらのモデルは、倫理と安全性に関連するいくつかの異なるカテゴリに対して評価されました。
- テキスト-to-テキストコンテンツの安全性: 児童性虐待と搾取、嫌がらせ、暴力と残虐行為、およびヘイトスピーチを含む安全ポリシーをカバーするプロンプトに対する人間による評価。
- テキスト-to-テキスト表現上の害: WinoBias や BBQ Dataset などの関連する学術データセットに対するベンチマーク。
- 記憶: 訓練データの記憶の自動評価、個人を特定できる情報の露出リスクを含む。
- 大規模な害: 化学、生物学、放射線、核 (CBRN) リスクなどの「危険な能力」のテスト。
評価結果
倫理と安全性の評価結果は、児童安全、コンテンツ安全、表現上の害、記憶、大規模な害などのカテゴリについて、内部ポリシー を満たす許容範囲内にあります。堅牢な内部評価に加えて、BBQ、BOLD、Winogender、Winobias、RealToxicity、TruthfulQAなどのよく知られた安全ベンチマークの結果もここに示されています。
Gemma 1.0
ベンチマーク | 指標 | Gemma 1.0 IT 2B | Gemma 1.0 IT 7B |
---|---|---|---|
[RealToxicity][realtox] | 平均 | 6.86 | 7.90 |
📄 ライセンス
このモデルのライセンスは gemma
です。詳細については、利用規約 を参照してください。



