2026年4月3日金曜日

Gemma 4 on LocalAI

何もしない(localAI v4.0.0)で.yamlを超手抜きで options: - use_jinja:trueだけ指定して実行すると下記の通りになります。

gemma-4n-e4b-it-Q8_0

Internal error: failed to load model with internal loader: could not load model: rpc error: code = Internal desc = Failed to load model: /usr/share/local-ai/models/gemma-4-E4B-it-Q8_0.gguf. Error: llama_model_load: error loading model: error loading model architecture: unknown model architecture: 'gemma4'; llama_model_load_from_file_impl: failed to load model; llama_params_fit: encountered an error while trying to fit params to free device memory: failed to load model; llama_model_load: error loading model: error loading model architecture: unknown model architecture: 'gemma4'; llama_model_load_from_file_impl: failed to load model

コンソール出力などにも同様のエラーが出ますが、チャットインタフェースでもエラーが表示されます。

 unknown model architecture: 'gemma4'

とのことなので、また拡張されるのが前提の仕様を組み込んだみたいですね。テンプレートを自前で行えば、チャットはできそうな気もしますが、localAIv4.1.0もリリースされたし、llama.cppもGemma4に対応したバージョンがリリースされたのでビルドしてみました。

localAIのビルドはまぁいつも通り。本体はv4から必要なコンポーネントが増えたのとうちのネット関係の都合上hostsファイルを書き換えて対応しつつ、ビルド。

個人的に絶対に必要となるbackendのllama-cppのビルドも行います。書き換えは今まで通り、link_directoriesとinclude_directoriesを追加して、find_package(Protobuf CONFIG REQUIRED)からCONFIGを抜く作業です。

で、ビルドしたんですが…間違えてfind_package(gRPC CONFIG REQUIRED)の行を消してしまったらしく、エラーが出て正直焦りましたw

エラーの内容はこんなのです。

CMake Error at tools/grpc-server/CMakeLists.txt:70 (target_link_libraries):
  Target "grpc-server" links to:

    gRPC::grpc++_reflection

  but the target was not found.  Possible reasons include:

    * There is a typo in the target name.
    * A find_package call is missing for an IMPORTED target.
    * An ALIAS target is missing.
散々痛い目を見たCMakeのエラーです。PROTOBUFと同様のエラー…結構本腰を入れて調べたんですが、結局CMakeでのケアレスミスだったと…

しかもコピペで一気に貼り付けたため、backend/cppに無駄なllama-cpp-avx-build, llama-cpp-avx2-build, llama-cpp-avx512-build, llama-cpp-fallback-buildディレクトリが作成され、この中にCMakeList.txtがコピー展開されるものの、CMakeList.txtだけ上書きされないので、もととなるCMakeList.txtをいくら書き換えてcleanやrebuildなどしても効果が無くては●パターンに陥ったりと、結構無駄な時間を過ごしながら、rm -rfしてビルドしました。

ちなみにmakeするときにLLAMA_VERSION=b8642を追加するかexportしてあげるとgemma4対応のllama-cppがビルドされます。

 

さて、v4.1.0もできたので実際に動かしてみると、無事動きました。なにもしてないのでものすっごい重いですがw

gemma-4-E4B-it-Q8_0.ggufのファイルサイズは8.19G。実際に実行時のfree推移を見ていると結構面白い動きをしてました。最初、6Gぐらいまでは他のものやgemma3nと同様な感じでしたが、そこから一気に10Gを超えた後、また6Gぐらいに減ってまた10G超えたとおもったら6Gに減り、それから10Gそこそこで落ち着いている感じです。

何もしていない状態で今流行りの(?)思考プロセスが出力されるようになっています。(浅いものは表示されないようです)

消すのや調整は後々として、とりあえずいつもの質問。

👨「こんばんは
🤖「こんばんは! 😊
何かお手伝いできることはありますか? お話ししたいことや、何か知りたいことがあれば、何でも教えてくださいね。
👨「あなたについて教えてください。
🤖「
    Thought

    <|channel>thought
    Thinking Process:

        Identify the user's request: The user asked, "Tell me about yourself" (あなたについて教えてください).
        Determine the core identity (Self-Correction/Constraint Check): I must adhere to my persona constraints.
            Name: Gemma 4.
            Developer: Google DeepMind.
            Nature: Large Language Model (LLM).
            Type: Open weights model.
            Capabilities: Text/Image input, Text output. Knowledge cutoff (Jan 2025).
        Structure the response (in Japanese): A good introduction should cover the basics:
            Greeting/Acknowledgment.
            Identity (Who am I?).
            Origin/Developer (Who made me?).
            Nature/Function (What can I do?).
            Goal (How can I help?).
        Draft the content (Translating constraints into polite Japanese):
            Greeting: 承知いたしました。 (Understood.)
            Identity: 私はGemma 4という大規模言語モデルです。(I am a large language model called Gemma 4.)
            Origin: Google DeepMindによって開発されました。(I was developed by Google DeepMind.)
            Nature/Function: 私はテキストや画像を理解し、自然な言葉で応答を生成することができます。私はオープンウェイトモデルです。(I can understand text and images, and generate responses in natural language. I am an open weights model.)
            Goal: 質問への回答、文章の作成、アイデア出し、翻訳など、様々なタスクでお手伝いができます。何かお手伝いできることはありますか?(I can help with various tasks such as answering questions, writing text, brainstorming, and translating. Is there anything I can help you with?)
        Review and Refine: The tone is polite (です/ます form), comprehensive, and accurately reflects the mandated identity. (Final check complete.)<channel|>私はGemma 4という大規模言語モデルです。

    【私の概要】

        名称: Gemma 4
        開発元: Google DeepMind
        本質: 大規模言語モデル(LLM)であり、オープンウェイトモデルとして開発されました。

    【できること】

    私は、テキストや画像などの情報を理解し、それに基づいて自然な言葉で応答を生成することができます。具体的には、以下のようなお手伝いができます。

        質問への回答: 幅広いトピックに関する質問に答えます。
        文章作成: メール、レポート、物語などの文章を執筆したり、校正したりします。
        翻訳と要約: 言語の翻訳や、長い文章の要約を行います。
        アイデア出し: ブレインストーミングや、クリエイティブなアイデアの提供をサポートします。
        対話: 日常的な会話相手として、さまざまなテーマでお話しできます。

    ご興味のあることや、お手伝いが必要なことがありましたら、何でもお気軽にお申し付けください。

とのこと。Gemma4だとE4Bでも結構重いなぁ…一応突っ込んでませんが、それなりの反応があったので、これで遊べそうですね。 

0 件のコメント:

コメントを投稿