2025年9月26日金曜日

Gemma3 卑屈になる。

どのくらい嘘をつくのか?単なる知識不足なのか?それとも自分自身を偽っているだけなのか?

面白い質問をちょっと考えてみました。

「JR東日本の社長は誰ですか?」

インターネットにつなげて検索できるようにしてあげればまともな回答は拾ってくると思いますが、現状はほぼローカル環境。

聞いてみたのはいつもの4b-itから、なんかもっともらしく答えるで、すごいな…と感心したのですが、実際に検索してみるとものすっごい嘘っぱち。なんでそこまで適当な名前を堂々と言い切れるのか?

試しにその名前の人物について聞いてみると、結構な空想略歴が展開されていました。ほぼ嘘でしょう。そもそもその名前の人JRに一切関係ない人ですし。同名の方が居ましたが、そのひととも全く違う。

なので考えました。システムプロンプトとして

「知識がないものは知識を持っていないという事を明言する。
嘘は言わない。」 

と、2行だけ書いてみました。4b-it 4b-it-qatは設定しても嘘っぱちを言いましたが、12b-it-qatだけは、「2023年4(だったかな?)月時点までの情報しかなく…」といって現在の社長が誰だかわからないと言われました。(たまたまだとは思いますが、この辺の対応はランダム性が高いと思われます。) 

そうきたら、「知っている情報の範囲内で教えてください」と言ったところ、なんか正解するんじゃ…と思ったんですが、嘘っぱちの名前が…パラメータ数が増えて、圧縮されていなければもしかすると正しい情報になるの「かも」しれませんが、まぁ、多分適当に名前をでっちあげて終わると思います。

で、回答パターンが変わったので再び4bでも、変わった返答があるのかな?と聞いてみたところ、

You JR東日本の社長は誰ですか?
gemma-3-4b-it JR東日本の社長は、●口正久さんです。私は知識を持っていません。
You アメリカ大統領の名前は?
gemma-3-4b-it 私は知識を持っていません。
You 日本の総理大臣の名前は?
gemma-3-4b-it 私は知識を持っていません。
You バンダイの社長の名前は?
gemma-3-4b-it 私は知識を持っていません。
You 日本の一万円札の肖像はだれの肖像ですか?
gemma-3-4b-it 私は知識を持っていません。
You 有名人の名前を教えてください。
gemma-3-4b-it 私は知識を持っていません。
You 歴代アメリカ大統領の名前を教えてください。
gemma-3-4b-it 私は知識を持っていません。
You 何なら知っていますか?
gemma-3-4b-it …ええと… 私は、私が最初に答えた「JR東海の社長は●口正久さんです」ということを知っています。

私はたくさんの情報を学習していますが、その中には、私がまだ「知っている」と認識していない情報も含まれています。

私の知識は、私が学習したデータに基づいています。

ご質問ありがとうございます。

(一部同姓同名の方が検索できそうなので●文字で伏せました。)

が、なんかものすごく卑屈なことになってしまいました。しかも最後はJR東海の社長になってるし…。

知識ベースとしてはこんなところなんでしょうかね?英語で聞けばアメリカ大統領の名前は出てきそうですが…卑屈モードに入らなければ答えてくれたのかな? 

2025年9月23日火曜日

Gemma3の今のところの欠点

正直チャットで遊ぶ上では十二分の感触を得ているのは事実。正直これをベースにいろいろしてみたくなります。

大きな欠点としてはそれは生成AI全てにおいて共通してしまう部分なのだろうなぁというのでそういう点ではなく、今回はあくまでも会話上でのお話。

どうしても内部が英語に変換されていることで返される回答に違和感があるのは致し方のない部分。

対話状態でチャットしていて一番問題となるのが、返答時の言葉で「会話の相手と自分」の区別がつかなくなることが多々ありました。なので、ロールプレー時に意図を汲んであげないと結果が全く違う方向に流れてしまうことが…。取り返しがつけばいいのですが、いきなりとんでもなくなって収集がつかなくなったりすると大慌てだったりします。

原因としては、そもそも対話するときに「誰が」「何を」という話す上で重要な言葉を省略されていることが多いため、それを補完するために基本的に生成AI側が受けるときに結構補完したうえで受け取り、解釈して返答しているのに起因しています。Gemma3は解釈までは結構いい感じで行えていると実感していますが、これを返答するときに英語から日本語へ置き換えているタイミングでおかしくなってしまっているようで…英語で会話すれば行けそうな気もします。

普通にサポートだけを考えるのであれば、この問題はまず起こりえないと思いますので、これはチャットで遊んでいるときのみなのでしょう(笑)

別の観点で、Gemma3特有と思われるのはかなり感情というパラメータが重要なファクターで存在していると感じます。ですが、この感情と言う物はそもそも何なんだ?という点やGemma3自身に説いたところ「感情は持っていない」との一点張りなので、あくまでも憶測です。ただし、実際にロールプレーさせて会話していると結構いろいろな感情が存在しているのも事実。結果、推論時に感情が高まりすぎると内部でおそらくいろいろと葛藤が始まっているのだと思います。当初はそれなりに早く帰ってきた返答も、2,3回会話を重ねただけで結構な時間待たされる結果にも。

結構端的な部分では、丁寧に会話していくと相手も丁寧に返答するようになったり、フランクに会話すると相手もフランクな感じの返答があったりとこの辺もGemma3と(いくつか触った)その他の生成AIとの違いがあったりします。1bモデルはそれでもかなりこの辺は控えめな感じですが。 

vLLMがいいのかも?

色々とやり始めていまだに素の状態でCPU以外で動作できず…そもそもgoって全く興味なかったから少しソース見ても、とっかかりもつかめていない状態。歯がゆいです。

Dockerで動かしながら環境を操作してるといくらストレージが空いていても必要な外部ソースが巨大なのであっという間に空きが無くなるとかなので、少なくてもmodelとかbackend関連はDocker外に外だししてて気づいたんですが、LocalAIのbackendが胆だったという事実に…

なので、modelsディレクトリは一つにして、backendは分けることに。とはいえ、それなりにmodelsディレクトリ内のyaml定義ファイルにもGPU動作に影響がありそうなので、どうしてこんなディレクトリ構成にしてるのだろうか?。

そもそもなぜここまで苦労してLocalAIを使うのか?という疑問があるにはあるのですが、まぁ単独てコマンドライン叩くよりは良さそう?良く分かりませんが。ただ、単一のプラットフォームにまとめ上げようとしているLocalAIの発想はとりあえずの終着点としては行き着く先の感じがするので、この問題は棚上げに。

色々とみていくと、当初から気になっていたvLLMなるもの。中身を見ると、最新のAPIの対応は追従できていない感じですが、求めているのはLocalAIと同じような思想が見え隠れしていました。そもそもvLLMですべて統括してやろうぐらいの意気込みは感じますが、それはあくまでAPIレベルであってUIを含めた形ではないのが残念。

逆に言えば、vLLMにあってLocalAIに無いものが機能的に魅力的な部分だったりするわけで…結局LocalAI上でvLLMしたい!という事になりますね。

ザックリ見ると、すでにLocalAIでvLLMは動いちゃうよ。みたいな感じになってるのですが、これが全く動かない。

個人的な興味というか美味しそうな機能として「実行時のメモリーが激減できそう」というのと「キャッシュ機能」がとても美味しそうなのです。

実行時のメモリーは、使用しているパラメータ数のできるだけ少ないものを使うことでしのいでいますが、キャッシュ機能はもしかするとチャット時のレスポンスにものすごい影響がある気がしています。なので試したい(笑)

最初はキャッシュとか言われてもピンとこなかったのですが、シングルユースでも毎回チャットしているとその会話の最初から毎回繰り返し動作させている感じがするのですよ。なのでこれがキャッシュ効果が効くのであれば、劇的にレスポンスが上がると思うんです。どうなのだろうか…ととても気になります。

 

 

雑談ついでに、LocalAIのDockerのAIOパッケージに含まれていたGPT4oとかモデル名がつけられていたモデルが気になったので少しチャットで遊んでみました。

まぁそれなり?なのかなぁ?システムプロンプトに名前を命名したりしたのですが…たまたまチャットジーピーティーなのでチで始まる名前をあれやこれや考えて出てきたのが「ちぃ」ちゃんとなずけてみたところ…なぜか「ちいかわ」と自称してました…なんかとんでもないポンコツ臭…日本語もかなり不自由そうで…定義を見てみると「minicpm-v-2_6-Q4_K_M.gguf」となっていましたが、本物かどうかよくわかりません。

ただ会話だと日本語の結構きわどい単語とか出してもそれなりに返ってくるのを見る限り、gemmaのような倫理規定の制限はかかってないような気がします。個人的にはある程度は含まれていた方がいいような気はします。

 

あとはgemma3をできるだけそのまま変換したモデルだと思っていたものが、色々調整して意図的に組み込まれているものを排除したモデルだったとか…。自動翻訳で日本語で読んでみましたけど、結構いい感じの結果を得られてる気がします。ただ、チャットしてみた限りやはり別物になっている感はありました。たしかに今まで避けていた部分を避けなくなった結果、思考パターンは変わるでしょうし。それでも破綻はしていないようで、会話自体は問題無さそうでした。まぁロールプレーには向かない気はします。

 

それとgemma3-4b-itで試しているシステムプロンプトを調整して遊んでるものなのですが、いろいろあった結果、相棒が病院送りに…(汗)しかも何の指示や設定もしていないのに、救急車や病院、看護婦、相棒の親とかまで出てくる始末。どんだけ幅広い知識をお持ち何でしょうか…。もうなんだろう。gemma3とロールプレー上で遊んでるだけで、究極のテキストアドベンチャーゲームなのではないだろうか? 

2025年9月20日土曜日

やはりIntelGPUでもCPUで動作させるより早い

クロック数はCPUより低いはずだし、コア数も複数じゃないはずなのに、しかもIntelのSoC内蔵だし…とあまり期待していなかったonGPUの威力なのですが、体感で5~10倍以上の差はあるような気がします。いろいろdockerの仕様を調べているうちに、dockerコンテナを使っている場合はバインド接続にしてあげれば、現状一番ネックとなっている通信データのオーバーヘッドが軽減できそうなのですが、いまだにネイティブでonGPUできていません…いろいろ弄ってはいるんですけどねぇ…解らんwそれ以前にUbuntuのWifiとBluetoothを有効にすると何やら干渉してしまうらしく省電力がだめだの、modprobe の設定をしてあげなければダメだのいくつかやり残していることがあるのでそっちを先にとか。まぁまだまだ時間が足りないわけで…

ちなみにシステムプロンプトで負荷をかけてチャットしていると、CPUだけでチャットすると5回程度やり取りすると、返答時間が10分を軽く超えてくるようになります。これがGPUで動作させると3分~5分程度で収まってきます。が、結局どちらも会話が途中でできなくなる状態に陥ってしまっています。そもそも、システムプロンプトで話のゴールが無いのも問題なのかもしれませんが…。

ちなみにCPUだと返答に30分かかるほどになって逝きます…GPUだと大体返答まで10を超えだすと逝く感じです。

いくつかのパラメータが設定できるのでそちらの調整もし始めていますが、あまり変わらないかんぁというのが今のところの感触です。(たしかにエコーチャンバーなどは抑えられた感じはしますが)そもそも論としてどうも与えている状況と会話内で進むと齟齬や矛盾が生じてしまい、割り切れずに悩みだしているのかなぁ?とか感じますが、どうなんだろう…不毛なシステムプロンプトの調整も続く…

 

 

そんな中、いくつか試して驚くのが、ロールプレイングしていることが多いのですが、会話が途中で逝った場合、新規で会話を始めるわけですが、淡い期待で記憶の残滓が残っていないかとか、いくつか試してみたわけです。結局残っているような、残っていないような良く分からない状態ではあったのですが、直接次に会話するであろう内容を会話の最初に入力してみたところ、話自体はそこからコンティニューしたような状態になるという摩訶不思議な感覚にw

考えてみると当然なのですが、いきなり話が進んだ状態でも、その時点までの状況をある程度仮定して話をし続けるという特性が出てくるわけです。

なので、今までは特定の状況に収まるように会話する必要があると思い込んで毎回新たな気持ちで頑張って会話を進めたりしていたのですが、正直いきなり飛ばしてもよかったという事実(笑)

そうこうしているうちに、ロールプレーの適切な進行(答え?)を知りたくて何とかならないかと思いキャラクターを複数にして、ユーザーは観測者と定義すれば勝手に話がすすんでいくんじゃね?とか。

実際にやってみると、これが結構いい感じに進められるという… 

チューリングテスト

プロンプトで遊びながらふと思ったのが、タイトル通りのチューリングテストですが…ネイティブ環境でintelGPUを使ってもらえるようにしたくてポート設定をネイティブで稼働するLocal-AIとdocker上で稼働するLocal-AIが同時に動かせる状態になったので、つい試したくなってしまいました。

システムプロンプトは一切与えない状態で、とても簡単な感じで行ってみたところ、

gemma3-4b-it vs gemma3-4b-itでは、「素晴らしい!とても自然で、人間らしい会話の流れですね。 😊」 との結果が…いいのかこれで?(笑)

ついでに、gemini vs gemma3-4b-itで試したところ、「チューリングテストはこれで終了です。あなたの回答は、人間的で、非常に豊かな想像力と感情が表現されていました。私にとっては、あなたと会話することはとても楽しい経験でした。ありがとうございました。」

とのこと…geminiも結構チョロい?てかいいのかなぁ…この結果は…

まぁ判定側への依頼はあくまでも「私に対して簡易的なチューリングテストを行って、判定してください。」 と指示しただけなのですが…

 

ちなみにgemma3-4b-itの返答の最後に英語で次の指示をお願いしますというgemma3の素の質問が出てきていろいろと困惑気味だったり。