SixpertK1 / examples /benchmark.py
SixpertAI's picture
Upload examples/benchmark.py with huggingface_hub
0dc9af3 verified
Raw
History Blame Contribute Delete
3.35 kB
#!/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()