
Mac用のローカルLLMアプリ Tsugumi を制作中!
偽Geminiを作ろうとした

数ヶ月前、私は偽Geminiを作ろうとした。
Geminiを使っていてブチギレたからだ。
名前も値段も変わらないのに、挙動だけが時々ガラッと変わる。
検索してと指示しているのに、私に検索機能はありませんと断られる。昨日までは検索してくれたのに!
気に入らなくても前には戻せない。
だったらクラウドに頼らず自前で全部持つしかない。
(本物の)Geminiにプログラミングを丸投げして作り始めた。
ウェブアプリとして作り、本物を横に並べてUIを微調整してる途中で面倒になって投げた。ついでにGeminiの課金も最低限に落とした。
そして、それを今Macのネイティブアプリとして作り直している。
偽Geminiを放り投げた理由
面倒になったからと書いたが、それだけじゃない。Geminiがアホすぎる動かなくなったからだ。
見た目の丸パクリから入ったので、中身は18GBのMacで動く小さいAIモデルを適当に入れていた。
適当に質問して答えさせている分にはちゃんと動く。速くはないが、Geminiらしく回答する指示も付けたので、それらしく喋る。
そこに、欲しかった検索機能をつけて、検索結果を1回読み込ませた。
それだけで止まってしまった。
調べたら、AIが一度に読める量(コンテキスト長)が4096しかなかった。
ウェブページ1枚で数千文字に達するのだから、当然入りきらない。
モデル自身の知識だけでGeminiらしく喋らせている限り、4096に届くことはない。
毎秒10トークン生成するモデルで4096を埋めるには、数分間ブラウザを見て待ち続けることになる。そんな使い方は誰もしない。
遅かったから、狭いことに気づかなかった。
外から知識を入れようとして、初めて問題が出てきた。
道具を持たせるということ
いまのAIモデルは、もう自分の学習データにある知識だけで答えてはいない。私たちが調べ物をするように、検索して、文書を読んで、最新の情報や専門用語をその場で手に入れてくる。
クラウドのモデルが賢く見えるのは、道具を持っていることも大きい。
ローカルAIは、その道具を持たされないまま比べられていた。
そして「使えない」と結論されていた。私もそう思って投げ出していた。
道具を持たせたくても、持つための場所(コンテキスト長)がない。
18GBのMacだとやっぱり足りない
コンテキスト長が足りないなら、増やせばいい。設定を変えるだけだ。
問題は、コンテキスト長がメモリを食うことだ。
しかもモデル本体とは別に、会話が長くなるほど増えていく。
モデルを積むだけでいっぱいのMacに、その置き場所はない。4096が限界だったのだ。
それに、コンテキストを広げたところで、中身は18GBに収まる小さいモデルのままだ。
検索結果を読ませても、要点を取り違える。道具のチョイスもいまいちだ。
道具を持たせるなら、持たせるだけの判断力が要る。
日本語が得意で、道具を持たせられる大きさとなると、Gemma 4 26B になる。 ollama pull gemma4:26b というコマンドで使えるが、サイズ19GB。
18GBのMacには載らない。16GBはいうまでもない。
ハイスペックなMacに買い替えて、メモリを増やせば解決する。36GB M3Proなら30万〜で中古が買える。
実は足りた
GoogleのGemma 4 26Bの配布ページを見たら、普通のモデルの他に、QATモデルというものが置いてあった。
最初から4bitにサイズを小さくすることを前提に学習されたモデルだ。
普通のモデルを後から4bitに縮めると、賢さが少し落ちる。QATは縮めた状態で訓練してあるので、そこがほとんど落ちない。
ただ、賢さの差は全部試して比べた限り、誤差の範囲だった。
効いてくるのはサイズのほうだ。
縮め方が学習時点で決まっているので、あとから計算し直せる部分が、正確に特定できる。
なんと一部データを捨てても、出てくる答えは変わらない。普通のモデルはこういうことはできない。
結果、19GBが13.3GBまでダイエットできた。
もはや16GBのMacにすら理屈上は載ってしまう。
そしてOllamaはこれを使ってくれない。普通のモデルだけだ。
Googleが都合よくGemma4-26b QATモデルを公開していて、手元でダイエットにも成功したというのに、汎用的なアプリでは動かすことができない状況にある。
Tsugumiを作っている

16GBのMacで動かすための、Macのネイティブアプリを作っている。名前はTsugumi(つぐみ)。
Googleが配ったものを全部活かすための、Gemma専用のアプリだ。
Gemma 4 26B QATの配布ページには、QATモデル本体の他に、画像読み込み部分と、生成を高速化する部品も最初から入っている。
汎用のアプリはそもそも普通のモデルしか読み込めない。
どのモデルでも動くように作ってあるから、特定のモデルにしか付いてこないものは全部落ちる。
Tsugumiは1つのモデル専用アプリなので、全部使える。
画像
スクリーンショットを貼って質問できる。

速度
次の単語を先読みして生成を高速化できる。これを使うと生成が倍くらい速くなり、40トークン毎秒以上出ることも。
コンテキスト長
既定で32768。4096の8倍で、検索結果を何度貼っても溢れない。
設定を変えれば256Kまで伸ばせる。
道具
長いコンテキストを活かし、検索する道具を組み込んである。
他のアプリと同居できる設計

13.3GBを16GBのMacに載せようとすると、普通は他のアプリを全部閉じないとメモリが足りなくなる。
AI用にほとんどのメモリを確保しなくてはいけないからだ。
Tsugumiはモデルをメモリに抱え込まず必要な部分だけSSDから読み込む。
必要なぶんだけ借りて、他のアプリが要求したら返す。
必ず確保するのは1.3GBで、残りはOSが管理する側に置いてある。
だから、ブラウザ、メール、など色々なアプリを開いたままローカルAIが使える。
メモリが混んでいれば多少遅くなるが、止まらない。落ちない。
フリーズもしない。
空いている機械では速く、混んでいる機械では遅くなる。
それでもどちらでも同じ動作・同じ答えが出る。
いま作っているもの
偽Geminiで詰まった検索機能は、もうできている。
ついでにローカルAIを突き詰めて、Wikipedia日本語版を丸ごとダウンロードして、完全オフラインで引けるモードも作った。
ネットを切っても百科事典で回答してくれる。

ここまで来たのは、単に技術的な興味からだけじゃない。
夕食のレシピ、最新ニュース、キャンプ飯、くだらないジョーク。この手の質問を、私はClaude Codeと共通枠のClaudeに投げるしかなかった。
プログラミングのために契約している枠を、レシピで削っていた。これまで使えていたGeminiはカス化して検索すら断られ、使い物にならない。
いまはTsugumiに聞いている。
全部手元にあるから、欲しい挙動を作ってやれば勝手に変わることはない。

まだのこと
動作確認は18GBのM3 Pro MacBook Proだけ。この記事の主題である16GBでは、まだ動かしていない。
M3のMacBook Airを借りて確認する予定で、9月22日にM6の16GB Mac miniが届くので、そちらで確認してからリリース予定。
サポートはしない。Claudeに聞いてみて。
元ネタはこれ。TurboFieldFareのフォークとして作っている。