File size: 1,536 Bytes
d7228c8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
Script to execute SLM inference and training benchmarks.
"""

import sys
import os

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))

from slm.config.model_config import ModelConfig
from slm.model.transformer_lm import SLMForCausalLM
from slm.evaluation.benchmark import benchmark_inference, benchmark_training_step
from slm.utils.logger import get_logger
from slm.utils.utils import get_device

logger = get_logger("slm.scripts.benchmark")


def run() -> None:
    device = get_device("auto")
    logger.info(f"Starting hardware benchmark on device={device}...")

    # Benchmark Nano model
    nano_cfg = ModelConfig(vocab_size=2000, d_model=128, n_heads=4, n_layers=2, d_ff=512)
    nano_model = SLMForCausalLM(nano_cfg)
    nano_inf = benchmark_inference(nano_model, batch_size=4, seq_len=128, device=device)

    logger.info("=== Nano Model Inference Benchmark ===")
    logger.info(f"Avg Latency: {nano_inf['avg_latency_ms']} ms")
    logger.info(f"Throughput:  {nano_inf['tokens_per_sec']} tokens/sec")

    # Benchmark Standard model
    std_cfg = ModelConfig(vocab_size=32000, d_model=512, n_heads=8, n_layers=8, d_ff=2048)
    std_model = SLMForCausalLM(std_cfg)
    std_inf = benchmark_inference(std_model, batch_size=2, seq_len=256, device=device)

    logger.info("=== Standard Model Inference Benchmark ===")
    logger.info(f"Avg Latency: {std_inf['avg_latency_ms']} ms")
    logger.info(f"Throughput:  {std_inf['tokens_per_sec']} tokens/sec")


if __name__ == "__main__":
    run()