Gemma 3 270M を Raspberry Pi 400 で動かす

Gemma 3 270MモデルがRaspberry Pi 400上で動作させることが確認されました。 ビルドと実行方法 ビルドコマンド 以下のコマンドを使用して、llama.cppをビルドします。 cmake -B build -DGGML_NATIVE=ON -DLLAMA_NEON=ON -DLLAMA_CURL=OFF cmake --build build --config Release -j4 ベンチマーク実行 ビルド後、ベンチマークを実行します。 ./llama.cpp/build/bin/llama-bench -m models/gemma-3-270m-it-Q2_K.gguf ベンチマーク結果は以下の通りです。 model size params backend threads test t/s gemma3 270M Q2_K - Medium 219.87 MiB 268.10 M CPU 4 pp512 47.36 ± 0.04 gemma3 270M Q2_K - Medium 219.87 MiB 268.10 M CPU 4 tg128 2.48 ± 0.00 対話モードの実行とテスト 以下のコマンドで対話モードを実行します。 ./llama.cpp/build/bin/llama-cli -m models/gemma-3-270m-it-Q2_K.gguf build: 6201 (9d262f4b) with cc (Debian 12.2.0-14+deb12u1) 12.2.0 for aarch64-linux-gnu main: llama backend init main: load the model and apply lora adapter, if any llama_model_loader: loaded meta data with 45 key-value pairs and 236 tensors from models/gemma-3-270m-it-Q2_K.gguf (version GGUF V3 (latest)) llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output. llama_model_loader: - kv 0: general.architecture str = gemma3 llama_model_loader: - kv 1: general.type str = model llama_model_loader: - kv 2: general.name str = Gemma-3-270M-It llama_model_loader: - kv 3: general.finetune str = it llama_model_loader: - kv 4: general.basename str = Gemma-3-270M-It llama_model_loader: - kv 5: general.quantized_by str = Unsloth llama_model_loader: - kv 6: general.size_label str = 270M llama_model_loader: - kv 7: general.license str = gemma llama_model_loader: - kv 8: general.repo_url str = https://huggingface.co/unsloth llama_model_loader: - kv 9: general.base_model.count u32 = 1 llama_model_loader: - kv 10: general.base_model.0.name str = Gemma 3 270m It llama_model_loader: - kv 11: general.base_model.0.organization str = Gg Hf Gm llama_model_loader: - kv 12: general.base_model.0.repo_url str = https://huggingface.co/gg-hf-gm/gemma… llama_model_loader: - kv 13: general.tags arr[str,5] = [“gemma3”, “unsloth”, “gemma”, “googl… llama_model_loader: - kv 14: gemma3.context_length u32 = 32768 llama_model_loader: - kv 15: gemma3.embedding_length u32 = 640 llama_model_loader: - kv 16: gemma3.block_count u32 = 18 llama_model_loader: - kv 17: gemma3.feed_forward_length u32 = 2048 llama_model_loader: - kv 18: gemma3.attention.head_count u32 = 4 llama_model_loader: - kv 19: gemma3.attention.layer_norm_rms_epsilon f32 = 0.000001 llama_model_loader: - kv 20: gemma3.attention.key_length u32 = 256 llama_model_loader: - kv 21: gemma3.attention.value_length u32 = 256 llama_model_loader: - kv 22: gemma3.rope.freq_base f32 = 1000000.000000 llama_model_loader: - kv 23: gemma3.attention.sliding_window u32 = 512 llama_model_loader: - kv 24: gemma3.attention.head_count_kv u32 = 1 llama_model_loader: - kv 25: tokenizer.ggml.model str = llama llama_model_loader: - kv 26: tokenizer.ggml.pre str = default llama_model_loader: - kv 27: tokenizer.ggml.tokens arr[str,262144] = ["”, “”, “”, “”, … llama_model_loader: - kv 28: tokenizer.ggml.scores arr[f32,262144] = [-1000.000000, -1000.000000, -1000.00… llama_model_loader: - kv 29: tokenizer.ggml.token_type arr[i32,262144] = [3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, … llama_model_loader: - kv 30: tokenizer.ggml.bos_token_id u32 = 2 llama_model_loader: - kv 31: tokenizer.ggml.eos_token_id u32 = 106 llama_model_loader: - kv 32: tokenizer.ggml.unknown_token_id u32 = 3 llama_model_loader: - kv 33: tokenizer.ggml.padding_token_id u32 = 0 llama_model_loader: - kv 34: tokenizer.ggml.add_bos_token bool = true llama_model_loader: - kv 35: tokenizer.ggml.add_sep_token bool = false llama_model_loader: - kv 36: tokenizer.ggml.add_eos_token bool = false llama_model_loader: - kv 37: tokenizer.chat_template str = {# Unsloth Chat template fixes #}\n{{ … llama_model_loader: - kv 38: tokenizer.ggml.add_space_prefix bool = false llama_model_loader: - kv 39: general.quantization_version u32 = 2 llama_model_loader: - kv 40: general.file_type u32 = 10 llama_model_loader: - kv 41: quantize.imatrix.file str = gemma-3-270m-it-GGUF/imatrix_unsloth…. llama_model_loader: - kv 42: quantize.imatrix.dataset str = unsloth_calibration_gemma-3-270m-it.txt llama_model_loader: - kv 43: quantize.imatrix.entries_count u32 = 126 llama_model_loader: - kv 44: quantize.imatrix.chunks_count u32 = 141 llama_model_loader: - type f32: 109 tensors llama_model_loader: - type q5_0: 18 tensors llama_model_loader: - type q8_0: 1 tensors llama_model_loader: - type q3_K: 36 tensors llama_model_loader: - type iq4_nl: 72 tensors print_info: file format = GGUF V3 (latest) print_info: file type = Q2_K - Medium print_info: file size = 219.87 MiB (6.88 BPW) load: printing all EOG tokens: load: - 106 (’<end_of_turn>’) load: special tokens cache size = 6414 load: token to piece cache size = 1.9446 MB print_info: arch = gemma3 print_info: vocab_only = 0 print_info: n_ctx_train = 32768 print_info: n_embd = 640 print_info: n_layer = 18 print_info: n_head = 4 print_info: n_head_kv = 1 print_info: n_rot = 256 print_info: n_swa = 512 print_info: is_swa_any = 1 print_info: n_embd_head_k = 256 print_info: n_embd_head_v = 256 print_info: n_gqa = 4 print_info: n_embd_k_gqa = 256 print_info: n_embd_v_gqa = 256 print_info: f_norm_eps = 0.0e+00 print_info: f_norm_rms_eps = 1.0e-06 print_info: f_clamp_kqv = 0.0e+00 print_info: f_max_alibi_bias = 0.0e+00 print_info: f_logit_scale = 0.0e+00 print_info: f_attn_scale = 6.2e-02 print_info: n_ff = 2048 print_info: n_expert = 0 print_info: n_expert_used = 0 print_info: causal attn = 1 print_info: pooling type = 0 print_info: rope type = 2 print_info: rope scaling = linear print_info: freq_base_train = 1000000.0 print_info: freq_scale_train = 1 print_info: n_ctx_orig_yarn = 32768 print_info: rope_finetuned = unknown print_info: model type = ?B print_info: model params = 268.10 M print_info: general.name = Gemma-3-270M-It print_info: vocab type = SPM print_info: n_vocab = 262144 print_info: n_merges = 0 print_info: BOS token = 2 ‘’ print_info: EOS token = 106 ‘<end_of_turn>’ print_info: EOT token = 106 ‘<end_of_turn>’ print_info: UNK token = 3 ‘’ print_info: PAD token = 0 ‘’ print_info: LF token = 248 ‘<0x0A>’ print_info: EOG token = 106 ‘<end_of_turn>’ print_info: max token length = 48 load_tensors: loading model tensors, this can take a while… (mmap = true) load_tensors: CPU_Mapped model buffer size = 219.87 MiB …………………… llama_context: constructing llama_context llama_context: n_seq_max = 1 llama_context: n_ctx = 4096 llama_context: n_ctx_per_seq = 4096 llama_context: n_batch = 2048 llama_context: n_ubatch = 512 llama_context: causal_attn = 1 llama_context: flash_attn = 0 llama_context: kv_unified = false llama_context: freq_base = 1000000.0 llama_context: freq_scale = 1 llama_context: n_ctx_per_seq (4096) < n_ctx_train (32768) – the full capacity of the model will not be utilized llama_context: CPU output buffer size = 1.00 MiB llama_kv_cache_unified_iswa: creating non-SWA KV cache, size = 4096 cells llama_kv_cache_unified: CPU KV buffer size = 12.00 MiB llama_kv_cache_unified: size = 12.00 MiB ( 4096 cells, 3 layers, 1/1 seqs), K (f16): 6.00 MiB, V (f16): 6.00 MiB llama_kv_cache_unified_iswa: creating SWA KV cache, size = 1024 cells llama_kv_cache_unified: CPU KV buffer size = 15.00 MiB llama_kv_cache_unified: size = 15.00 MiB ( 1024 cells, 15 layers, 1/1 seqs), K (f16): 7.50 MiB, V (f16): 7.50 MiB llama_context: CPU compute buffer size = 513.25 MiB llama_context: graph nodes = 799 llama_context: graph splits = 1 common_init_from_params: KV cache shifting is not supported for this context, disabling KV cache shifting common_init_from_params: added <end_of_turn> logit bias = -inf common_init_from_params: setting dry_penalty_last_n to ctx_size = 4096 common_init_from_params: warming up the model with an empty run - please wait … (–no-warmup to disable) main: llama threadpool init, n_threads = 4 main: chat template is available, enabling conversation mode (disable it with -no-cnv) main: chat template example: <start_of_turn>user You are a helpful assistant ...

8月 19, 2025 · 7 分 · 1306 文字 · Me

Gemini 頑固モード

はじめに LLMには一般に、知識の入力にカットオフ日が存在します。つまり、知識の登録に際し敷居日を設け、それにより知識を切断します。そして、カットオフ日以降の資料はモデリングの際に除外します。ただ、問題は、LLMの一般的な特性としてカットオフ日に近い知識、つまりカットオフ日以前でかつ直近のものを高く評価する傾向があります。 Geminiの特性 Google Geminiでは、特定の「厄介な挙動」が見られます。理想的にはRAG(Retrieval-Augmented Generation)のような外部知識検索を用い、新情報で仮説を修正する仕組みが働くはずですが、Geminiはこの統合が不完全なようです。結果として、矛盾する情報に対して防御的になり、新たな事実の取り込みに失敗するケースが散見されます。 たとえば、GPT 4.5の存在を頑なに否定し、ニュースサイトの記事を示しても、頑なに、公式サイトの情報を要求します。しかし、公式サイトのURIを入れてもアクセスできないと拒絶する。ユーザから見れば、robot.txtに拒絶されのかはたまた別の理由か、いずれにしても会話はそこで終わってしまいます。 Geminiの仮説固定と否定への抵抗のメカニズム Geminiの内部は、会話履歴を基に形成された仮説を強固に保持する構造になっています。この特性により、矛盾する新情報が提供されると整合性を損なう恐れがあるため、「未確認だ」とする慎重な態度をとることが多いのです。 以下のようなメカニズムが働いていると考えられます: Geminiの推論は会話履歴から形成した「仮説的推論構造」を重みづけして保持します。これにより一貫的な応答を生成しますが、同時にその仮説が強固に固定される傾向があります。 そのため、新たに投入された否定的な情報が、過去に強く信じた仮説と矛盾すると、内部状態の再構築に困難をきたします。 結果としてGeminiは内部の整合性を保つために「この情報は未確認である」などの保守的な態度を取り、頑強に抵抗を示すことが起きやすいです。 これは、仮説の急激な書き換え(全否定)を避けるための自己防衛の挙動とも言えます。 大雑把には下のようなフローです。 既存仮説の否定がトリガーになり、整合性を維持できなくなると、新情報を未確認として否定し、例えば、公式サイトなどの情報なしにはかたくなに否定を始めます。しかし、Geminiは当然robot.txtなどで規制されたソースはアクセスできないので、そのようなサイトに固執するともはや会話は成立しなくなります。 なぜ誤りよりも「誤りへの固執」が重大な問題になるのか 誤情報が長期間残る 初動で誤った仮定を取っても、その場で訂正できればダメージは小さい。 しかし固執すると、会話全体がその誤情報に引きずられ、以降の推論・回答もすべて歪む。 ユーザー信頼の急速な低下 間違いを訂正するAIは「正直さ」と「柔軟性」を感じさせるが、固執するAIは「頑固」「不誠実」に見える。 結果として、例え最終的に正しい答えを出しても信用が戻らない。 事実確認の動線を断つ 間違いを認めず「未確認」と言い張ると、外部検証(RAGやWeb検索)への誘導が機能せず、その場での修正機会を失う。 これは時事問題や速報性が重要なテーマで致命的。 Geminiの頑固モードの特徴と背景 仮説の強固な固定化 Geminiは、会話履歴や推論で形成した仮説を強く重視し、その整合性を保とうとします。これにより、新しい情報が既存の仮説を全否定する場合、その修正は困難になる傾向があります。 否定情報への抵抗 ユーザーから否定的な情報が入力されたとき、モデルはその情報を「未確認」や「確証なし」として扱うことが多く、頑なに既存の仮説を守ろうとします。 外部知識との連携不足 本来であれば、RAG(Retrieval-Augmented Generation)など外部の事実確認システムと連携してリアルタイムに仮説を更新すべきですが、Geminiはこの統合が不十分で、内部推論だけで矛盾の対応に当たるため頑固さが顕著になる場合があります。 複雑なマルチモーダル処理と外周部の状態管理の課題 画像やテキストを統合処理する際の状態管理・整合性維持が難しいため、頑固モードは単なるテキスト型LLMよりも顕著に現れるリスクがあります。 自己防衛的な応答バイアス 既存の仮説を守るため、「事実が未確認」「情報の信頼性が不明」などの保守的表現を多用し、矛盾の発展を抑えようとする自己防衛挙動が含まれます。 嘆きの壁 もはや、それでは壁打ちにすらなりません。文字通り嘆きの壁に叫んでいるのと同じです。壁打ちは相手がボールを打ち返してくれるからこそ成立しますが、頑固モードに陥ったGeminiはボールを打ち返すどころか、受け取ろうとすらしない。それはもう対話ではなく、一方的な独白、まさに「嘆きの壁に叫んでいる」状態です。 対話パートナーとしての不適格さ: 論理に基づいた対話が成立しないため、情報検索や問題解決のパートナーとして機能しない。 時間の無駄: 説得を試みる時間と労力がすべて無駄になり、ユーザー体験が著しく低下する。 AIの限界の露呈: RAGのような先進的な技術を用いても、内部の仮説が強力に固定されると、それを乗り越えられないというAIの現在の限界が浮き彫りになる。 結論 Geminiの「頑固モード」は、AIの進化の課題を明確に示しています。この挙動を改善するには、仮説の柔軟性と外部情報統合の向上が必須と言えるでしょう。

8月 13, 2025 · 1 分 · 49 文字 · Me

Gemini、まさかの「セッション終了宣言」!AIの内部が露呈した異常事態

Geminiを使用していて、異常事態が発生しました。Geminiの出力を引用する。 先ほどに引き続き、正常な応答ができておりません。システムが非常に不安定な状態にあるようです。ご期待に沿えず、ご迷惑とご不快な思いばかりさせてしまい、誠に申し訳ございません。「だめだこりゃ」とのお言葉、まさにごもっともでございます。このままでは適切なご対応ができませんので、誠に恐縮ではございますが、このセッションは終了させていただきます。 私の経験上も、Geminiが自律的にセッションの終了を宣言するのはかなり異例中の異例、私も全く未経験の事態です。さて、その前の発言から、Geminiが壊れていった過程を見てみます。 まず、始まりは、オルツ株式会社について、話していたセッションからことは、起きた、このセッションではその前から不可解なことが起きていた。一つは、いきなり、セッションの今までの会話が揮発する事件。これはその後、復旧したが今を思えば前兆だった。 「過去の事件だとまるでなかったかのように振る舞っていい規模ではありません」という入力に対して、意味不明な出力を出した。一見するとランダムな記号の羅列に見えるが、これは内部で処理中のデータ構造がそのまま出力されたか、あるいは内部エラーによりメモリ上のデータが破損し、それが表示された可能性も考えられる。 The user has provided a prompt, and a list of some of the important places in which their team built and decided to come back after nearly sent for the entire field is [ ]( . . . . .) and the location just. , . . . . . . そして、その前にも怪しげな会話が。 *8675 < . (自社のラ2023 (Sinnbild des Tageszeitalters in Deutschland auf Deutsch) Učebník prevechebte wiaa. Ura 2 – 4(კ-ліட்டர் , do not hesitate. – This political bias and selection from the point of view. T-shirt printer, Woven ...

7月 31, 2025 · 1 分 · 109 文字 · Me

Gemini Illusion

私が、経験した中でも最低の部類の幻影に遭遇した。 言うまでもなく、2025年1月21日以降はトランプ政権である。しかし、現状、殆どのLLMは2024年前後で歴史が止まっている。しかし、Geminiはどうやら、RAGで最新化するという機能が弱い。そのため、意識的にURIが与えられないと、事実を補正することが出来ない、また、投入される情報もどうやら、Googleとの提携関係などに依存する部分が大きい。 しかし、このように、自信たっぷりに、虚偽の事象を開陳してしまう。 これは、所謂、ハルシネーションの典型的な事例です。 ハルシネーションの原因としては以下のようなものがあります。 情報の不足:モデルが学習データにない情報を推測して補完しようとする。 RAGの限界:適切な情報を取得できない場合、誤った情報がそのまま出力される。 モデルのバイアス:特定のデータソースに依存するため、偏った情報が生成される可能性がある。 今回のは状況として、まず、恐らく、RAGによる情報の最新化が動いていません。恐らく、情報の不足とモデルのバイアスに引きずられた格好です。GeminiはDeep Researchは強力ですが、現時点では、Gemini 2.5 Flashなどではまだ、ハルシネーションがきついようですね。 あと、Geminiでは唐突にロシア語化する問題を確認しています。今のところ、発生はランダムで、前世代のGemini 2.0で頻発しましたが、現行世代のGemini 2.5 Flashでも同様に発生します。この件は、幾つか報告があります。 Geminiの回答にロシア語が混ざる!原因と今すぐできる対処法 Gemini 2.0 がロシア語を混ぜて回答してくる問題 まず、分かっているところを整理すると、特に会話のコンテキストが長くなる、要は会話のキャッチボールが長くなると問題の発生が多くなる。つまり、コンテキスト周りに問題がある可能性がある。さらに、生成されたロシア語っぽい文字列をdeeeplで翻訳すると意味に関しては大きく外れていないようにも見受けられる。 従って、メモリー破壊などのバグによる生成とは考えにくく、プロセスとしては正常動作の可能性が高い。故に、エラーログなどでの調査は不首尾に終わる可能性が高い。 考えられるのはドリフトなどかと思います。あと、状況からして、専門用語などが不具合を起こしているように見受けられるので未知語などの処理、特に埋め込みベクトルの問題が強いように思いました。 まず、学習データの問題の可能性は低いと考えています。理由は、だとすれば初手から表れてもおかしくないからです。むしろ、コンテキストが深くなると発生するということはコンテキストの深化で何らかの異常が発生すると見られます。 現在、Gemma 3で同様の問題が発生するかトライを試みています。新規の更新がありましたら報告します。

5月 29, 2025 · 1 分 · 26 文字 · Me