Gemma 3がリリース!Kaggleノートブックで動かしてみよう

データサイエンス

はじめに

Google DeepMindから待望のGemma 3モデルがリリースされました!Gemmaは、Googleの最先端技術であるGeminiモデルと同じ研究から生まれた軽量なオープンモデルファミリーです。今回のGemma 3では、マルチモーダル機能が追加され、テキストと画像の両方を入力として処理し、テキスト出力を生成できるようになりました。

Gemma 3の主な特徴

  • マルチモーダル: テキストと画像の両方を入力として処理
  • 大きなコンテキストウィンドウ: 128Kトークンのコンテキスト(1Bサイズは32K)
  • 多言語サポート: 140以上の言語をサポート
  • 複数のサイズ: 1B、4B、12B、27Bの各サイズで利用可能
  • Pre-trainedとInstruction-tunedの両バージョン: 用途に応じて選択可能
  • 軽量: ラップトップやデスクトップなど、限られたリソースでも利用可能

今回は、最も軽量な1B Instruction-tuned (IT) モデルを使用して、Kaggleノートブックでの動かし方を紹介します。

セットアップ

まず必要なライブラリをインストールしましょう。Gemma 3は特別なバージョンのTransformersを必要とします。

!pip install git+https://github.com/huggingface/transformers@v4.49.0-Gemma-3 

import kagglehub
import torch
from transformers import AutoTokenizer
from transformers.models.gemma3 import Gemma3ForCausalLM

モデルの初期化

Kagglehubを使ってモデルをダウンロードし、トークナイザーとモデルを初期化します。GPUがある場合は自動的に使用されます。

# モデルをダウンロード
GEMMA_PATH = kagglehub.model_download("google/gemma-3/transformers/gemma-3-1b-it")

# トークナイザーを初期化
processor = AutoTokenizer.from_pretrained(GEMMA_PATH)

# GPU利用可能かどうかを確認
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"使用デバイス: {device}")

# モデルを初期化
model = Gemma3ForCausalLM.from_pretrained(GEMMA_PATH).to(device)
print(model)

モデルにプロンプトを与える

Gemma 3に質問してみましょう。入力形式に注意が必要です。特定のフォーマットでプロンプトを構成する必要があります。

prompt = """<start_of_turn>user
Gemmaモデルについて教えてください<end_of_turn>
<start_of_turn>model"""

# 入力をトークナイズしてデバイスに送る
input_ids = processor(text=prompt, return_tensors="pt").to(device)

# テキスト生成
outputs = model.generate(**input_ids, max_new_tokens=512)

# 出力をデコード
text = processor.batch_decode(
    outputs,
    skip_special_tokens=False,
    clean_up_tokenization_spaces=False
)

print(text[0])

マークダウンで出力を表示

出力をより読みやすくするためにマークダウンで表示してみましょう。

from IPython.display import Markdown

# 特殊トークンを除去してマークダウンとして表示
clean_text = processor.batch_decode(
    outputs,
    skip_special_tokens=True,
    clean_up_tokenization_spaces=True
)

display(Markdown(clean_text[0]))

マルチモーダル機能を試す

Gemma 3の新機能であるマルチモーダル機能を試してみましょう。画像を入力として与え、その内容を説明させることができます。

# 画像ファイルをアップロードする場合のサンプルコード
from PIL import Image
import requests
from io import BytesIO

# サンプル画像をダウンロード
url = "https://kaggle.com/static/images/site-logo.png"
response = requests.get(url)
image = Image.open(BytesIO(response.content))

# 画像とテキストの両方を含むプロンプトを作成
prompt_with_image = processor(
    text="<start_of_turn>user\nこの画像について説明してください<end_of_turn>\n<start_of_turn>model",
    images=image,
    return_tensors="pt"
).to(device)

# テキスト生成
outputs_with_image = model.generate(**prompt_with_image, max_new_tokens=256)

# 出力をデコード
text_with_image = processor.batch_decode(
    outputs_with_image,
    skip_special_tokens=True,
    clean_up_tokenization_spaces=True
)

display(Markdown(text_with_image[0]))

まとめ

今回はGemma 3の最も軽量なモデル(1B IT)を使用して、Kaggleノートブックでの基本的な使い方を紹介しました。Gemma 3には他にも様々なサイズやバージョンがあり、用途に応じて選ぶことができます:

  • サイズ: 1B, 4B, 12B, 27B
  • タイプ: Pre-trained (PT), Instruction-tuned (IT)

Gemma 3は多言語サポートとマルチモーダル機能を備えており、さまざまなタスクに活用できます。限られたリソースでも動作する軽量さが特徴で、ラップトップやデスクトップでの利用も可能です。

Kaggle Model Gardenから目的に合ったGemma 3モデルをダウンロードして、ぜひ多言語機能やマルチモーダル機能を試してみてください!

📒ノートブック

Gemma 3がリリース!Kaggleノートブックで動かしてみよう
Explore and run machine learning code with Kaggle Notebooks | Using data from Gemma 3

コメント

タイトルとURLをコピーしました