Instructions to use Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300 with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300:Q4_K_M # Run inference directly in the terminal: llama cli -hf Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300:Q4_K_M # Run inference directly in the terminal: llama cli -hf Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300:Q4_K_M
Use Docker
docker model run hf.co/Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300:Q4_K_M
- Ollama
How to use Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300 with Ollama:
ollama run hf.co/Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300:Q4_K_M
- Unsloth Desktop
- Docker Model Runner
How to use Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300 with Docker Model Runner:
docker model run hf.co/Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300:Q4_K_M
- Lemonade
How to use Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300 with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Arm/deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300:Q4_K_M
Run and chat with the model
lemonade run user.deepseek-r1-distill-qwen-1-5b-q4-k-m-llamacpp-vivo-x300-Q4_K_M
List all available models
lemonade list
- Atomic Chat
Sync model repo (text/metadata)
Browse files
README.md
CHANGED
|
@@ -33,7 +33,7 @@ The model is reasoning-distilled: the embedded chat template opens the assistant
|
|
| 33 |
| Model format | GGUF `.gguf` (llama.cpp) |
|
| 34 |
| Target device class | Mobile CPU |
|
| 35 |
| Reference device | vivo X300 (C1-Ultra, C1-Premium, C1-Pro; Android 16 / OriginOS 6) |
|
| 36 |
-
| Primary performance result |
|
| 37 |
| Accuracy result | MATH-500 80.0% |
|
| 38 |
| Size / memory result | 1065.56 MB model size, 3.19x smaller than the f16 baseline |
|
| 39 |
| Precision | Mixed: 4-bit weights (Q4_K default tensor type and token embeddings), 6-bit output weight (Q6_K); activations dynamically quantized to 8-bit at runtime |
|
|
@@ -68,25 +68,27 @@ Performance was measured on the reference configuration below. Results are inten
|
|
| 68 |
| Field | Value |
|
| 69 |
|---|---|
|
| 70 |
| Device / platform | vivo X300 |
|
| 71 |
-
| CPU / accelerator | C1-Ultra, C1-Premium, C1-Pro
|
| 72 |
| OS | android — Android 16 / OriginOS 6 |
|
| 73 |
| Runtime | llama.cpp |
|
| 74 |
| Backend / delegate | cpu, ggml-cpu-repack |
|
| 75 |
| Batch size | 1 |
|
| 76 |
| Precision | Mixed: 4-bit weights (Q4_K default tensor type and token embeddings), 6-bit output weight (Q6_K); activations dynamically quantized to 8-bit at runtime; imatrix-weighted k-quant, per-group, asymmetric |
|
| 77 |
-
| Runs | 5 measured |
|
|
|
|
|
|
|
| 78 |
|
| 79 |
**Performance results**
|
| 80 |
|
| 81 |
| Metric | Original / baseline | Arm-optimized | Improvement |
|
| 82 |
-
|---|---:|---:|---:|
|
| 83 |
-
| Decode throughput |
|
| 84 |
-
| Prefill time |
|
| 85 |
-
| p50 latency |
|
| 86 |
| Model size | 3395.48 MB | 1065.56 MB | 3.19x smaller |
|
| 87 |
-
| Peak memory |
|
| 88 |
|
| 89 |
-
Latency here is
|
| 90 |
|
| 91 |
## Accuracy
|
| 92 |
|
|
|
|
| 33 |
| Model format | GGUF `.gguf` (llama.cpp) |
|
| 34 |
| Target device class | Mobile CPU |
|
| 35 |
| Reference device | vivo X300 (C1-Ultra, C1-Premium, C1-Pro; Android 16 / OriginOS 6) |
|
| 36 |
+
| Primary performance result | 34.67 tokens/sec decode, 761.30 ms prefill |
|
| 37 |
| Accuracy result | MATH-500 80.0% |
|
| 38 |
| Size / memory result | 1065.56 MB model size, 3.19x smaller than the f16 baseline |
|
| 39 |
| Precision | Mixed: 4-bit weights (Q4_K default tensor type and token embeddings), 6-bit output weight (Q6_K); activations dynamically quantized to 8-bit at runtime |
|
|
|
|
| 68 |
| Field | Value |
|
| 69 |
|---|---|
|
| 70 |
| Device / platform | vivo X300 |
|
| 71 |
+
| CPU / accelerator | C1-Ultra, C1-Premium, C1-Pro, cpu |
|
| 72 |
| OS | android — Android 16 / OriginOS 6 |
|
| 73 |
| Runtime | llama.cpp |
|
| 74 |
| Backend / delegate | cpu, ggml-cpu-repack |
|
| 75 |
| Batch size | 1 |
|
| 76 |
| Precision | Mixed: 4-bit weights (Q4_K default tensor type and token embeddings), 6-bit output weight (Q6_K); activations dynamically quantized to 8-bit at runtime; imatrix-weighted k-quant, per-group, asymmetric |
|
| 77 |
+
| Runs | 5 warm-up + 20 measured |
|
| 78 |
+
|
| 79 |
+
**Measurement conditions.** Each measured run consumes a 128-token prompt and generates 128 tokens, using 4 CPU threads, 5 warm-up runs and 20 measured runs. Each run starts only once Android reports thermal status 0 (NONE), after a 30 s settle. The device is set to fixed performance mode, which is the official recommendation.
|
| 80 |
|
| 81 |
**Performance results**
|
| 82 |
|
| 83 |
| Metric | Original / baseline | Arm-optimized | Improvement |
|
| 84 |
+
| --- | ---: | ---: | ---: |
|
| 85 |
+
| Decode throughput | 9.84 tokens/sec | 34.67 tokens/sec | 3.52x |
|
| 86 |
+
| Prefill time | 5515.52 ms | 761.30 ms | 7.24x faster |
|
| 87 |
+
| p50 latency | 18531.18 ms | 4458.02 ms | 4.16x faster |
|
| 88 |
| Model size | 3395.48 MB | 1065.56 MB | 3.19x smaller |
|
| 89 |
+
| Peak memory | 3469.12 MB | 1979.49 MB | 1.75x less |
|
| 90 |
|
| 91 |
+
Latency here is derived from the measured llama-bench figures at the benched shape (128-token prompt, 128 generated tokens), not a directly timed wall-clock figure. Peak memory is Android USS (private clean plus private dirty), not peak RSS.
|
| 92 |
|
| 93 |
## Accuracy
|
| 94 |
|
benchmarks/deepseek-r1-distill-qwen-1-5b-llamacpp-vivo-x300-fp32.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
version: 1.2.0
|
| 2 |
report_type: llm-generative
|
| 3 |
profile: Baseline
|
| 4 |
-
created_at: '2026-
|
| 5 |
context:
|
| 6 |
target_ref: vivo-x300
|
| 7 |
runtime:
|
|
@@ -16,20 +16,21 @@ context:
|
|
| 16 |
- GGML_CPU_KLEIDIAI=ON
|
| 17 |
dataset:
|
| 18 |
name: llama-bench synthetic tokens
|
| 19 |
-
sample_count:
|
| 20 |
-
slice: -p
|
| 21 |
benchmark:
|
| 22 |
batch_size: 1
|
| 23 |
-
prompt_length_tokens:
|
| 24 |
generation_length_tokens: 128
|
| 25 |
deployment_mode: chat
|
| 26 |
-
num_runs:
|
|
|
|
| 27 |
performance:
|
| 28 |
end_to_end_latency_ms:
|
| 29 |
-
p50:
|
| 30 |
-
prefill_encode_time_ms:
|
| 31 |
-
tokens_per_second:
|
| 32 |
-
peak_memory_mb:
|
| 33 |
accuracy:
|
| 34 |
benchmark_name: MATH-500
|
| 35 |
accuracy_pct: 82.8
|
|
|
|
| 1 |
version: 1.2.0
|
| 2 |
report_type: llm-generative
|
| 3 |
profile: Baseline
|
| 4 |
+
created_at: '2026-09-04T20:59:14Z'
|
| 5 |
context:
|
| 6 |
target_ref: vivo-x300
|
| 7 |
runtime:
|
|
|
|
| 16 |
- GGML_CPU_KLEIDIAI=ON
|
| 17 |
dataset:
|
| 18 |
name: llama-bench synthetic tokens
|
| 19 |
+
sample_count: 20
|
| 20 |
+
slice: -p 128 -n 128 -r 20 -t 4
|
| 21 |
benchmark:
|
| 22 |
batch_size: 1
|
| 23 |
+
prompt_length_tokens: 128
|
| 24 |
generation_length_tokens: 128
|
| 25 |
deployment_mode: chat
|
| 26 |
+
num_runs: 20
|
| 27 |
+
warmup_runs: 5
|
| 28 |
performance:
|
| 29 |
end_to_end_latency_ms:
|
| 30 |
+
p50: 18531.182
|
| 31 |
+
prefill_encode_time_ms: 5515.516
|
| 32 |
+
tokens_per_second: 9.836
|
| 33 |
+
peak_memory_mb: 3469.125
|
| 34 |
accuracy:
|
| 35 |
benchmark_name: MATH-500
|
| 36 |
accuracy_pct: 82.8
|
benchmarks/deepseek-r1-distill-qwen-1-5b-llamacpp-vivo-x300-int4.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
version: 1.2.0
|
| 2 |
report_type: llm-generative
|
| 3 |
profile: Arm-Optimized
|
| 4 |
-
created_at: '2026-
|
| 5 |
context:
|
| 6 |
target_ref: vivo-x300
|
| 7 |
runtime:
|
|
@@ -16,20 +16,21 @@ context:
|
|
| 16 |
- GGML_CPU_KLEIDIAI=ON
|
| 17 |
dataset:
|
| 18 |
name: llama-bench synthetic tokens
|
| 19 |
-
sample_count:
|
| 20 |
-
slice: -p
|
| 21 |
benchmark:
|
| 22 |
batch_size: 1
|
| 23 |
-
prompt_length_tokens:
|
| 24 |
generation_length_tokens: 128
|
| 25 |
deployment_mode: chat
|
| 26 |
-
num_runs:
|
|
|
|
| 27 |
performance:
|
| 28 |
end_to_end_latency_ms:
|
| 29 |
-
p50:
|
| 30 |
-
prefill_encode_time_ms:
|
| 31 |
-
tokens_per_second:
|
| 32 |
-
peak_memory_mb:
|
| 33 |
accuracy:
|
| 34 |
benchmark_name: MATH-500
|
| 35 |
accuracy_pct: 80.0
|
|
|
|
| 1 |
version: 1.2.0
|
| 2 |
report_type: llm-generative
|
| 3 |
profile: Arm-Optimized
|
| 4 |
+
created_at: '2026-09-04T20:59:14Z'
|
| 5 |
context:
|
| 6 |
target_ref: vivo-x300
|
| 7 |
runtime:
|
|
|
|
| 16 |
- GGML_CPU_KLEIDIAI=ON
|
| 17 |
dataset:
|
| 18 |
name: llama-bench synthetic tokens
|
| 19 |
+
sample_count: 20
|
| 20 |
+
slice: -p 128 -n 128 -r 20 -t 4
|
| 21 |
benchmark:
|
| 22 |
batch_size: 1
|
| 23 |
+
prompt_length_tokens: 128
|
| 24 |
generation_length_tokens: 128
|
| 25 |
deployment_mode: chat
|
| 26 |
+
num_runs: 20
|
| 27 |
+
warmup_runs: 5
|
| 28 |
performance:
|
| 29 |
end_to_end_latency_ms:
|
| 30 |
+
p50: 4458.016
|
| 31 |
+
prefill_encode_time_ms: 761.304
|
| 32 |
+
tokens_per_second: 34.671
|
| 33 |
+
peak_memory_mb: 1979.492
|
| 34 |
accuracy:
|
| 35 |
benchmark_name: MATH-500
|
| 36 |
accuracy_pct: 80.0
|