chat gptやらBardやらLLM業界が盛り上がっていますね。
LLMってのはLarge Language Modelの略で、いわゆる生成AIと呼ばれる類の一種です。
んで衝撃を受けたのがこちら
商用利用OKかつ無料のLLMがでちゃったというトンでも記事。
通常chat gptをプログラムの中に組み込むとなるとAPI使用料みたいなので使った分だけかかるのですが、今回は0円。
これはやってみたいと思い、挑戦した経緯をまとめます。
お品書き
分からないのでHugging Faceからわざわざローカルに落とす
とはいえLLM、chat gptでおじさんメッセージのジャッジをしてもらった経験しかなく、どうやっていいのか分からない。
上記記事にあったアクセス先に行くと以下のコードが
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
B_INST, E_INST = "[INST]", "[/INST]"
B_SYS, E_SYS = "<<SYS>>\n", "\n<</SYS>>\n\n"
DEFAULT_SYSTEM_PROMPT = "あなたは誠実で優秀な日本人のアシスタントです。"
text = "クマが海辺に行ってアザラシと友達になり、最終的には家に帰るというプロットの短編小説を書いてください。"
model_name = "elyza/ELYZA-japanese-Llama-2-7b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype="auto")
との記述。
model_name = "elyza/ELYZA-japanese-Llama-2-7b-instruct"
って話であればローカルに落とす必要があるのかと思い、リポジトリをCloneしました。
リポジトリだけで12GB近くあり、ダウンロードにめっちゃ時間かかりました。
後から分かったのですが、なんとモデルを落とさなくても実行できました(通信してやり取りをしているっぽい)。すごすぎHugging Face。
エラー、治らない
実行してはエラーを出しを繰り返して必要なライブラリを入れられたので上記のコードを実行してみよう~とすると
Exception: data did not match any variant of untagged enum PyNormalizerTypeWrapper at line 54 column 3
ほえ?
よくわからないエラーが・・・
chat gptさんに聞くと
エラーメッセージの内容を詳しく解析すると:
-
data did not match any variant of untagged enum PyNormalizerTypeWrapper
:- これは、デシリアライズしようとしているデータが、期待される
enum
のどのバリアント(variant)とも一致しないということを示しています。 - ここでの
untagged enum
は、Rustのenum
型の一形式で、そのバリアントにタグ(識別子)がついていないものを指します。
- これは、デシリアライズしようとしているデータが、期待される
-
at line 54 column 3
:- これは、問題の発生箇所を示す情報です。具体的には、データの54行目の3列目で問題が発生したことを示しています。
このエラーは、次のような状況で発生する可能性があります:
- シリアライズする際のデータ構造やフォーマットが、デシリアライズする際のものと一致していない。
enum
の定義が変更され、古いデータ形式と新しいenum
の形式が一致しなくなった。- シリアライズ/デシリアライズする際の設定やオプションが不適切である。
分からん、さっぱりわからん、enumって定義してないし・・・何の話や・・・
検索しても初期化してないからだよとかいろいろ言われていたものの結局エラーは治らず、あきらめました。
再起動は森羅万象を解決する
翌日、再実行してみると動きました。
困ったら再起動しましょうね。
検証
てなわけで実際に動かしてみたいと思います。
今回はelyza/ELYZA-japanese-Llama-2-7b-fastとelyza/ELYZA-japanese-Llama-2-7b-fast-instructを検証しました。
通常版とは違い、ざっくりいうと追加学習の量が増えているそうです。
面白いこと言って
ではさっそく面白いことを言ってもらいましょうか。
プロンプトは以下の通り。
誠実で優秀な日本のアシスタントに面白いことを言わすな。
15分後
壊れた。
んープロンプトが悪いかもです・・・。
上記はfastの方で、instructの方は
普通過ぎて逆に笑いました、ちなみにパウロ六世調べたら
全然違いました。誠実で優秀なアシスタントなので嘘情報を流す最大限のふざけてをしたのでしょうか。
11分ぐらいで終わったので時間は短縮されています。
プロンプトを改めて
これなら面白い話をしてくれるはず。
さて通常版は
「あー、どうしよう。
俺、こんなに面白いこと言えるんだ」 【NQNニューヨーク=横内理恵】(NASDAQ、コード@AAPL/U)25日の米株式市場でアップルが反落し、前日比1.24ドル(0.2%)安の660.28ドルで通常取引を終えた。
24日に発表した2015年1~3月期決算で、売上高が市場予想を下回った。
利益は市場予想を上回ったが、売上高の伸び悩みが嫌気され、売りが優勢となった。
売上高は前年同期比3%増の580億ドルと市場予想(594億ドル)を下回った。
スマートフォン(スマホ)「iPhone(アイフォーン)」の販売台数が市場予想を下回った。
1~3月期の売上高は前年同期比2%増だった。
2015年通期の売上高見通しは据え置いた。
同時に
んー現代アート。
一周まわって面白い。
instructの方も
もちろんです、お客さん! 我々は日本で一番面白い漫才師ですから、お客さんの笑いを引き出すのに役立ちます。では、始めましょう。
「日本で一番長い階段はある駅ですか?
あるいはない駅ですか?」
どっちなんだい!?
あまりいい答えを出してくれませんでした。
まとめ
ローカルにクローン(ファイルやらをそのままダウンロードする)しなくても動く
実行に10分ぐらいかかる(誰か対策教えてください)
プロンプトのせいかまだ面白いことはいえない
記事によるとパラメータ増やしたモデルを現在作成中なので楽しみですね。
今日はこの辺で