File size: 990 Bytes
8bf1a8c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import time
import numpy as np
import argparse

def benchmark(seq_len: int, new_tokens: int, use_cache: bool):
    print(f"Benchmarking (use_cache={use_cache}) ...")
    start = time.time()
    
    # Mock generation time
    # Without cache, time is O(n^2), with cache it's O(n)
    for i in range(new_tokens):
        if use_cache:
            time.sleep(0.001)
        else:
            time.sleep(0.001 + 0.0001 * (seq_len + i))
            
    elapsed = time.time() - start
    tok_sec = new_tokens / elapsed
    print(f"Completed {new_tokens} tokens in {elapsed:.3f}s ({tok_sec:.2f} tok/s)\n")

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--seq-len", type=int, default=128)
    parser.add_argument("--new-tokens", type=int, default=256)
    args = parser.parse_args()
    
    print("=== KV Cache Benchmark ===")
    benchmark(args.seq_len, args.new_tokens, use_cache=False)
    benchmark(args.seq_len, args.new_tokens, use_cache=True)