見出し画像

ELYZAの新しい言語モデル(ELYZA-japanese-Llama-2-7b)を無料版Google Colabで試してみた

こんにちは。横須賀市デジタル・ガバメント推進室生成AI推進チームのM田です。私はどちらかというと技術に寄ったちょっとマニアックな記事を書いていきます。

今回は、東京大学松尾研究室発のAIスタートアップ「ELYZA」の「ELYZA-japanese-Llama-2-7b」という大規模言語モデルを、Google Colaboratory(無料版)で試してみました!


1.ELYZA-japanese-Llama-2-7b

ELYZAがMetaの「Llama 2」をベースに開発したモデルが「ELYZA-japanese-Llama-2-7b」です。

以下のIT naviさんのnoteの「まとめ」にもあるように、母体となったLlama2の性能は「オープンソースモデルの中では極めて優秀」ですが、我々日本人が使うためには日本語の回答がほぼ出ないという弱点がありました。

「ELYZA-japanese-Llama-2-7b」は、Llama2に日本語による追加事前学習を行っており、日本語で回答が返ってきます。また、商用利用も可能なようです。

なお、大規模言語モデルの性能は規模(パラメーター数)に比例します。また、規模が大きくなるとコンピューターの性能(特にGPU)が要求されます。
今回のELYZAのモデルのパラメータ数は7B (Billion)、つまり70億です。また今後、より大きな規模(130億及び700億)のモデルも出てくるとのことです。

(ちなみにGPT-4やGPT-3.5のパラメータ数は非公開ですが、それらの前身のGPT-3でもパラメータ数は1750億です)

2.早速試してみた

プログラムは、npakaさんとshi3zさんのnoteを参考(というかほぼそのまま)に動かしました!

まずは、必要なパッケージをインストールします。

# パッケージのインストール
!pip install transformers accelerate bitsandbytes

次に、トークナイザーとモデルを準備します。トークナイザーとは、文章をトークン(≒単語)単位に分割し、IDを振るものです。(npakaさんのnoteより)。
モデルをメモリに展開して利用可能にするので、すこし時間がかかります。

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# トークナイザーとモデルの準備
tokenizer = AutoTokenizer.from_pretrained(
    "elyza/ELYZA-japanese-Llama-2-7b-instruct"
)
model = AutoModelForCausalLM.from_pretrained(
    "elyza/ELYZA-japanese-Llama-2-7b-instruct",
    torch_dtype=torch.float16,
    device_map="auto"
)

そして、モデルを使ってテキストを生成する関数を定義して、準備完了です。生成される最大のトークン数は、いったん1024としてみました。

B_INST, E_INST = "[INST]", "[/INST]"
B_SYS, E_SYS = "<<SYS>>\n", "\n<</SYS>>\n\n"
DEFAULT_SYSTEM_PROMPT = "あなたは誠実で優秀な日本人のアシスタントです。"

def q(text):
	prompt = "{bos_token}{b_inst} {system}{prompt} {e_inst} ".format(
	    bos_token=tokenizer.bos_token,
	    b_inst=B_INST,
	    system=f"{B_SYS}{DEFAULT_SYSTEM_PROMPT}{E_SYS}",
	    prompt=text,
	    e_inst=E_INST,
	)
	with torch.no_grad():
	    token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
	    output_ids = model.generate(
	        token_ids.to(model.device),
	        max_new_tokens=1024,
	        pad_token_id=tokenizer.pad_token_id,
	        eos_token_id=tokenizer.eos_token_id,
	    )
	output = tokenizer.decode(output_ids.tolist()[0][token_ids.size(1) :], skip_special_tokens=True)
	print(output)
動かしてみた画面。VRAMの消費量は約14GB程度。RTX 4080/4090あたりで動きそう。

早速話しかけてみましょう。

q("""こんにちは。元気ですか?""")

こんにちは。元気です。

ELYZA-japanese-Llama-2-7b-instruct

ちゃんと返ってきました。少し長い文章も生成してもらいましょう。

q("""大規模言語モデルを動かすのになぜGPUが必要なのですか?""")

大規模な言語モデルを動かすにはGPUが必要な理由を説明します。 大規模な言語モデルは、巨大なネットワークを構築する必要があります。これらのネットワークは、大量の計算を必要とし、CPUでは処理することが困難になります。GPUは、大量の計算を同時に行うことができるため、大規模な言語モデルを動かすのに適しています。

ELYZA-japanese-Llama-2-7b-instruct

日本語として普通に読める文章が返ってきました!

3.ChatGPTとの比較

(1)アンケートの設問づくり

以下のプロンプトを使って、ChatGPTと比べてみましょう。

横須賀市役所の職員向けに、データ利活用のためのBIツールの利用方法の研修を行いました。
研修の結果の効果測定のため、参加者にアンケートを取りたいと考えています。
アンケートの設問を5問と、それぞれの設問に対する回答の選択肢の案を考えてください。

まずはChatGPTから。

もちろんです。横須賀市役所の職員向けのデータ利活用の研修のためのアンケート設問と選択肢の案を以下に示します。研修の効果測定に役立つ内容を含めていますが、必要に応じてカスタマイズしてください。

アンケート設問 1: 研修内容について
1.研修の内容は理解しやすかったですか?
・とても理解しやすかった
・理解しやすかった
・どちらとも言えない
・理解しにくかった
・とても理解しにくかった

アンケート設問 2: データ利活用の実践への影響
2.この研修を受けて、データを活用した業務の改善方法が見つかりましたか?
・はい、いくつか見つかりました
・はい、少し見つかりました
・いいえ、特に変化はありません
・わからない

アンケート設問 3: BIツールの利用に関する自信
3.研修を受けて、BIツールの利用に対する自信がどの程度向上しましたか?
・大幅に向上した
・ある程度向上した
・変化なし
・わからない

アンケート設問 4: 職務への応用について
4.習得した知識やスキルを、実際の業務にどの程度活かす予定ですか?
・積極的に活用する予定です
・ある程度活用する予定です
・あまり活用しない予定です
・全く活用しない予定です

アンケート設問 5: 今後の支援について
5.今後、より深い内容の研修やサポートがあれば利用したいと思いますか?
・はい、利用したい
・必要に応じて利用するかもしれない
・利用する予定はありません
・わからない

これらの設問と選択肢を基に、研修の効果や参加者の意見を収集するアンケートを作成できます。特定の状況やニーズに合わせて微調整を行い、有益な情報を得る手助けとなることを願っています。

ChatGPT(GPT-3.5-Turbo)

データ利活用のためのBIツールの利用方法の研修に関するアンケート設問と回答の選択肢の案を以下に示します。
1.研修の内容は、あなたの業務に役立つと感じましたか?
・非常に役立つと感じた
・ある程度役立つと感じた
・どちらとも言えない
・あまり役立つと感じなかった
・まったく役立つと感じなかった
2.BIツールの操作方法について、十分に理解できましたか?
・完全に理解した
・大部分を理解した
・一部のみ理解した
・ほとんど理解できなかった
・まったく理解できなかった
3.研修の進行や講師の説明はわかりやすかったですか?
・非常にわかりやすかった
・わかりやすかった
・普通だった
・わかりにくかった
・非常にわかりにくかった
4.今後、実業務でBIツールを利用する意向はありますか?
・確実に利用する予定だ
・できるだけ利用したいと考えている
・状況によって考える
・あまり利用する意向はない
・全く利用するつもりはない
5.研修に関して、改善点や追加してほしい内容があれば教えてください。(自由記述)

このようなアンケートを通じて、研修の内容や進行についてのフィードバックを受け取り、次回の研修の向上に役立てることができると思います。

ChatGPT(GPT-4)

今回のモデルではこうなりました。

データ利活用のためのBIツールの利用方法の研修の効果測定のためのアンケートの設問とそれぞれの設問に対する回答の選択肢の案を作成します。

アンケートの設問は以下の通りです。

1. 今回の研修で学んだことを、日常業務に活かしていきますか。
- はい
- いいえ
2. 今回の研修で使用したBIツールの操作について、自分のPCにインストールして活用しますか。
- はい
- いいえ
3. 今回の研修で学んだ内容を、職場の仲間に教えてあげたいと思いますか。
- はい
- いいえ
4. 今回の研修で使用したデータは、自分の業務に直接役立つものでしたか。
- はい
- いいえ
5. 今回の研修で学んだことを、次回の研修でも活かしていきますか。
- はい
- いいえ

また、それぞれの設問に対する回答の選択肢の案は以下の通りです。

1. はい
- 自分の日常業務に活かしていく
- 職場の仲間に教えて技術を磨き上げる
- 上司に報連相のために活用する
2. はい
- 自分のPCにインストールして活用する
- 職場の仲間に教えて技術を磨き上げる
- 上司に報連相のために活用する
3. はい
- 職場の仲間に教えて技術を磨き上げる
- 上司に報連相のために活用する
- 自分の日常業務に活かしていく
4. はい
- 自分の業務に直接役立つものであると考えている
- 自分の業務に間接的に役立つものであると考えている
- 自分の業務に役立つものではないと考えている
5. はい
- 次回の研修でも活かしていく
- 次回の研修でも活かさない
- 未定

ELYZA-japanese-Llama-2-7b-instruct

(2)ドメインを考えてもらう

次に、以下の記事で使ったプロンプトも試してみましょう。

##命令文:
あなたは有能なコピーライターで、特にWebサイトの名称やドメインを考えるプロフェッショナルです。
次に示すWebサイトの概要と、条件をふまえたWebサイトのドメインの案を5つ考え、それぞれの案に込められた思いを簡潔に説明する文とともに示してください。

##Webサイトの概要:
・生成AIを活用していく取り組みを、いくつかの地方自治体が共同で発信する
・このWebサイトは、横須賀市が主催する
・地域の住民や他の地方自治体、さらに企業、研究機関等に、行政が取り組む生成AI活用の生の情報を発信する
・地方自治体が生成AIに取り組む価値を伝える
・生成AIに取り組む自治体や企業を増やし、生成AI活用の取り組み全体を盛り上げることが目的

##条件:
・横須賀市が主催だが、横須賀市を表す文字はドメインには入れない
・ドメインの長さは10文字以内にすること
・覚えやすく、言いやすい、キャッチーなドメイン名にすること
・日本のWebサイトなので、.jpドメインにすること

##ドメインの案:

GPT-4だと、次のような回答が来ていました。(前のnote記事より)

1. `ai-matsuri.jp`: これは、AIへの取り組みを祭りのように活発で、豊かで盛り上がるものと表現しています。"matsuri"は日本語で祭りを意味し、楽しい雰囲気と共同体の感覚を伝えます。

2. `aidashi.jp`: 'Aidashi'は、AIの'Dashi'(出し)を意味し、地方自治体が生成AIのアイデアや情報を提供していることを強調します。また、リズムのある言葉で覚えやすさを追求しました。

3. `ainoshi.jp`: これは、"愛のし"あるいは"AIの使い"の意味で、地方自治体がAIとの積極的な取り組みを伝えます。また、"愛"という言葉が親しみやすさを引き立てます。

4. `irouai.jp`: これは"入るAI"の意味で、地域社会全体にAI技術を広めるイメージを表現します。シンプルで覚えやすい言葉になっています。

5. `aitenki.jp`: "AI天気"の意味で、毎日変わる、新鮮でエキサイティングなAIの情報を提供することをイメージさせます。また、"天気予報"という親しまれた概念と関連付けて覚えやすさを追求しました。

ChatGPT(GPT-4)

今回のモデルだとどうでしょうか?

承知しました。条件をふまえたWebサイトのドメインの案とそれぞれの思いを説明します。

ドメインの案:
- AI活用.jp: 「AI」は、今後ますます重要になる技術であり、「活用」は、横須賀市が主催するWebサイトであることを表す。
- 地域.ai: 「地域」は、横須賀市が主催するWebサイトであることを表す。
- 生成.ai: 「生成」は、生成AIを活用していく取り組みを発信するWebサイトであることを表す。
- 活用.jp: 「活用」は、横須賀市が主催するWebサイトであることを表す。
- エイジェンス.jp: 「エイジェンス」は、生成AIに取り組む自治体や企業を増やし、生成AI活用の取り組み全体を盛り上げることが目的のWebサイトであることを表す。

それぞれのドメインの案に込められた思いは、上記の通りです。

ELYZA-japanese-Llama-2-7b-instruct

日本語モデルなので、ドメイン名が日本語で返ってきてしまいました!また「それぞれの思い」の内容も怪しいです。とはいえ、指示はおおむね通じてる雰囲気ですね。

(3)比べてみて感じたこと

今となっては驚きは少ないですが、GPT-3.5-Turbo、GPT-4ともに、ChatGPTはさすがの回答です。(巨大なモデルなので、当たり前ですが…)

一方、「ELYZA-japanese-Llama-2-7b-instruct」も、7Bという小さいモデルの割にちゃんと返ってきている感じがします。
指示したことはちゃんと通じているようですし、もう少し精度が上がれば十分業務でも使えるのではないでしょうか?

4.これは何が凄いの?

ChatGPTをはじめ、現在多くのユーザーに使われている大規模言語モデルは、クラウド上の巨大なサーバー、多数のGPUによって動いています。したがって、ユーザーはインターネットを経由して言語AIを使わざるを得ません。

しかし今回の7Bのモデルは、"逸般の誤家庭"にある数十万円程度のゲーミングPC…つまり個人で買えるレベルのコンピューターで動きます。こういった比較的小規模なモデルの精度が上がっていくと、いずれ、ちゃんと使える言語AIがクローズでローカルな環境で動くようになります。

ローカルで閉じた環境の中であれば、情報が流出する心配は格段に抑えられます。地方自治体にとっては、言語AIで個人情報の入ったデータも扱うことができるようになり、言語AIの活用の幅がとても広がります!

5.まとめ

今回は、東京大学松尾研究室発のAIスタートアップ「ELYZA」の「ELYZA-japanese-Llama-2-7b」という言語モデルを試用してみました。

もちろん、今すぐこれを自治体の中で使うことは難しいとは思いますが、かなり可能性を感じる結果だったと思っています。

なお、今回のColab notebookは、以下から閲覧できます。ぜひコピーして試してみてください。

(M田主任三郎)

この記事が参加している募集