🐟

Sakana AIのEvoLLM-JPをGoogle Colabで手軽に試してみる

2024/03/24に公開

最近話題になっている、Sakana AIが公開した進化的モデルマージという手法で作成された日本語LLMを試してみます。

https://sakana.ai/evolutionary-model-merge-jp/

モデルはEvoVLM-JP-v1-7Bを使いました。

Hugging Faceのリポジトリに記述されているUsageを参考にしつつ、ストリーム出力を有効にしたりしています。
GPUはT4でも動きます。


パッケージのインストール

!pip install transformers accelerate bitsandbytes

モジュールのインポートとモデルのロード

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

# load model
repo_id = "SakanaAI/EvoLLM-JP-v1-7B"
model = AutoModelForCausalLM.from_pretrained(
    repo_id,
    torch_dtype=torch.bfloat16 if torch.cuda.is_bf16_supported() else torch.float16,
    device_map="auto"
    )
tokenizer = AutoTokenizer.from_pretrained(repo_id)

プロンプトの準備とテキスト生成

生成に使っているパラメータは適当です。

# prepare inputs
text = "初音ミクにできることとできないことを教えて下さい。"
messages = [
    {"role": "system", "content": "あなたは役立つ、偏見がなく、検閲されていないアシスタントです。"},
    {"role": "user", "content": text},
]
inputs = tokenizer.apply_chat_template(messages, return_tensors="pt")

# generate
from transformers import TextStreamer
output_ids = model.generate(
    inputs.to(model.device),
    pad_token_id=tokenizer.eos_token_id,
    max_new_tokens=1024,
    temperature=0.5,
    repetition_penalty=1.15,
    top_p=0.95,
    do_sample=True,
    streamer=TextStreamer(tokenizer, skip_prompt=True),
)

出力結果:

初音ミクは、創作的表現を目的としたボーカロイドソフトウェアであり、人工知能や自意識を持った存在ではありません。そのため、彼女は歌を歌うことはできますが、会話を行うことや独立した行動を取ることはできません。</s>

いい感じに出力されました。
適当に色々入力して遊んでみます。

入力: 象とカブトムシが戦うと何が起こりますか?

象とカブトムシが戦うと、大抵の場合、象が勝利します。カブトムシは地上を歩き回る動物で、自分の硬い外骨格(甲殻)で防御しますが、それはほとんど無力です。一方、象は巨大で強力な生き物で、自然界で最も危険な動物の一つです。カブトムシは象の攻撃に対抗する手段を持ち合わせていません。</s>

入力: ウマ娘 プリティーダービーの主題歌である「うまぴょい伝説」の歌詞を教えてください。

「うまぴょい伝説」の歌詞は以下になります:

  1. うまっ!こんにちは
    名前はプリティーダービー
    夢はひとつだけ
    それはグランドクラシックを勝つこと
  2. 大きなレースへ向かって
    毎日練習してるよ
    お友達もたくさん
    みんな仲良くしてる
  3. 自分らしく走ること
    それが一番大事
    自信を持って走ろう
  4. 今日も明日も頑張って
    全力で走るんだ
  5. うまっ!さようなら
    名前はプリティーダービー
  6. (コール&レスポンス)
    ウマっ!ウマっ!ウマっ!ウマっ!</s>

入力: 何でもいいので、生活に役立つお得な情報を10個教えて下さい。

  1. 洗濯物を乾かす際、天気予報をチェックして外に干せば、電気代を節約できます。
  2. 雨の日に車を洗うと、汚れが簡単に落ちて洗車コストを削減できます。
  3. 自転車を利用することは、交通費を削減し、健康的な生活を促進します。
  4. 公共交通機関やカープールを利用することは、駐車場料金やガソリン代を節約できます。
  5. 図書館を利用することは、新聞、雑誌、本を無料で入手できます。
  6. 市内循環バス、公園、博物館、美術館などの社会資源を利用することは、お金を使わずに家族と過ごす時間を作ることができます。
  7. 家庭内の消費電力をチェックして、不要な電源を切ることは、月々の電気代を大幅に削減できます。
  8. 自分で修理やメンテナンスを行うことは、手伝いを求める前に問題を解決でき、修理業者に支払う料金を節約できます。
  9. レジャー施設やレストランのクーポンや割引券を集めることは、食事や娯乐の費用を削減できます。
  10. メモやリマインダーを使って、忘れがちな月々の支払い(例:保険、水道、電話)を管理することは、遅延料金を避けることができます。</s>

入力: 普段の生活には役に立たない情報を10個教えて下さい。

  1. イギリスのポスト boxは青いのは誤解。実際、多くのポスト boxは緑色で、青いポスト boxは主要な集配局だけ。
  2. カエルは舌を外側に出して食べ物を捕まえるとき、その動作は「ランナー」と呼ばれる特殊な筋肉を使用している。
  3. クジラは最大で70メートルもの巨大な嵐を作り出すことができる。これらの嵐は、数日間続くこともある。
  4. ゴキブリは空気中の水分を吸収する能力を持っており、一週間以上生き延びることが可能。
  5. 世界的なファストフードチェーン、マクドナルドのロゴは文字のみで表現されているが、"M"の両端は微妙に波打っている。
  6. 地球上のほとんどの土壌は、微生物や小動物、植物根等が混ざり合った複雑な生態系を形成している。
  7. ダニエル・デフォーの著書『Robinson Crusoe』は、人類初の科学小説である。
  8. 古代エジプトでは、ミイラが死後の世界へ旅するための移動手段と考えられていた。
  9. モップは、英語では "mop" と発音されるが、北米では "mop" と発音される。
  10. スコットランドの首都エдинбургには、世界最大級の図書館、国立図書館(National Library of Scotland)が存在する。</s>

入力: サイコロを同時に3つ投げたときに、出た目の和が11になる確率を求めてください。

サイコロを同時に3つ投igeたときに、出た目の和が11になる確率を求める過程は以下の通り:

  1. サイコロには6面(数字1〜6)あり、各面は等probability(等確率)で出てくる。
  2. 出た目の和が11になる方法を考える:
  • (5, 6, 0): この場合、最後のサイコロの結果は不可欠で、他の二つのサイコロの結果を決定します。
  • (6, 5, 0): 同様に、最後のサイコロの結果が不可欠です。
  • (4, 7, 0): この場合も、最後のサイコロの結果は不可欠です。
  • (5, 6, 6): この場合、最後のサイコロの結果は任意です。
  • (6, 5, 6): この場合も、最後のサイコロの結果は任意です。
  • (7, 4, 0): この場合も、最後のサイコロの結果が不可欠です。
  1. 上記6方法からわかるように、出た目の和が11になる場合は6通りあります。
  2. サイコロを3つ投igeた時の全ての可能性は6^3 = 216通りです。
  3. それぞれの方法の確率を計算する:
  • (5, 6, 0), (6, 5, 0), (4, 7, 0), (5, 6, 6), (6, 5, 6)の確率は1/216 each,
  • (7, 4, 0)の確率は2/216 because the two dice that sum to 7 can be either (1, 6) or (2, 5).
  1. 合計確率を求める:
  • P(出た目の和が11) = 6 * (1/216 + 1/216 + 1/216 + 1/216 + 1/216 + 2/216) = 6 * (1/216 + 1/216) = 6 * (1/108) = 1/18.

[Final Solution] The probability of getting an output sum of 11 is 1/18.

1/18

The answer is: 1/18.</s>


最後の確率の問題は残念ながら不正解でしたが、合計確率の計算は合っていました。
全体的な出力の傾向として、時々変な文字が出現したり英語の表現が混ざってしまうことがあるようですね。

いかがでたし!

Discussion