「Gemma-2-9B」の力を試す!アニメと数学についてGoogleのAIに質問してみた

はるか
はるか
Gemma 2。名前がかっこいい。
ふゅか
ふゅか
Googleが発表した言語モデルね!

1. モデルの概要

「Gemma」は、Googleによって開発された最新の言語モデルの一つであり、最初に発表されたのは2月で、その時点では20億パラメータと70億パラメータの2つのバージョンが提供されていました。これに続いて、「Gemma 2」が発表され、こちらは90億パラメータと270億パラメータの2つのサイズが用意されています。

  • パラメータ数: 90億パラメータ、270億パラメータ
  • 270億パラメータ版
    • 2倍以上の規模のモデルに匹敵
  • 90億パラメータ版
    • 「Llama 3」の80億パラメータ版を上回る性能

Gemma-2-9Bでエラーが出た場合は次のページを参考にしてみてください。

ValueError: The checkpoint you are trying to load has model type `gemma2` but Transformers does not recognize this architecture.の解決方法!gemma2の読み込み

2. pythonコード

2.1. 実行環境

  • RTX 4070ti super VRAM 16GB
  • Windows11
  • memory 64GB
  • Python 3.11.9
  • transformers 4.42.4

2.2. モデルを直接読み込む方法

言語モデルの出力速度を4bitで量子化してモデルを直接読み込みます。

from transformers import AutoModelForCausalLM, AutoTokenizer,set_seed
model_id = "google/gemma-2-9b"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id,
                                             device_map="auto",
                                             load_in_4bit=True)

2.3. 少し昔のアニメについて聞いてみる(ja)

ふゅか
ふゅか
dog daysというちょっと昔のアニメについて聞いてみましょう!
prompt = "dog daysとはどんなアニメですか?"
input_ids = tokenizer.encode(prompt, return_tensors="pt").to("cuda")
output = model.generate(input_ids, max_length=1024)

print(tokenizer.decode(output[0], skip_special_tokens=True))

はるか
はるか
途中からずっとこれ。「犬は、人間よりも体温調節が苦手です。」
ふゅか
ふゅか
アニメについては回答してもらえなかったみたいね!

2.4. 少し昔のアニメについて聞いてみる(en)

英語でも聞いてみたいと思います。

prompt = "What kind of anime is DOG DAYS?"
input_ids = tokenizer.encode(prompt, return_tensors="pt").to("cuda")
output = model.generate(input_ids, max_length=1024)

print(tokenizer.decode(output[0], skip_special_tokens=True))

出力の一部を抜粋

DOG DAYS is a comedy anime series that follows the story of a young man named Shinku who is transported to a world called Elchea. 
In this world, he meets a group of girls who are all part of the Elchea army. 
The girls are all very different from each other, but they all have one thing in common: 
they are all very cute.

日本語訳

DOG DAYSは、エルチアと呼ばれる世界に飛ばされた青年シンクの物語を描いたコメディアニメである。
この世界で彼は、エルチア軍の一員である少女たちと出会う。
彼女たちはそれぞれ全く違うが、共通点がある。
みんなとてもかわいいということだ。

記憶が正しければ、フロニャルドと呼ばれる世界に召喚されたはずであるので、ハルシネーションを確認できます。エルチアとはどこなんでしょうね?

ふゅか
ふゅか
主人公の名前はシンクなのでその部分は正しいですね。

2.5. マクローリン展開を教えてもらう

ふゅか
ふゅか
最後にマクローリン展開を教えてもらいましょう。
prompt = "Give me the formula for the Maclaurin expansion."
input_ids = tokenizer.encode(prompt, return_tensors="pt").to("cuda")
output = model.generate(input_ids, max_new_tokens=100)

print(tokenizer.decode(output[0], skip_special_tokens=True))

出力の一部を抜粋

Give me the formula for the Maclaurin expansion.

The Maclaurin expansion is a special case of the Taylor expansion, where the point of expansion is at x=0.

The Maclaurin expansion is given by:

f(x)=f(0)+f′(0)x+f′′(0)2!x2+f′′′(0)3!x3+⋯
ふゅか
ふゅか
それっぽいものが出てきましたね!
はるか
はるか
うーん。でも数式の分数と指数の部分が違う。
PR