メインコンテンツへスキップ
見出し画像

Mac用のローカルLLMアプリ Tsugumi を制作中!

    he-be

    偽Geminiを作ろうとした

    画像
    偽Gemini 3.6 Pro

    数ヶ月前、私は偽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を作っている

    画像
    iPhone18の発売日を聞いた(この時点では本当に未定)

    16GBのMacで動かすための、Macのネイティブアプリを作っている。名前はTsugumi(つぐみ)。
    Googleが配ったものを全部活かすための、Gemma専用のアプリだ。

    Gemma 4 26B QATの配布ページには、QATモデル本体の他に、画像読み込み部分と、生成を高速化する部品も最初から入っている。
    汎用のアプリはそもそも普通のモデルしか読み込めない。
    どのモデルでも動くように作ってあるから、特定のモデルにしか付いてこないものは全部落ちる。

    Tsugumiは1つのモデル専用アプリなので、全部使える。

    画像
    スクリーンショットを貼って質問できる。

    画像
    偽Geminiのスクリーンショットを読んでもらった

    速度
    次の単語を先読みして生成を高速化できる。これを使うと生成が倍くらい速くなり、40トークン毎秒以上出ることも。

    コンテキスト長
    既定で32768。4096の8倍で、検索結果を何度貼っても溢れない。
    設定を変えれば256Kまで伸ばせる。

    道具
    長いコンテキストを活かし、検索する道具を組み込んである。


    他のアプリと同居できる設計

    画像
    速度計が付いている

    13.3GBを16GBのMacに載せようとすると、普通は他のアプリを全部閉じないとメモリが足りなくなる。
    AI用にほとんどのメモリを確保しなくてはいけないからだ。

    Tsugumiはモデルをメモリに抱え込まず必要な部分だけSSDから読み込む。
    必要なぶんだけ借りて、他のアプリが要求したら返す。
    必ず確保するのは1.3GBで、残りはOSが管理する側に置いてある。

    だから、ブラウザ、メール、など色々なアプリを開いたままローカルAIが使える。
    メモリが混んでいれば多少遅くなるが、止まらない。落ちない。
    フリーズもしない。

    空いている機械では速く、混んでいる機械では遅くなる。
    それでもどちらでも同じ動作・同じ答えが出る。


    いま作っているもの

    偽Geminiで詰まった検索機能は、もうできている。

    ついでにローカルAIを突き詰めて、Wikipedia日本語版を丸ごとダウンロードして、完全オフラインで引けるモードも作った。
    ネットを切っても百科事典で回答してくれる。

    画像
    オフラインWikipediaに載っていれば最新情報も取ってくる

    ここまで来たのは、単に技術的な興味からだけじゃない。

    夕食のレシピ、最新ニュース、キャンプ飯、くだらないジョーク。この手の質問を、私はClaude Codeと共通枠のClaudeに投げるしかなかった。
    プログラミングのために契約している枠を、レシピで削っていた。これまで使えていたGeminiはカス化して検索すら断られ、使い物にならない。

    いまはTsugumiに聞いている。
    全部手元にあるから、欲しい挙動を作ってやれば勝手に変わることはない。

    画像
    寿司俳句テスト

    まだのこと

    動作確認は18GBのM3 Pro MacBook Proだけ。この記事の主題である16GBでは、まだ動かしていない。

    M3のMacBook Airを借りて確認する予定で、9月22日にM6の16GB Mac miniが届くので、そちらで確認してからリリース予定。

    サポートはしない。Claudeに聞いてみて。


    元ネタはこれ。TurboFieldFareのフォークとして作っている。

     
     
     

    he-be

     
     
    LLMマニア

    あなたへのおすすめ