SixpertK2 / examples /benchmark.py
SixpertAI's picture
Upload examples/benchmark.py with huggingface_hub
4f785fa verified
Raw
History Blame Contribute Delete
4.39 kB
#!/usr/bin/env python3
"""
Sixpert K2 - Quick Benchmark Script
====================================
Runs basic performance benchmarks for Sixpert K2 (MoE).
Key advantage: Despite 8.9B total parameters, only ~1.2B are active
per token, making inference faster than dense models of similar size.
Usage:
python benchmark.py --model SixpertK2.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 and its impact on society.<|im_end|>\n<|im_start|>assistant\n",
max_tokens=tokens,
temperature=0.6,
stream=False,
)
elapsed = time.time() - start
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"Note: Only ~1.2B active params per token (MoE advantage)")
def benchmark_context(model_path: str, context_length: int = 16384):
"""Benchmark long-context processing speed."""
print(f"\n=== Long-Context 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 evolution of artificial intelligence has been marked by several key milestones. " * (context_length // 15)
prompt = f"<|im_start|>user\n{filler}\nBased on the above text, what are the main themes discussed?<|im_end|>\n<|im_start|>assistant\n"
start = time.time()
output = llm(prompt, max_tokens=200, 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 benchmark_reasoning(model_path: str):
"""Benchmark deep reasoning capability."""
print(f"\n=== Deep Reasoning Benchmark ===")
print(f"Testing multi-step reasoning...\n")
llm = Llama(
model_path=model_path,
n_ctx=8192,
n_gpu_layers=-1,
verbose=False,
)
start = time.time()
output = llm(
"<|im_start|>user\nProve that there are infinitely many prime numbers. Provide a complete, rigorous mathematical proof.<|im_end|>\n<|im_start|>assistant\n",
max_tokens=2048,
temperature=0.3,
stream=False,
)
elapsed = time.time() - start
response_text = output["choices"][0]["text"]
print(f"Response length: {len(response_text)} chars")
print(f"Time: {elapsed:.2f}s")
print(f"Tokens/sec: {2048 / elapsed:.1f}")
print(f"\nFirst 200 chars: {response_text[:200]}...")
def main():
parser = argparse.ArgumentParser(description="Sixpert K2 Benchmark")
parser.add_argument("--model", type=str, default="SixpertK2.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=16384, help="Context benchmark length")
parser.add_argument("--all", action="store_true", help="Run all benchmarks")
args = parser.parse_args()
print("=" * 60)
print(" Sixpert K2 Benchmark Suite")
print(" Deep Reasoning Engine (MoE)")
print(" Total: ~8.9B | Active: ~1.2B/token")
print("=" * 60)
benchmark_generation(args.model, args.gen_tokens)
benchmark_context(args.model, args.ctx_length)
benchmark_reasoning(args.model)
print("\n" + "=" * 60)
print(" Benchmark complete!")
print("=" * 60)
if __name__ == "__main__":
main()