webxos commited on
Commit
de215dd
·
verified ·
1 Parent(s): 0b8300b

Delete test.py

Browse files
Files changed (1) hide show
  1. test.py +0 -120
test.py DELETED
@@ -1,120 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- test.py - Micro Distillery model chat wrapper.
4
-
5
- Loads model.json (a GRPO+VAE-distilled bigram model) and provides
6
- a simple REPL chat interface.
7
-
8
- Usage:
9
- python3 test.py # interactive chat
10
- python3 test.py hello # one-shot from prompt
11
- python3 test.py --temperature 1.2 # one-shot with custom temperature
12
- python3 test.py # (interactive also supports --temperature)
13
- """
14
- import json
15
- import os
16
- import random
17
- import sys
18
-
19
- MODEL_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "model.json")
20
-
21
-
22
- def load_model(path=MODEL_PATH):
23
- with open(path, "r", encoding="utf-8") as f:
24
- return json.load(f)
25
-
26
-
27
- def sample_next(transitions, token, rng, temperature=1.0):
28
- bucket = transitions.get(token)
29
- if not bucket:
30
- return None
31
- tokens = list(bucket.keys())
32
- inv_t = 1.0 / max(temperature, 1e-3)
33
- weights = [max(bucket[t], 1e-12) ** inv_t for t in tokens]
34
- total = sum(weights)
35
- if total <= 0:
36
- return None
37
- r = rng.random() * total
38
- acc = 0.0
39
- for t, w in zip(tokens, weights):
40
- acc += w
41
- if r <= acc:
42
- return t
43
- return tokens[-1]
44
-
45
-
46
- def generate(model, prompt, max_tokens=32, temperature=0.9):
47
- transitions = model.get("transitions", {})
48
- bos = model.get("bos_token", "<|endoftext|>")
49
- eos = model.get("eos_token", "<|endoftext|>")
50
- seed = int(model.get("harmonic_seed", 1337)) & 0xFFFFFFFF
51
- rng = random.Random(seed)
52
-
53
- if prompt and prompt.strip():
54
- current = prompt.strip()[-1]
55
- prefix = prompt.strip()
56
- else:
57
- current = bos
58
- prefix = ""
59
-
60
- generated = ""
61
- for _ in range(max_tokens):
62
- nxt = sample_next(transitions, current, rng, temperature=temperature)
63
- if nxt is None or nxt == eos:
64
- break
65
- generated += nxt
66
- current = nxt
67
- return prefix + generated
68
-
69
-
70
- def main(temperature=0.9):
71
- print("=== Micro Distillery Model Chat ===")
72
- if not os.path.exists(MODEL_PATH):
73
- print("Error: " + MODEL_PATH + " not found.", file=sys.stderr)
74
- sys.exit(1)
75
- model = load_model()
76
- print("Format: " + str(model.get("format")))
77
- print("Vocab size: " + str(len(model.get("vocab", []))))
78
- print("Transitions: " + str(len(model.get("transitions", {}))))
79
- print("Seed: " + str(model.get("harmonic_seed")))
80
- print("Temperature: " + str(temperature))
81
- print("Type /quit to exit.\n")
82
- while True:
83
- try:
84
- prompt = input("You: ").strip()
85
- except (EOFError, KeyboardInterrupt):
86
- print("\nBye!")
87
- break
88
- if not prompt:
89
- continue
90
- if prompt.lower() in ("/quit", "/exit", "quit", "exit"):
91
- break
92
- out = generate(model, prompt, temperature=temperature)
93
- print("Bot: " + out)
94
-
95
-
96
- if __name__ == "__main__":
97
- args = sys.argv[1:]
98
- temperature = 0.9
99
- prompts = []
100
- i = 0
101
- while i < len(args):
102
- if args[i] == "--temperature" and i + 1 < len(args):
103
- try:
104
- temperature = float(args[i + 1])
105
- except ValueError:
106
- print("Warning: invalid --temperature value, using 0.9", file=sys.stderr)
107
- i += 2
108
- elif args[i] in ("--help", "-h"):
109
- print("Usage: python3 test.py [prompt...] [--temperature T]")
110
- sys.exit(0)
111
- elif args[i].startswith("--"):
112
- i += 1
113
- else:
114
- prompts.append(args[i])
115
- i += 1
116
- if prompts:
117
- model = load_model()
118
- print(generate(model, " ".join(prompts), temperature=temperature))
119
- else:
120
- main(temperature=temperature)