aorabdel commited on
Commit
df1b032
·
verified ·
1 Parent(s): f1fa7c9

Sync model repo (text/metadata)

Browse files
README.md CHANGED
@@ -29,9 +29,9 @@ This version is intended to demonstrate efficient inference on Arm-based platfor
29
  | Model format | ONNX |
30
  | Target device class | Mobile CPU |
31
  | Reference device | vivo X300 (C1-Ultra, C1-Premium, C1-Pro, Android 16 / OriginOS 6) |
32
- | Primary performance result | 31.88 tokens/sec decode throughput (3.83x the FP32 baseline); 1175.59 ms time to first token, which is 25.2 % slower than the FP32 baseline |
33
  | Accuracy result | HellaSwag 59.0 % |
34
- | Size / memory result | 727.86 MB with INT4 weights, INT8 activations, INT8 embeddings and INT8 LM head (5.77x smaller than the FP32 baseline); peak memory 879.30 MB |
35
 
36
  ## Original model
37
 
@@ -63,27 +63,29 @@ Performance was measured on the reference configuration below. Results are inten
63
  | Field | Value |
64
  |---|---|
65
  | Device / platform | vivo X300 |
66
- | CPU / accelerator | C1-Ultra, C1-Premium, C1-Pro, aarch64, 8 cores, CPU execution backend |
67
  | OS | android, Android 16 / OriginOS 6 |
68
  | Runtime | ONNX Runtime 1.27.0 |
69
  | Backend / delegate | MLAS, KleidiAI |
70
  | Batch size | 1 |
71
  | Precision | INT4 groupwise asymmetric weights (GPTQ, group size 32), INT8 per-token dynamic activations, INT8 per-row embeddings, INT8 LM head (scheme W4A8_dyn_emb_int8) |
72
- | Runs | 20 warmup runs + 100 measured runs |
 
 
73
 
74
  **Performance results**
75
 
76
  | Metric | Original / baseline | Arm-optimized | Improvement |
77
- |---|---:|---:|---:|
78
- | End-to-end latency p50 (ms) | 4549.87 | 2085.09 | 2.18x faster |
79
- | End-to-end latency p90 (ms) | 4700.35 | 2223.47 | 2.11x faster |
80
- | End-to-end latency p99 (ms) | 4818.38 | 2354.50 | 2.05x faster |
81
- | Decode throughput (tokens/sec) | 8.31 | 31.88 | 3.83x |
82
- | Time to first token (ms) | 938.81 | 1175.59 | 0.80x (regression) |
83
- | Model load time (ms) | 9086.10 | 1622.18 | 5.60x faster |
84
  | Model size (MB) | 4196.99 | 727.86 | 5.77x smaller |
85
- | Peak memory (MB) | 4073.95 | 879.30 | 4.63x less |
86
- | Average memory (MB) | 4054.65 | 860.36 | 4.71x less |
87
 
88
  ## Accuracy
89
 
 
29
  | Model format | ONNX |
30
  | Target device class | Mobile CPU |
31
  | Reference device | vivo X300 (C1-Ultra, C1-Premium, C1-Pro, Android 16 / OriginOS 6) |
32
+ | Primary performance result | 34.80 tokens/sec decode throughput (4.27x the FP32 baseline); 726.50 ms time to first token, which is 22.6 % faster than the FP32 baseline |
33
  | Accuracy result | HellaSwag 59.0 % |
34
+ | Size / memory result | 727.86 MB with INT4 weights, INT8 activations, INT8 embeddings and INT8 LM head (5.77x smaller than the FP32 baseline); peak memory 897.54 MB |
35
 
36
  ## Original model
37
 
 
63
  | Field | Value |
64
  |---|---|
65
  | Device / platform | vivo X300 |
66
+ | CPU / accelerator | C1-Ultra, C1-Premium, C1-Pro, aarch64, CPU execution backend |
67
  | OS | android, Android 16 / OriginOS 6 |
68
  | Runtime | ONNX Runtime 1.27.0 |
69
  | Backend / delegate | MLAS, KleidiAI |
70
  | Batch size | 1 |
71
  | Precision | INT4 groupwise asymmetric weights (GPTQ, group size 32), INT8 per-token dynamic activations, INT8 per-row embeddings, INT8 LM head (scheme W4A8_dyn_emb_int8) |
72
+ | Runs | 5 warmup runs + 20 measured runs |
73
+
74
+ **Measurement conditions.** Each measured run consumes a 153-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.
75
 
76
  **Performance results**
77
 
78
  | Metric | Original / baseline | Arm-optimized | Improvement |
79
+ | --- | ---: | ---: | ---: |
80
+ | End-to-end latency p50 (ms) | 16658.09 | 4394.52 | 3.79x faster |
81
+ | End-to-end latency p90 (ms) | 16835.99 | 4727.38 | 3.56x faster |
82
+ | End-to-end latency p99 (ms) | 16910.87 | 4769.23 | 3.55x faster |
83
+ | Decode throughput (tokens/sec) | 8.15 | 34.80 | 4.27x |
84
+ | Time to first token (ms) | 938.04 | 726.50 | 1.29x faster |
85
+ | Model load time (ms) | 7604.93 | 1358.55 | 5.60x faster |
86
  | Model size (MB) | 4196.99 | 727.86 | 5.77x smaller |
87
+ | Peak memory (MB) | 4098.56 | 897.54 | 4.57x less |
88
+ | Average memory (MB) | 4079.43 | 877.93 | 4.65x less |
89
 
90
  ## Accuracy
91
 
benchmarks/tinyllama-1-1b-chat-onnx-genai-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-07-10T13:41:20Z'
5
  context:
6
  target_ref: vivo-x300
7
  runtime:
@@ -20,22 +20,22 @@ context:
20
  sample_count: 8000
21
  benchmark:
22
  batch_size: 1
23
- num_runs: 100
24
- warmup_runs: 20
25
- prompt_length_tokens: 154
26
- generation_length_tokens: 30
27
  accuracy:
28
  benchmark_name: HellaSwag
29
  accuracy_pct: 59.8
30
  shot_count: 0
31
  performance:
32
  end_to_end_latency_ms:
33
- p50: 4549.870
34
- p90: 4700.350
35
- p99: 4818.378
36
- peak_memory_mb: 4073.949
37
- average_memory_mb: 4054.648
38
- ttft_ms: 938.808
39
- tokens_per_second: 8.315
40
- model_load_time_ms: 9086.103
41
- time_to_first_inference_ms: 4535.913
 
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:
 
20
  sample_count: 8000
21
  benchmark:
22
  batch_size: 1
23
+ num_runs: 20
24
+ warmup_runs: 5
25
+ prompt_length_tokens: 153
26
+ generation_length_tokens: 128
27
  accuracy:
28
  benchmark_name: HellaSwag
29
  accuracy_pct: 59.8
30
  shot_count: 0
31
  performance:
32
  end_to_end_latency_ms:
33
+ p50: 16658.093
34
+ p90: 16835.987
35
+ p99: 16910.870
36
+ peak_memory_mb: 4098.555
37
+ average_memory_mb: 4079.430
38
+ ttft_ms: 938.042
39
+ tokens_per_second: 8.148
40
+ model_load_time_ms: 7604.926
41
+ time_to_first_inference_ms: 16420.157
benchmarks/tinyllama-1-1b-chat-onnx-genai-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-07-09T02:55:51Z'
5
  context:
6
  target_ref: vivo-x300
7
  runtime:
@@ -20,23 +20,23 @@ context:
20
  sample_count: 8000
21
  benchmark:
22
  batch_size: 1
23
- num_runs: 100
24
- warmup_runs: 20
25
- prompt_length_tokens: 154
26
- generation_length_tokens: 30
27
  accuracy:
28
  benchmark_name: HellaSwag
29
  accuracy_pct: 59.0
30
  shot_count: 0
31
  performance:
32
  end_to_end_latency_ms:
33
- p50: 2085.095
34
- p90: 2223.471
35
- p99: 2354.495
36
- peak_memory_mb: 879.301
37
- average_memory_mb: 860.359
38
  delegation_pct: 99.84
39
- ttft_ms: 1175.594
40
- tokens_per_second: 31.881
41
- model_load_time_ms: 1622.184
42
- time_to_first_inference_ms: 2091.532
 
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:
 
20
  sample_count: 8000
21
  benchmark:
22
  batch_size: 1
23
+ num_runs: 20
24
+ warmup_runs: 5
25
+ prompt_length_tokens: 153
26
+ generation_length_tokens: 128
27
  accuracy:
28
  benchmark_name: HellaSwag
29
  accuracy_pct: 59.0
30
  shot_count: 0
31
  performance:
32
  end_to_end_latency_ms:
33
+ p50: 4394.521
34
+ p90: 4727.384
35
+ p99: 4769.225
36
+ peak_memory_mb: 897.539
37
+ average_memory_mb: 877.934
38
  delegation_pct: 99.84
39
+ ttft_ms: 726.502
40
+ tokens_per_second: 34.800
41
+ model_load_time_ms: 1358.552
42
+ time_to_first_inference_ms: 4482.815