
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
Hello<end_of_turn>
<start_of_turn>model
Hi there<end_of_turn>
<start_of_turn>user
How are you?<end_of_turn>
<start_of_turn>model
system_info: n_threads = 4 (n_threads_batch = 4) / 4 | CPU : NEON = 1 | ARM_FMA = 1 | LLAMAFILE = 1 | OPENMP = 1 | REPACK = 1 |
main: interactive mode on.
sampler seed: 1970850671
sampler params:
repeat_last_n = 64, repeat_penalty = 1.000, frequency_penalty = 0.000, presence_penalty = 0.000
dry_multiplier = 0.000, dry_base = 1.750, dry_allowed_length = 2, dry_penalty_last_n = 4096
top_k = 40, top_p = 0.950, min_p = 0.050, xtc_probability = 0.000, xtc_threshold = 0.100, typical_p = 1.000, top_n_sigma = -1.000, temp = 0.800
mirostat = 0, mirostat_lr = 0.100, mirostat_ent = 5.000
sampler chain: logits -> logit-bias -> penalties -> dry -> top-n-sigma -> top-k -> typical -> top-p -> min-p -> xtc -> temp-ext -> dist
generate: n_ctx = 4096, n_batch = 2048, n_predict = -1, n_keep = 1
== Running in interactive mode. ==
- Press Ctrl+C to interject at any time.
- Press Return to return control to the AI.
- To return control without starting a new line, end your input with ‘/’.
- If you want to submit another line, end your input with ‘'.
- Not using system message. To change it, set a different value via -sys PROMPT
実行後、モデルに質問を投げかけると、以下のような応答が得られました。#
モデルのメタデータとパラメータ
実行ログから読み取れるモデルの主要なメタデータとパラメータは以下の通りです。
- アーキテクチャ: gemma3
- モデル名: Gemma-3-270M-It
- パラメータ数: 268.10 M (2.681億)
- ファイルサイズ: 219.87 MiB
- コンテキスト長: 32768
- エンベディング長: 640
- レイヤー数: 18
- ヘッド数: 4
- KVヘッド数: 1