« StableLMの日本語版(α版)がテスト公開中 | トップページ | こっちの方が本命か!?日本語専用生成AI「rinna japanese-gpt-neox-3.6b」 »

2023年5月18日 (木)

日本語対応のオンプレ生成AIとしては現時点で最強!?な感じの「OpenCalm 7B」

生成AIというやつはどいつもこいつも英語対応ばかりで、なかなか日本語を顧みてくれません。
が、ようやく日本語対応を謳う生成AIモデルが登場しました。

cyberagent (CyberAgent)

サイバーエージェント社が、つい一昨日に公開されたばかりの生成AIモデルで、日本語版Wikipediaなどをベースに作ったもののようです。
モデルサイズですが、160M~7B(1.6億~68億)パラメータまであるようです。

ということで、まずは最小モデルの「small」(160M)から試してみます。


import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("cyberagent/open-calm-small", device_map="auto", torch_dtype=torch.float16)
tokenizer = AutoTokenizer.from_pretrained("cyberagent/open-calm-small")

inputs = tokenizer("AIによって私達の暮らしは、", return_tensors="pt").to(model.device)
with torch.no_grad():
    tokens = model.generate(
        **inputs,
        max_new_tokens=256,
        do_sample=True,
        temperature=0.7,
        top_p=0.9,
        repetition_penalty=1.05,
        pad_token_id=tokenizer.pad_token_id,
    )

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

コードはこんな感じ。元々のサンプルコードに対し、「max_new_tokens=」のところを、64から256に変えてあります。
なお、「inputs = tokenizer("」の後ろに、文章の書き出しを書きます。

これ、先日紹介した「StableLMの日本語版(α版)がテスト公開中: EeePCの軌跡」と同様、質問文ではなく、生成したい文章の書き出しをインプットしてやるという方式のようです。質問をしても、その続きを書かれてしまうので注意。

ただ、StableLMの日本語版がサイト上でしか動かせないのに対し、こちらはオンプレミス環境、つまり自分のPCで動かせます。そこは強みですねぇ。

さて、上のコードを実行すると、こんな感じの文章が返ってきました。

AIによって私達の暮らしは、どんな変化を遂げようとしています。
そんな私たちの生活を支える、私たちの大事な「資源」と「エネルギー」。
「資源」を資源として、わたしたちが大切にしたい「エネルギー」。
私たちは「エネルギー」を、社会から生み出していきたいと考えています。
そのために私たちは、様々な分野の技術や、それらを組み合わせて、様々な

うん、なんだか尻切れしてますが、なんとなくいい感じの文章・・・なのかなぁ。エネルギーの話にすり替えられてます。

他の文章も作らせてみました。

例えば、出だしを「これからの日本の新しい経営の在り方は、」としてみると、

これからの日本の新しい経営の在り方は、どんなものなのか?
これからの時代を生き抜くためには、会社に対する思いや姿勢は問われなければならない。
会社という組織における経営とは、「人」と「物」である。
経営という仕事は、人が人として、あるいは人が組織人として行うものであり、企業経営とは、その企業で働く者が、会社を経営する立場として、あるいは企業で働く者が、組織経営者として、仕事を行う者のことを指す。
そして、その業務に従事する者は、会社の経営を、経営という仕事を通して、自分の考えや判断で成し遂げることが必要である。
社員の皆さんは、会社という組織において、会社という存在意義をどのように認識しているだろうか?

あれ、至極まっとうな感じの答えが返ってきました。
よーく読めば、わりとフワッとした文章なんですけど、それでも体裁は整ってます。悪くないですね。

もう少し、マニアな書き出しで攻めてみます。

「日本のアニメ文化の今後は、」

に対しては、

日本のアニメ文化の今後は、海外展開も視野に入れるべきだ」
「アニメ評論家」がアニメ評論家から干された理由。
「アイドルマスター」はアニメ業界にとって“死語”になる...脚本家・松原智恵子氏の決断の重要性
「ガンダム」で「ガンダム」を語れる人は少ない。
【大投票】アニメ評論家ランキング! 圧倒的支持率のトップ10は?
「ガンダム」で「ガンダム」を語る上で外せないのは、「ガンダム」シリーズの歴史だ。
アニメ評論家ランキング(20)は「ガンダム」に票を投じた人たち。
「ガンダム」は『機動戦士ガンダム』などアニメ史上最も売れた作品となった。その第1作目は、2001年に『機動戦士ガンダム』が放 送され、その人気に陰りが見え始めたころだった。
しかし、第2作目でさらに人気が高まって、第4作目『機動戦士ガンダム00』まで放送された。第5作目『機動戦士ガンダム0080 ポケットの中の戦争』では、第1作目のガンダムから続くアニメ史の幕開けともいえる作品である。
そして、第6作目『機動戦士Zガンダム』では、新三部作の完結編として、新たな物語とモビルスーツの開発が始まろうとしている。
しかし、第7作目『機動戦士ガンダム0083 ジオンの残光』は、テレビアニメ史に残る名作として、その後に続く

後半、めちゃくちゃ「ガンダム」してます。最初の一行目はそれらしいんですけどね。

なんとなく思ったんですが、これ、Wikipediaを教師データにしているらしいので、その中の文章で逸れっぽい部分を抜き出して組み合わせているだけじゃないですかね?

実際にはアレンジしているんでしょうけど、なんとなくそんな感じの文章です。

ということで、やはり最小モデルではちょっと物足りない。

てことで、最大モデルである7Bを試してみます。


import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
import os

os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "garbage_collection_threshold:0.6, max_split_size_mb:128"

model = AutoModelForCausalLM.from_pretrained("cyberagent/open-calm-7b", device_map="auto", torch_dtype=torch.float16)
tokenizer = AutoTokenizer.from_pretrained("cyberagent/open-calm-7b")

inputs = tokenizer("AIによって私達の暮らしは、", return_tensors="pt").to(model.device)
with torch.no_grad():
    tokens = model.generate(
        **inputs,
        max_new_tokens=128,
        do_sample=True,
        temperature=0.7,
        top_p=0.9,
        repetition_penalty=1.05,
        pad_token_id=tokenizer.pad_token_id,
    )

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

ほぼさっきのsmallのコードで、「cyberagent/open-calm-small」が「cyberagent/open-calm-7b」に変わっているだけのようですが、

(1) 「os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "garbage_collection_threshold:0.6, max_split_size_mb:128」"を付け加えている
(2) 「max_new_tokens=」の値を256ではなく、128にしてある

という2か所も変わってます。いずれも、4GBのGPUメモリーしか搭載してないうちの環境に合わせてます。

で、実行してみると、やはり7Bなので結構重いです。数分はかかる感じ。それでも、同じStableLM の7B(英語版)よりは早いですかね。
メモリーに関しては、メインメモリーは23GB程度ですが、GPUメモリー4GBを目いっぱい使ってくれちゃってます。

20230518-200357
トークン数を上げてると、この微妙なところでさまよっているメモリー使用量が振り切っちゃうみたいで、強制終了してしまいます。もうちょっとそれなりのGPUが欲しいところですね。

さて、smallと同じ書き出し文3つの結果を、以下に並べてみます。

「AIによって私達の暮らしは、」

AIによって私達の暮らしは、大きく変化しています。
そして今こそ人工知能研究の最前線に立ち向かう研究者達の物語とその先に見える未来をご紹介します。

「これからの日本の新しい経営の在り方は、」

これからの日本の新しい経営の在り方は、今のままではいけないと思っています。私は今までいろいろな仕事を経験してきましたが、仕事を通じて多くの人と知り合うことができました。その人たちから多くの知恵や気づきをもらいました。そして、人の力の素晴らしさを実感しています。これからは、これまで以上に様々な立場の人たちとの出会いを大切にし、互いに協力しあいながら未来を築いていきたいと考えています。そのために、常に世の中の変化に目を向け、変化に対応できる企業でありたいと思っています。そして、お客様や社会の期待に応えるために努力し続けることをお約束いたします。

「日本のアニメ文化の今後は、」

日本のアニメ文化の今後は、海外配信で稼ぐしかない。
『NARUTO』10月5日より新章突入!ついにカカシとサクラの因縁決着か!?うわあああああああ!!
「仮面ライダー電王」はイマジンと契約した時点で勝ち確定だったろ?それって誰得だよ・・・
ガンダムベース限定「νガンダムvsサザビー(宿命の対決セット)」発売開始!涙のラストバトルが再現されるぞ!!!
コピックのマーカーでよく飛びそうとか言われてた奴って何なの...? ←一応コレもアルコール由来ですwwwww

最後のはやっぱり、ガンダムですねぇ。草生えてますし。
トークン数を絞ってるのも悪いのかもしれませんが、短い文章が多いですね。それよりも、最初の2つはまるでコンサルティング会社の売り文句のようになっております。もしかして、拡販用、営業用の文章作成を狙って作られたAIなのかも?

とはいえ、StableLMの日本語版よりは自然な文章が返ってくる感じ。日本の経営云々の話をさせるなら、意外とsmallでも悪くありませんね。AIやアニメと言ったややニッチなは無しよりは、経営という比較的メジャーなキーワードに対して強そうな気がします。

ところでこのOpenCalmですが、ライセンスは「CC-BY-SA 4.0」というやつでした。
こちらのサイトによれば、

【保存版】意外と覚えづらいCCライセンスを一言で簡潔に説明しよう! | degitekunote2

ざっくり言うと「著作者の情報を表示しつつ、元のCCライセンスの継承だけは守ってね。商用利用と改変と再配布はOKだよ。」ということのようでした。著作者の情報表示が必要ですが、商用利用は可能なようです。

これをベースにした転移学習モデルを作れば、そこそこのものができるかもしれません。


Excel×ChatGPTでビジネスが加速する!AI仕事術: 「○○を教えて」だけじゃない!仕事に役立つ50の活用事例 (エクセル兄さん出版)

« StableLMの日本語版(α版)がテスト公開中 | トップページ | こっちの方が本命か!?日本語専用生成AI「rinna japanese-gpt-neox-3.6b」 »

数値解析系」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« StableLMの日本語版(α版)がテスト公開中 | トップページ | こっちの方が本命か!?日本語専用生成AI「rinna japanese-gpt-neox-3.6b」 »

無料ブログはココログ

スポンサード リンク

ブログ村