1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

はじめに

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モデルをダウンロードして、ぜひ多言語機能やマルチモーダル機能を試してみてください!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?