Calm2-7B-Chatに長文を要約させてみたら
日本語特化な大規模言語モデル「Calm2-7b-Chat」ですが、こいつに期待しているところは、
(1) 文書を食わせてチャットボットにしたい
(2) プログラミングの補助に使いたい
(3) 文字起こしした発言録を要約し、議事録を作成したい
(4) 書き方に悩ましい文章(謝罪メールなど)を作らせたい
この中で(1)、(3)は特に秘匿情報を扱うことが多く、それゆえにOpenAIのサービスには入れるわけにいかないものだったりします。
オンプレで動作するCalm2-7b-Chatに期待されるのは、こういう言語需要に応えてくれることだと思ってます。
ということで、ちょっと長めの文章を要約させてみました。
で、「<a href='https://arkouji.cocolog-nifty.com/blog/2023/11/post-3118e4.html' target='_blank'>けっこう賢い日本語特化な生成AI「Cyberagent Calm2-7B-Chat」とシビアな会話してみた: EeePCの軌跡</a>」で上げた記事中のコードでは、改行付きの長文の入力に不向きだったので、直接Promptを叩きこむプログラムにしました。
assert transformers.__version__ >= "4.34.1"
model = AutoModelForCausalLM.from_pretrained("cyberagent/calm2-7b-chat") # for CPU
tokenizer = AutoTokenizer.from_pretrained("cyberagent/calm2-7b-chat")
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
prompt = """USER: 次の文章を、5行で要約してください。
むかしむかし、あるところに、おじいさんとおばあさんが住んでいました。
おじいさんは山へしばかりに、おばあさんは川へせんたくに行きました。
おばあさんが川でせんたくをしていると、ドンブラコ、ドンブラコと、大きな桃が流れてきました。
「おや、これは良いおみやげになるわ」
おばあさんは大きな桃をひろいあげて、家に持ち帰りました。
そして、おじいさんとおばあさんが桃を食べようと桃を切ってみると、なんと中から元気の良い男の赤ちゃんが飛び出してきました。
「これはきっと、神さまがくださったにちがいない」
子どものいなかったおじいさんとおばあさんは、大喜びです。
桃から生まれた男の子を、おじいさんとおばあさんは桃太郎と名付けました。
桃太郎はスクスク育って、やがて強い男の子になりました。
そしてある日、桃太郎が言いました。
「ぼく、鬼ヶ島(おにがしま)へ行って、わるい鬼を退治します」
おばあさんにきび団子を作ってもらうと、鬼ヶ島へ出かけました。
旅の途中で、イヌに出会いました。
「桃太郎さん、どこへ行くのですか?」
「鬼ヶ島へ、鬼退治に行くんだ」
「それでは、お腰に付けたきび団子を1つ下さいな。おともしますよ」
イヌはきび団子をもらい、桃太郎のおともになりました。
そして、こんどはサルに出会いました。
「桃太郎さん、どこへ行くのですか?」
「鬼ヶ島へ、鬼退治に行くんだ」
「それでは、お腰に付けたきび団子を1つ下さいな。おともしますよ」
そしてこんどは、キジに出会いました。
「桃太郎さん、どこへ行くのですか?」
「鬼ヶ島へ、鬼退治に行くんだ」
「それでは、お腰に付けたきび団子を1つ下さいな。おともしますよ」
鬼ヶ島では、鬼たちが近くの村からぬすんだ宝物やごちそうをならべて、酒盛りの真っ最中です。
「みんな、ぬかるなよ。それ、かかれ!」
イヌは鬼のおしりにかみつき、サルは鬼のせなかをひっかき、キジはくちばしで鬼の目をつつきました。
そして桃太郎も、刀をふり回して大あばれです。
とうとう鬼の親分が、
「まいったぁ、まいったぁ。降参だ、助けてくれぇ」
と、手をついてあやまりました。
桃太郎とイヌとサルとキジは、鬼から取り上げた宝物をくるまにつんで、元気よく家に帰りました。
おじいさんとおばあさんは、桃太郎の無事な姿を見て大喜びです。
そして三人は、宝物のおかげでしあわせにくらしましたとさ。
ASSISTANT: """
token_ids = tokenizer.encode(prompt, return_tensors="pt")
output_ids = model.generate(
input_ids=token_ids.to(model.device),
max_new_tokens=1000,
do_sample=True,
temperature=0.8,
streamer=streamer,
)
なお、桃太郎の文章は以下より流用。
桃太郎 <福娘童話集 お話しきかせてね きょうの日本昔話>
上のPrompt文を見ていただくと分かるかと思いますが、この桃太郎を「5行で」要約してくれと書きました。
が、この「5行」は無視された回答が返ってきてます。
まあ、それを前提に、どんな回答が返ってきたのか?
最初の1行目です。
昔々、ammad_ghiyaという老夫婦が住んでいました。
うーん、出だしからなかなかファンキーな名の老夫婦が登場です。続けます。
老夫婦は山へ芝刈りに行く為、近所のおばあさんが川へ洗濯に行きました。
おばあさんは川で洗濯していると、大きな桃が流れてきました。
おばあさんはその桃を拾い、家に持ち帰りました。
おばあさん、夫婦じゃなかったんだ・・・なわけありません。ちょっとここ、混乱してますね。
老夫婦は男の子を桃太郎と名付けました。
おじいさんは男の子のためにきび団子を作り、桃太郎を鬼退治に向かわせました。
道中、犬、猿、キジに出会い、きび団子をあげると共に手伝い、鬼ヶ島へ到着しました。
鬼達は宝物を並べ、酒盛りの真っ最中です。
桃を拾うところまでは妙に文字数を使ったわりに、桃太郎の生育、および仲間の勧誘部分はかなり端折りました。
イヌが鬼のお尻にかみつき、サルは鬼の背中を引っ掻き、キジは鬼の目をつつきました。
そして桃太郎も刀を振り回し、鬼を退治しました。
鬼の親分も降参し、桃太郎と3匹は宝物を持ち帰りました。
戦いの部分は、まあまあな描写かと。
老夫婦は宝物のおかげで幸福に暮らしましたとさ。
そしてエンド。
全体を通してみると、「おじいさんとおばあさん」が「老夫婦」と変換されてます。また、セリフ部分はごっそり削られてます。
このため、セリフの多いきびだんご受け渡しシーンが一番端折られているようです。
要約の精度としてみると、やや課題が多そうな感触です。
もっとも、これがビジネス文章だとどうなるんでしょうかね?
と思ったので、ちょっとそれっぽい文章を要約させてみました。
使った文章は国会議事録で、第210回 衆議院予算委員会(昨年の11月29日)、
第210回国会 衆議院 予算委員会 第8号 令和4年11月29日 | テキスト表示 | 国会会議録検索システム
の中の、岸田首相、松野国務大臣と國場委員、吉田委員の発言を抜き出し、Promptに入れました。
また、max_new_tokensを1000から10000まで増やしておきました。
(Calm2-7bは最大32000トークンとのことなので)
なお、インプットした文章が長すぎるためか、メモリーは64GB近くまで使いつつ、書き出しまでの時間はめちゃくちゃかかりました。20~30分くらいかな?途中、待ちきれなくて買い物に行っちゃったもので。帰ってくるころにはちょうど、書き出し始めておりました。
で、その結果ですが、なにぶん政治的な文書なので、誤解を招かぬよう世の中に広まらないために画像としてだけ表示いたします。
全文は読んでませんが、確かに要約にあるような会話がなされていました。国防中心な話が続いてます。
感触としては、ちょっと要約され切っていない感じですかね。その気になればもっと縮められそうです。
とはいえ、ちょっと前のオープンソースAIでは考えられないほどいろいろとできるようになってきました。普通の人がChatGPTで出力させているレベルのものなら、十分返せるレベルのAIが目の前のコンピューター上で動く時代なのだと実感します。
この調子で、オンプレ生成AIの発達がさらに進んで欲しいところ。ちょうどStable Diffusionのように。
あとは、ファインチューニングですよねぇ。こいつが今のところ、一番ハードルが高いかと。
ところで、これを書きながら、もう一つ別の言語モデルを発見。
Google Colab で Youri-7B を試す|npaka
Llama2をベースとした、Rinnaが開発した言語モデル「Youri-7B」です。10月31日に公開されたもののようです。
が、Llamaって確か、商用利用不可じゃなかったっけ・・・と思いきや、このLlama2はなんと商用利用可のモデルとのこと。
それをベースにしたYouri-7BももちろんOKです。
ちょっとややこしいんですが、完全に商用利用可というわけではなく、7億以上のアカウントとのアクセスがあるサービスで展開する場合は別のライセンスが適用されるとのこと。ですが、7億って企業でもなかなかありえないほどの規模のユーザーです。事実上、商用利用可というところなようです。
こちらもまた、試してみようかと思ってます。
« けっこう賢い日本語特化な生成AI「Cyberagent Calm2-7B-Chat」とシビアな会話してみた | トップページ | Calm2-7B-ChatのGPTQ版をうちの低メモリーGPU環境で動かしてみた »
「数値解析系」カテゴリの記事
- Tanuki-8Bの4ビット量子化ggufモデルでRAGをやってみました(2024.09.14)
- 純日本産なローカルLLM「Tanuki-8B」を試してみた(2024.09.02)
- 東京のセールスフォースに行ってきました(2024.07.24)
- ローカルLLM「Llama-3-ELYZA-JP-8B」にいろいろ聞いてみた(2024.07.01)
- ElyzaのLlama3ベースの言語モデル「Llama-3-ELYZA-JP-8B」のRAGが予想以上に賢かった件(2024.06.27)
« けっこう賢い日本語特化な生成AI「Cyberagent Calm2-7B-Chat」とシビアな会話してみた | トップページ | Calm2-7B-ChatのGPTQ版をうちの低メモリーGPU環境で動かしてみた »
コメント