👻

Googleの作ったオープンモデルLLM「Gemma」をGoogle Colabで使ってみる

2024/02/22に公開

突然GoogleがオープンモデルのLLMである「Gemma」を発表したのでGoogle Colabで使ってみます。

Gemmaとは

Gemmaは、Geminiモデルを作成するのと同じ研究と技術を用いて構築された軽量で最先端のオープンモデルのファミリーです。Google DeepMindおよびGoogleの他のチームによって開発されたGemmaは、Geminiに触発されており、その名前はラテン語で「貴重な石」を意味する「gemma」を反映しています。モデルの重みと共に、開発者のイノベーションをサポートし、コラボレーションを促進し、Gemmaモデルの責任ある使用をガイドするためのツールもリリースしています。
2Bと7Bの重みがあり、それぞれinstruct-tunedされたものとされてないものが公開されています。

Google Colabで動かしてみる

まずGemmaがアップロードされているKaggleページにてアクセス権をリクエストしないといけません。
以下のリンクにやり方が書いてあります。
https://ai.google.dev/gemma/docs/setup?hl=ja

筆者はPytorchが好きなのでPytorchバージョンのドキュメントに従います。
https://ai.google.dev/gemma/docs/pytorch_gemma

上のリンクのここを押すとGoogle Colabが開きます。(この画像を押しても開く)

上から実行していきます。
モデルは2b-itにしてみます。(T4でも量子化されてれば7Bも動きます)
下まで行き、このセルで生成ができるようです。

# Generate with one request in chat mode

# Chat templates
USER_CHAT_TEMPLATE = '<start_of_turn>user\n{prompt}<end_of_turn>\n'
MODEL_CHAT_TEMPLATE = '<start_of_turn>model\n{prompt}<end_of_turn>\n'

# Sample formatted prompt
prompt = (
    USER_CHAT_TEMPLATE.format(
        prompt='What is a good place for travel in the US?'
    )
    + MODEL_CHAT_TEMPLATE.format(prompt='California.')
    + USER_CHAT_TEMPLATE.format(prompt='What can I do in California?')
    + '<start_of_turn>model\n'
)
print('Chat prompt:\n', prompt)

model.generate(
    USER_CHAT_TEMPLATE.format(prompt=prompt),
    device=device,
    output_len=100,
)

返答が返ってきました。

Chat prompt:
 <start_of_turn>user
What is a good place for travel in the US?<end_of_turn>
<start_of_turn>model
California.<end_of_turn>
<start_of_turn>user
What can I do in California?<end_of_turn>
<start_of_turn>model

California is a vast state with something for everyone, from stunning natural beauty and vibrant cities to lively towns and unique experiences. Here are some popular destinations to consider:\n\n**Popular tourist destinations:**\n\n* **Coastal towns:** Santa Monica, Malibu, Monterey Bay, Hearst Castle in San Simeon\n* **Mountain towns:** Yosemite National Park, Sequoia National Park, Mount Shasta, Big Sur\n* **City life:** San Diego, Los Angeles, San Francisco, Sacramento\n* **Nature lovers:** Redwood National

日本語で話しかけてみましょう。

# Generate with one request in chat mode

# Chat templates
USER_CHAT_TEMPLATE = '<start_of_turn>user\n{prompt}<end_of_turn>\n'
MODEL_CHAT_TEMPLATE = '<start_of_turn>model\n{prompt}<end_of_turn>\n'

# Sample formatted prompt
prompt = (
    USER_CHAT_TEMPLATE.format(
        prompt='アメリカで旅行するとしたらどこ?'
    )
    + MODEL_CHAT_TEMPLATE.format(prompt='カリフォルニア州')
    + USER_CHAT_TEMPLATE.format(prompt='カリフォルニア州では何ができる?')
    + '<start_of_turn>model\n'
)
print('Chat prompt:\n', prompt)

model.generate(
    USER_CHAT_TEMPLATE.format(prompt=prompt),
    device=device,
    output_len=100,
)

2Bにしてはびっくりするほど綺麗な日本語で返ってきました。

Chat prompt:
 <start_of_turn>user
アメリカで旅行するとしたらどこ?<end_of_turn>
<start_of_turn>model
カリフォルニア州<end_of_turn>
<start_of_turn>user
カリフォルニア州では何ができる?<end_of_turn>
<start_of_turn>model

カリフォルニア州は米国の西海岸に位置している州で、豊かな自然と文化の保存に努力しています。\n\nアメリカで旅行するときには、以下の場所に stops と行くことができます。\n\n* パシフィック海岸\n* デカッドランド国立公園\n* セドレー国立公園\n* アマーラ国立海岸\n* ラングラー国立公園\n* リトルレイク国立公園\n* グリーンランド自然公園

以上です。
いきなり重み公開してきてびっくりしました。


https://neoai.jp/

neoAI

Discussion