Download tests/test_evaluator.py from Amitkumar001/Law_Slm: direct link, hf CLI and curl.
- Browser
- Download file 1.33 kB
-
https://huggingface.co/Amitkumar001/Law_Slm/resolve/main/tests/test_evaluator.py
- Command line
-
hf download hf://Amitkumar001/Law_Slm/tests/test_evaluator.py
-
curl -L -o test_evaluator.py https://huggingface.co/Amitkumar001/Law_Slm/resolve/main/tests/test_evaluator.py
1.33 kB
| """ | |
| Unit tests for ModelEvaluator. | |
| """ | |
| import pytest | |
| import torch | |
| from slm.config.model_config import ModelConfig | |
| from slm.model.transformer_lm import SLMForCausalLM | |
| from slm.tokenizer.bpe import BPETokenizer | |
| from slm.dataset.dataset import CausalLMDataset | |
| from slm.dataset.loader import create_dataloader | |
| from slm.evaluation.evaluator import ModelEvaluator | |
| def test_model_evaluator(): | |
| corpus = [ | |
| "User: hello\nSLM: Hello! How can I help you today?\n", | |
| "User: what is python\nSLM: Python is a programming language.\n" | |
| ] * 5 | |
| tokenizer = BPETokenizer() | |
| tokenizer.train_on_texts(corpus, vocab_size=100) | |
| config = ModelConfig(vocab_size=len(tokenizer.vocab), d_model=32, n_heads=2, n_layers=1, max_seq_len=64) | |
| model = SLMForCausalLM(config) | |
| dataset = CausalLMDataset(corpus, tokenizer, max_seq_len=64) | |
| loader = create_dataloader(dataset, batch_size=2, shuffle=False) | |
| evaluator = ModelEvaluator(model, tokenizer, device="cpu") | |
| report = evaluator.full_evaluation_report(loader) | |
| assert "val_loss" in report | |
| assert "perplexity" in report | |
| assert "top_1_accuracy" in report | |
| assert "top_5_accuracy" in report | |
| assert "tokens_per_second" in report | |
| assert "ms_per_token" in report | |
| assert report["val_loss"] >= 0.0 | |
| assert report["perplexity"] >= 1.0 | |