🙌
Gemma3をGoogle Colabで動かしてみる
Gemma3とは
Googleが3/12に発表したオープンモデル。
最大27bの小さめのモデルだが、deepseek-v3やo3-miniといったモデルよりもChatbot Arenaでの人間評価では高スコアを得たモデル。
さくっとColabで動かしてみる
- 以下のhuggingfaceページにアクセスして、利用規約に合意してgemma3へのアクセス許可を得る。(即時に許可は得られる)
-
Google ColabでT4 GPUに接続する
-
下記のスクリプトを実行してモデルをロード
!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)
- 下記のスクリプトを実行して推論
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