#!/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()