itopoly-inc commited on
Commit
e62f287
·
verified ·
1 Parent(s): 04193a1

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +81 -0
README.md ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ base_model: ai9stars/G9v3-3B
4
+ pipeline_tag: text-generation
5
+ tags:
6
+ - g9v3
7
+ - gguf
8
+ - llama-cpp
9
+ - cpu
10
+ - tool-calling
11
+ - long-context
12
+ language:
13
+ - en
14
+ - zh
15
+ ---
16
+
17
+ # G9v3-3B Q3_K_M GGUF — 4-core CPU tier
18
+
19
+ A CPU-tier-validated Q3_K_M cut of **[ai9stars/G9v3-3B](https://huggingface.co/ai9stars/G9v3-3B)**
20
+ (dense ~3B, LlamaForCausalLM, 131K context, think/no-think modes, XML tool calling),
21
+ packaged for llama.cpp on low-core machines. The GGUF itself is quantized by
22
+ **[mradermacher/G9v3-3B-GGUF](https://huggingface.co/mradermacher/G9v3-3B-GGUF)**;
23
+ this repo adds the serving template and **measured performance numbers** for the
24
+ 4-core tier.
25
+
26
+ ## What's in this repo
27
+
28
+ | File | Size | What it is |
29
+ |---|---|---|
30
+ | `g9v3-3B.Q3_K_M.gguf` | 1.5 GB | the quantized model |
31
+ | `g9v3_chat_template_low.jinja` | 12 KB | chat template — **required for tool calling** (see below) |
32
+
33
+ ## Measured performance (4 threads, x86-64 AVX2)
34
+
35
+ Measured on an 8-vCPU EPYC @ 2.0 GHz run at 4 threads to simulate a 4-core box,
36
+ with llama.cpp `llama-server`:
37
+
38
+ - **Decode: ~25 tok/s** (think-mode ~14 tok/s) — comfortably above the ~10 tok/s
39
+ interactive floor for a reasoning model
40
+ - **Prompt processing: ~55 tok/s** — a 5.5K-token prompt costs ~100 s *once*; the
41
+ prefix cache makes repeat requests ~0.6 s
42
+ - Sanity check: reasoning is separated from the answer, tool calls emit structured
43
+ `tool_calls`, and legacy OpenAI `function_call` history is normalized by the template
44
+
45
+ RAM need: ≥6 GB. Context memory: KV cache is 52 KiB/token on this model — 8192 ctx
46
+ fits an 8 GB box, 32768 ctx fits 16 GB.
47
+
48
+ ## Run with llama.cpp
49
+
50
+ ```bash
51
+ # get the files
52
+ huggingface-cli download itopoly/G9v3-3B-Q3_K_M-GGUF g9v3-3B.Q3_K_M.gguf --local-dir .
53
+ huggingface-cli download itopoly/G9v3-3B-Q3_K_M-GGUF g9v3_chat_template_low.jinja --local-dir .
54
+
55
+ # serve (OpenAI-compatible on /v1/chat/completions, model name: g9v3-3b)
56
+ llama-server -m g9v3-3B.Q3_K_M.gguf --alias g9v3-3b \
57
+ -t 4 -tb 4 -c 8192 --port 8000 --host 0.0.0.0 \
58
+ --chat-template-file g9v3_chat_template_low.jinja
59
+ ```
60
+
61
+ Reasoning text arrives in `message.reasoning`, the answer in `content`.
62
+
63
+ ## Why the chat template matters
64
+
65
+ Don't serve this GGUF without `g9v3_chat_template_low.jinja`: the stock template drops
66
+ tool-result messages, and the model re-calls the same tool forever (an observed loop
67
+ bug). The bundled template normalizes legacy tool history so multi-turn tool use works.
68
+
69
+ ## Notes
70
+
71
+ - No-think mode: `temperature=0.7, top_p=0.95`; think mode: `temperature=1.0, top_p=0.95`.
72
+ - Prefill is the bottleneck on CPU — keep prompts ≤ 1–2K tokens, or accept a one-time
73
+ ~2 min first hit per distinct large prefix (cached afterwards).
74
+ - Tool calling works (verified single-turn + both tool-history formats), but tool-call
75
+ quality on a 3B is tier-limited; the 39B family models are the tool-heavy choice.
76
+
77
+ ## Credits
78
+
79
+ - Original model: [ai9stars/G9v3-3B](https://huggingface.co/ai9stars/G9v3-3B) (Apache-2.0)
80
+ - GGUF quantization: [mradermacher/G9v3-3B-GGUF](https://huggingface.co/mradermacher/G9v3-3B-GGUF)
81
+ - CPU-tier validation, template, and packaging: itopoly