File size: 3,350 Bytes
0dc9af3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/usr/bin/env python3
"""
Sixpert K1 - Quick Benchmark Script
====================================
Runs basic performance benchmarks for Sixpert K1 including:
- Token generation speed (tokens/second)
- Context processing speed
- Memory usage estimation

Usage:
    python benchmark.py --model SixpertK1.gguf
"""

import argparse
import time
import sys

try:
    from llama_cpp import Llama
except ImportError:
    print("Installing llama-cpp-python...")
    import subprocess
    subprocess.check_call([sys.executable, "-m", "pip", "install", "llama-cpp-python"])
    from llama_cpp import Llama


def benchmark_generation(model_path: str, tokens: int = 512):
    """Benchmark token generation speed."""
    print("\n=== Generation Benchmark ===")
    print(f"Generating {tokens} tokens...\n")

    llm = Llama(
        model_path=model_path,
        n_ctx=4096,
        n_gpu_layers=-1,
        verbose=False,
    )

    start = time.time()
    output = llm(
        "<|im_start|>user\nWrite a detailed essay about artificial intelligence.<|im_end|>\n<|im_start|>assistant\n",
        max_tokens=tokens,
        temperature=0.7,
        stream=False,
    )
    elapsed = time.time() - start

    gen_tokens = len(output["choices"][0]["text"].split())
    tokens_per_sec = tokens / elapsed

    print(f"Generated: {tokens} tokens")
    print(f"Time: {elapsed:.2f}s")
    print(f"Speed: {tokens_per_sec:.1f} tokens/sec")
    print(f"Est. words: ~{gen_tokens}")


def benchmark_context(model_path: str, context_length: int = 8192):
    """Benchmark context processing speed."""
    print(f"\n=== Context Processing Benchmark ===")
    print(f"Processing {context_length} token context...\n")

    llm = Llama(
        model_path=model_path,
        n_ctx=context_length + 512,
        n_gpu_layers=-1,
        verbose=False,
    )

    # Create a long context prompt
    filler = "The quick brown fox jumps over the lazy dog. " * (context_length // 10)
    prompt = f"<|im_start|>user\n{filler}\nSummarize the above text in one sentence.<|im_end|>\n<|im_start|>assistant\n"

    start = time.time()
    output = llm(prompt, max_tokens=100, stream=False)
    elapsed = time.time() - start

    prompt_tokens = output["usage"]["prompt_eval_count"]
    eval_time = output["usage"].get("prompt_eval_time", 1000) / 1000

    print(f"Context tokens: {prompt_tokens}")
    print(f"Processing time: {eval_time:.2f}s")
    print(f"Speed: {prompt_tokens / eval_time:.1f} tokens/sec")


def main():
    parser = argparse.ArgumentParser(description="Sixpert K1 Benchmark")
    parser.add_argument("--model", type=str, default="SixpertK1.gguf", help="Path to GGUF model")
    parser.add_argument("--gen-tokens", type=int, default=512, help="Generation benchmark tokens")
    parser.add_argument("--ctx-length", type=int, default=8192, help="Context benchmark length")
    parser.add_argument("--all", action="store_true", help="Run all benchmarks")

    args = parser.parse_args()

    print("=" * 60)
    print("  Sixpert K1 Benchmark Suite")
    print("  Precision Logic Engine")
    print("=" * 60)

    if args.all or True:
        benchmark_generation(args.model, args.gen_tokens)
        benchmark_context(args.model, args.ctx_length)

    print("\n" + "=" * 60)
    print("  Benchmark complete!")
    print("=" * 60)


if __name__ == "__main__":
    main()