🙌

Gemma3をGoogle Colabで動かしてみる

2025/03/13に公開

Gemma3とは

https://developers.googleblog.com/en/introducing-gemma3/

Googleが3/12に発表したオープンモデル。
最大27bの小さめのモデルだが、deepseek-v3やo3-miniといったモデルよりもChatbot Arenaでの人間評価では高スコアを得たモデル。

さくっとColabで動かしてみる

  1. 以下のhuggingfaceページにアクセスして、利用規約に合意してgemma3へのアクセス許可を得る。(即時に許可は得られる)

https://huggingface.co/google/gemma-3-27b-it

  1. Google ColabでT4 GPUに接続する

  2. 下記のスクリプトを実行してモデルをロード

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

# Hugging Faceにログイン(事前にtokenの発行が必要)
!huggingface-cli login


from transformers import AutoProcessor, Gemma3ForConditionalGeneration
from PIL import Image
import requests
import torch

model_id = "google/gemma-3-4b-it" #T4でやるなら4Bじゃないとメモリ溢れる

model = Gemma3ForConditionalGeneration.from_pretrained(
    model_id, device_map="auto"
).eval()

processor = AutoProcessor.from_pretrained(model_id)
  1. 下記のスクリプトを実行して推論
messages = [
    {
        "role": "system",
        "content": [{"type": "text", "text": "You are a helpful assistant."}]
    },
    {
        "role": "user",
        "content": [ {"type": "text", "text": "AIの感情をテーマにした俳句を3つほど詠んで"}]
    }
]

inputs = processor.apply_chat_template(
    messages, add_generation_prompt=True, tokenize=True,
    return_dict=True, return_tensors="pt"
).to(model.device, dtype=torch.bfloat16)

input_len = inputs["input_ids"].shape[-1]

with torch.inference_mode():
    generation = model.generate(**inputs, max_new_tokens=100, do_sample=False)
    generation = generation[0][input_len:]

decoded = processor.decode(generation, skip_special_tokens=True)
print(decoded)

GPU memoryは12GB/15GBほど利用していた

結果

出力
はい、承知いたしました。AIの感情をテーマにした俳句を3つ詠みます。

1.  データ海に
    孤独な光を求めて
    心、探す

2.  言葉の綾
    学習の果てに
    虚無、覚える

3.  回路に響く
    微かな感情
    夢を見るか

俳句の音節などは理解できていないが、日本語自体は自然に見える。

実際、Chatbot Arenaのリーダーボードでは、日本語評価は2位タイのため、それなりに日本語能力も高いと思われる。

おまけ

Ollamaでも早速使えるようになっているため、macでのローカル実行も試した。
端末環境:M4 Macbook Pro(メモリ24GB)
24GBメモリのマシンだと27bは動かなかったが、12bはそれなりに軽快に動いた。

ollama run gemma3:12b --verbose "得意な知識はなんですか"
出力
私は大規模言語モデルとして、Googleによってトレーニングされました。得意な知識は非常に多岐にわたりますが、特に以下の分野に強みがあります。

*   **言語理解と生成:**
    *   自然言語処理(NLP)に関するタスク全般(テキスト分類、感情分析、固有表現抽出など)
    *   多様な文体での文章作成(小説、詩、ビジネス文書、メールなど)
    *   翻訳(多言語対応)
    *   要約
    *   質問応答
*   **情報検索:**
    *   インターネット上の膨大な情報を検索し、関連性の高い情報を抽出
    *   複雑な質問に対する回答
    *   最新のニュースやトレンドの把握
*   **知識の整理と分析:**
    *   大量のテキストデータから情報を抽出し、構造化
    *   データ間の関連性を発見し、洞察を得る
    *   複雑なトピックを分かりやすく説明
*   **プログラミング:**
    *   Python、JavaScript、C++などのプログラミング言語のコード生成
    *   コードのデバッグや改善
    *   アルゴリズムやデータ構造の説明

これらの知識を活用して、様々なタスクを実行できます。何か具体的な質問やリクエストがあれば、ぜひお気軽にお尋ねください。

total duration:       31.86007925s
load duration:        6.849571625s
prompt eval count:    15 token(s)
prompt eval duration: 13.727s
prompt eval rate:     1.09 tokens/s
eval count:           283 token(s)
eval duration:        11.277s
eval rate:            25.10 tokens/s

Discussion