Views
No views yet
| Property | Value |
|---|---|
| Snapshot month | 2023-12 |
| Architecture | Decoder-only Transformer (GPT) |
| Layers | 20 |
| Hidden dim | 4096 |
| Attention heads | 32 |
| Vocab size | 50304 |
| Tokenizer | GPT-2 BPE |
| Position encoding | RoPE |
| Normalization | RMSNorm on Q/K + pre-norm |
| Activation | Squared ReLU |
| Weight tying | Yes (input emb ↔ lm_head) |
pip install transformers torch safetensors1import torch
2from transformers import AutoTokenizer, AutoModelForCausalLM
3
4repo_id = "Diamegs/PIT-4B-FT-202312"
5
6tokenizer = AutoTokenizer.from_pretrained(repo_id)
7model = AutoModelForCausalLM.from_pretrained(
8 repo_id,
9 trust_remote_code=True, # required for custom architecture
10 torch_dtype=torch.bfloat16,
11)
12model = model.cuda()
13model.eval()1from transformers import StoppingCriteria, StoppingCriteriaList
2
3class StopOnEndMarker(StoppingCriteria):
4 def __init__(self, end_ids):
5 self.end_ids = end_ids
6 self.n = len(end_ids)
7 def __call__(self, input_ids, scores, **kwargs):
8 return input_ids[0][-self.n:].tolist() == self.end_ids
9
10end_ids = tokenizer.encode("<|end|>", add_special_tokens=False)
11stopping_criteria = StoppingCriteriaList([StopOnEndMarker(end_ids)])
12
13def format_prompt(instruction: str) -> str:
14 return f"<|user|>\n{instruction}\n<|assistant|>\n"
15
16prompt = format_prompt("What were the main economic trends in 2023?")
17inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
18output = model.generate(
19 **inputs,
20 max_new_tokens=512,
21 do_sample=True,
22 temperature=0.7,
23 top_p=0.9,
24 pad_token_id=tokenizer.eos_token_id,
25 stopping_criteria=stopping_criteria,
26)
27n_prompt = inputs["input_ids"].shape[1]
28response = tokenizer.decode(output[0][n_prompt:], skip_special_tokens=False)
29# Strip the end marker and any trailing whitespace
30response = response.split("<|end|>")[0].strip()
31print(response)1# What does the model "know" about events before its cutoff?
2prompt = "The most important AI developments in early 2023 were"
3inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
4output = model.generate(
5 **inputs,
6 max_new_tokens=150,
7 do_sample=True,
8 temperature=0.7,
9 top_p=0.9,
10 pad_token_id=tokenizer.eos_token_id,
11)
12n_prompt = inputs["input_ids"].shape[1]
13print(tokenizer.decode(output[0][n_prompt:], skip_special_tokens=True))model.safetensors) — memory-mapped, fast to load, and safe (no arbitrary code execution).1@techreport{kelly2026pit,
2 title = {Scaling Point-in-Time Language Models},
3 author = {Kelly, Bryan T. and Malamud, Semyon and Schwab, Johannes and Xu, Teng Andrea},
4 institution = {Swiss Finance Institute},
5 type = {Research Paper},
6 number = {26-37},
7 year = {2026},
8 month = apr,
9 doi = {10.2139/ssrn.6681860},
10 url = {https://ssrn.com/abstract=6681860}
11}