| import sys | |
| from pathlib import Path | |
| import json | |
| import pytest | |
| REPO_ROOT = Path(__file__).resolve().parents[1] | |
| sys.path.insert(0, str(REPO_ROOT)) | |
| def tokenizer(): | |
| from tokenizer import CharacterTokenizer | |
| return CharacterTokenizer.from_file(REPO_ROOT / "tokenizer.json") | |
| def config_data(): | |
| return json.loads( | |
| (REPO_ROOT / "config.json").read_text( | |
| encoding="utf-8", | |
| ) | |
| ) | |
| def model(config_data): | |
| from safetensors.torch import load_file | |
| from model import GPT, GPTConfig | |
| config = GPTConfig.from_json(config_data) | |
| model = GPT(config=config) | |
| state = load_file( | |
| REPO_ROOT / "model.safetensors", | |
| device="cpu", | |
| ) | |
| model.load_state_dict( | |
| state, | |
| strict=True, | |
| ) | |
| model.eval() | |
| return model |