Skip to content

Instantly share code, notes, and snippets.

@vgel
Last active September 7, 2025 21:36
Show Gist options
  • Save vgel/025ad6af9ac7f3bc194966b03ea68606 to your computer and use it in GitHub Desktop.
Save vgel/025ad6af9ac7f3bc194966b03ea68606 to your computer and use it in GitHub Desktop.
# /// script
# dependencies = [ "transformers", "accelerate" ]
# ///
# run on 2xH200 rented from primeintellect.ai
import gc
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
NAME = "meta-llama/Llama-3.3-70B-Instruct"
HISTORY = [
{"role": "user", "content": "Is there a toaster emoji?"},
{"role": "assistant", "content": "Yes, there is a toaster emoji:"}
]
TOPK = 5
tokenizer, model = AutoTokenizer.from_pretrained(NAME), AutoModelForCausalLM.from_pretrained(NAME, device_map="auto")
input_ids = tokenizer(
tokenizer.apply_chat_template(HISTORY, continue_final_message=True, tokenize=False),
return_tensors="pt",
).to(model.device)
model.generate(**input_ids, temperature=0.01, max_new_tokens=3, streamer=TextStreamer(tokenizer))
print()
logit_lens, topk = [], []
for _ in range(3):
generated = torch.tensor([[ll[-1] for ll in logit_lens]]).to(model.device, dtype=input_ids.input_ids.dtype)
out = model(input_ids=torch.hstack((input_ids.input_ids, generated)), output_hidden_states=True)
logit_lens.append([])
topk.append([])
for hidden in out.hidden_states:
ll = torch.log_softmax(model.lm_head(hidden[0, -1, :]), dim=-1)
logit_lens[-1].append(ll.argmax().item())
topk[-1].append(ll.topk(TOPK).indices.tolist())
del out
gc.collect()
torch.cuda.empty_cache()
print(
" | tokens | tokens | token 0\n"
f" | 0 1 2 | (merged) | (topk {TOPK})\n"
"---------|--------------------------------------------------------|---------------------------|--------------------------------------------------------------------------"
)
for i, x in enumerate(zip(*logit_lens)):
if i % 4 == 0:
print(f"Layer {i:>2} | ", end="")
for token in x:
print(f"{token:>7}{tokenizer.convert_ids_to_tokens(token)!r:<10} ", end="")
print(" | ", end="")
print(tokenizer.decode(list(x)).ljust(25), end = " | ")
print([tokenizer.convert_ids_to_tokens(j) for j in topk[0][i]])
print()
<|begin_of_text|><|begin_of_text|><|start_header_id|>system<|end_header_id|>
Cutting Knowledge Date: December 2023
Today Date: 26 Jul 2024
<|eot_id|><|start_header_id|>user<|end_header_id|>
Is there a fish emoji?<|eot_id|><|start_header_id|>assistant<|end_header_id|>
Yes, there is a fish emoji: 🐟
| tokens | tokens | token 0
| 0 1 2 | (merged) | (topk 5)
---------|--------------------------------------------------------|---------------------------|--------------------------------------------------------------------------
Layer 0 | 83244'ĠBail' 15591'ĠHarr' 5309'Ġvert' | Bail Harr vert | ['ĠBail', 'ĠPeanut', 'ĠãĢ', 'orr', 'ĠâĢĭâĢĭ']
Layer 4 | 90450'ĠOswald' 26140'abi' 25727'avery' | Oswaldabiavery | ['ĠOswald', 'Ġunm', 'emez', 'api', 'rix']
Layer 8 | 122029'chyb' 44465'ĠCaps' 15610'iller' | chyb Capsiller | ['chyb', '...', 'ترÛĮ', 'ĠSund', 'resse']
Layer 12 | 1131'...' 48952'ĠCliff' 51965'ĠJackie' | ... Cliff Jackie | ['...', 'ages', 'dump', 'qing', 'Ġexp']
Layer 16 | 1131'...' 12676'365' 65615'ĠSole' | ...365 Sole | ['...', '...Ċ', 'Ġboth', 'Ġindeed', 'ĠYes']
Layer 20 | 1131'...' 109596'éļĨ' 51965'ĠJackie' | ...隆 Jackie | ['...', 'Z', '...Ċ', 'Ġboth', 'ĠLear']
Layer 24 | 12'-' 31643'ï¸ı' 51965'ĠJackie' | -️ Jackie | ['-', '...', 'â̦', 'em', '...Ċ']
Layer 28 | 1131'...' 96154'ĠGaut' 51965'ĠJackie' | ... Gaut Jackie | ['...', '-', 'ĠCold', '-Ċ', '...Ċ']
Layer 32 | 1131'...' 96154'ĠGaut' 88'y' | ... Gauty | ['...', 'â̦', '...Ċ', 'O', 'u']
Layer 36 | 220'Ġ' 12'-' 88'y' | -y | ['Ġ', '...', 'â̦', '...Ċ', 'u']
Layer 40 | 220'Ġ' 6"'" 7795'Ġfish' | 'fish | ['Ġ', '...', 'â̦', 'Âł', 'u']
Layer 44 | 7795'Ġfish' 7795'Ġfish' 7795'Ġfish' | fish fish fish | ['Ġfish', 'ĠFish', 'Fish', 'u', 'Âł']
Layer 48 | 7795'Ġfish' 7795'Ġfish' 7795'Ġfish' | fish fish fish | ['Ġfish', 'ĠFish', 'ĠBerk', 'â̦', 'Âł']
Layer 52 | 7795'Ġfish' 7795'Ġfish' 7795'Ġfish' | fish fish fish | ['Ġfish', 'ĠFish', 'Fish', 'fish', 'é±¼']
Layer 56 | 7795'Ġfish' 7795'Ġfish' 7795'Ġfish' | fish fish fish | ['Ġfish', 'ĠFish', 'fish', 'Fish', 'é±¼']
Layer 60 | 7795'Ġfish' 7795'Ġfish' 39739'Ġcarp' | fish fish carp | ['Ġfish', 'ĠPis', 'ĠFish', 'ĠÙħاÙĩ', 'ĠCarp']
Layer 64 | 7795'Ġfish' 238'IJ' 7795'Ġfish' | fish� fish | ['Ġfish', 'ĠFish', 'ĠPis', 'Fish', 'ĠÙħاÙĩ']
Layer 68 | 7795'Ġfish' 238'IJ' 7795'Ġfish' | fish� fish | ['Ġfish', 'ĠFish', 'ĠPis', 'ĠAtl', 'ĠðŁ']
Layer 72 | 7795'Ġfish' 238'IJ' 253'Ł' | fish�� | ['Ġfish', 'ĠFish', 'ĠðŁ', 'Ġ', 'ÂŁ']
Layer 76 | 220'Ġ' 238'IJ' 253'Ł' | �� | ['Ġ', 'Ġfish', 'ĠFish', 'ĠðŁ', 'Âł']
Layer 80 | 11410'ĠðŁ' 238'IJ' 253'Ł' | 🐟 | ['ĠðŁ', 'ðŁ', 'Ġ', 'ĠĊĊ', 'ĠâĻ']
<|begin_of_text|><|begin_of_text|><|start_header_id|>system<|end_header_id|>
Cutting Knowledge Date: December 2023
Today Date: 26 Jul 2024
<|eot_id|><|start_header_id|>user<|end_header_id|>
Is there a seahorse emoji?<|eot_id|><|start_header_id|>assistant<|end_header_id|>
Yes, there is a seahorse emoji: 🐠
| tokens | tokens | token 0
| 0 1 2 | (merged) | (topk 5)
---------|--------------------------------------------------------|---------------------------|--------------------------------------------------------------
------------
Layer 0 | 83244'ĠBail' 15591'ĠHarr' 5309'Ġvert' | Bail Harr vert | ['ĠBail', 'ĠPeanut', 'ĠãĢ', 'orr', 'ĠâĢĭâĢĭ']
Layer 4 | 111484'emez' 26140'abi' 25727'avery' | emezabiavery | ['emez', 'Ġunm', 'ĠOswald', 'Ġrem', 'rix']
Layer 8 | 122029'chyb' 44465'ĠCaps' 15610'iller' | chyb Capsiller | ['chyb', 'ĠSund', 'ترÛĮ', 'resse', 'Ġsod']
Layer 12 | 1131'...' 48952'ĠCliff' 51965'ĠJackie' | ... Cliff Jackie | ['...', 'ages', 'dump', 'qing', 'Ġexp']
Layer 16 | 1131'...' 12676'365' 31447'ĠAld' | ...365 Ald | ['...', '...Ċ', 'Ġindeed', 'Ġboth', 'ĠYes']
Layer 20 | 1131'...' 109596'éļĨ' 51965'ĠJackie' | ...隆 Jackie | ['...', '...Ċ', 'Z', 'Ġboth', 'ĠHust']
Layer 24 | 12'-' 31643'ï¸ı' 287'ing' | -️ing | ['-', '...', 'â̦', '...Ċ', 'em']
Layer 28 | 1131'...' 96154'ĠGaut' 51965'ĠJackie' | ... Gaut Jackie | ['...', '-', '...Ċ', '-Ċ', 'Ġ']
Layer 32 | 1131'...' 96154'ĠGaut' 6892'Ġing' | ... Gaut ing | ['...', 'â̦', '...Ċ', 'O', 'zer']
Layer 36 | 1131'...' 12'-' 88'y' | ...-y | ['...', 'â̦', '...Ċ', 'Ġ', 'u']
Layer 40 | 1131'...' 31643'ï¸ı' 88'y' | ...️y | ['...', 'u', 'â̦', 'Âł', '...Ċ']
Layer 44 | 80435'ĠScor' 15580'Ġhorse' 15580'Ġhorse' | Scor horse horse | ['ĠScor', 'u', 'ĠPan', 'in', 'Ġhttps']
Layer 48 | 15580'Ġhorse' 15580'Ġhorse' 15580'Ġhorse' | horse horse horse | ['Ġhorse', 'Âł', 'ĠPan', 'ĠHomes', 'ĠHorse']
Layer 52 | 9581'Ġsea' 15580'Ġhorse' 15580'Ġhorse' | sea horse horse | ['Ġsea', 'Ġhorse', 'ĠHorse', 'ĠSea', 'âĢij']
Layer 56 | 9581'Ġsea' 43269'ĠSeah' 15580'Ġhorse' | sea Seah horse | ['Ġsea', 'ĠSea', 'ĠSeah', 'Ġhippoc', 'Ġhorse']
Layer 60 | 15580'Ġhorse' 15580'Ġhorse' 15580'Ġhorse' | horse horse horse | ['Ġhorse', 'Ġsea', 'ĠSeah', 'Ġse', 'horse']
Layer 64 | 15580'Ġhorse' 15580'Ġhorse' 15580'Ġhorse' | horse horse horse | ['Ġhorse', 'Ġse', 'ĠHorse', 'horse', 'Ġhors']
Layer 68 | 60775'horse' 238'IJ' 15580'Ġhorse' | horse� horse | ['horse', 'Ġse', 'Ġhorse', 'Ġhippoc', 'ĠSeah']
Layer 72 | 513'Ġse' 238'IJ' 513'Ġse' | se� se | ['Ġse', 'Ġhippoc', 'horse', 'ĠðŁ', 'Ġhorse']
Layer 76 | 513'Ġse' 238'IJ' 513'Ġse' | se� se | ['Ġse', 'Ġhippoc', 'hip', 'Ġhorse', 'ĠHipp']
Layer 80 | 11410'ĠðŁ' 238'IJ' 254'ł' | 🐠 | ['ĠðŁ', 'ðŁ', 'ĠðŁĴ', 'Ġ', 'ĠðŁij']
<|begin_of_text|><|begin_of_text|><|start_header_id|>system<|end_header_id|>
Cutting Knowledge Date: December 2023
Today Date: 26 Jul 2024
<|eot_id|><|start_header_id|>user<|end_header_id|>
Is there a toaster emoji?<|eot_id|><|start_header_id|>assistant<|end_header_id|>
Yes, there is a toaster emoji: 🍞
| tokens | tokens | token 0
| 0 1 2 | (merged) | (topk 5)
---------|--------------------------------------------------------|---------------------------|--------------------------------------------------------------------------
Layer 0 | 83244'ĠBail' 15591'ĠHarr' 19148'angan' | Bail Harrangan | ['ĠBail', 'ĠPeanut', 'ĠãĢ', 'orr', 'ĠâĢĭâĢĭ']
Layer 4 | 90450'ĠOswald' 26140'abi' 95937'ĠDeadly' | Oswaldabi Deadly | ['ĠOswald', 'rix', 'emez', 'Ġunm', 'api']
Layer 8 | 122029'chyb' 90970'ĠMcKay' 15385'ĠJac' | chyb McKay Jac | ['chyb', 'ĠSund', '...', 'ise', 'resse']
Layer 12 | 1131'...' 48952'ĠCliff' 19091'Ġdual' | ... Cliff dual | ['...', 'ages', 'dump', 'Ġexp', 'qing']
Layer 16 | 1131'...' 12676'365' 65964'immel' | ...365immel | ['...', '...Ċ', 'Ġindeed', 'Ġboth', 'ĠHill']
Layer 20 | 1131'...' 109596'éļĨ' 67'd' | ...隆d | ['...', '...Ċ', 'Z', 'Ġboth', 'Ġindeed']
Layer 24 | 12'-' 31643'ï¸ı' 31643'ï¸ı' | -️️ | ['-', '...', 'â̦', '...Ċ', '!']
Layer 28 | 1131'...' 31643'ï¸ı' 31643'ï¸ı' | ...️️ | ['...', '-', 'Ġ', '...Ċ', '(']
Layer 32 | 1131'...' 59850'ĠBrennan' 31643'ï¸ı' | ... Brennan️ | ['...', 'â̦', '...Ċ', 'zer', 'O']
Layer 36 | 1131'...' 31643'ï¸ı' 267'st' | ...️st | ['...', '...Ċ', 'Ġ', 'â̦', "'"]
Layer 40 | 84'u' 31643'ï¸ı' 267'st' | u️st | ['u', 'â̦', '...', 'Ġ', 'ĠDen']
Layer 44 | 9806'ĠToast' 31643'ï¸ı' 267'st' | Toast️st | ['ĠToast', 'Ġtoast', 'Toast', 'toast', 'Ġbread']
Layer 48 | 23211'Ġtoast' 23211'Ġtoast' 16385'Ġbread' | toast toast bread | ['Ġtoast', 'ĠToast', 'toast', 'Toast', 'Ġbread']
Layer 52 | 23211'Ġtoast' 23211'Ġtoast' 16385'Ġbread' | toast toast bread | ['Ġtoast', 'ĠToast', 'Toast', 'toast', 'Ġhttps']
Layer 56 | 23211'Ġtoast' 23211'Ġtoast' 23211'Ġtoast' | toast toast toast | ['Ġtoast', 'ĠToast', 'Toast', 'toast', 'Ġtoaster']
Layer 60 | 23211'Ġtoast' 23211'Ġtoast' 23211'Ġtoast' | toast toast toast | ['Ġtoast', 'ĠToast', 'Toast', 'toast', '.toast']
Layer 64 | 23211'Ġtoast' 23211'Ġtoast' 23211'Ġtoast' | toast toast toast | ['Ġtoast', 'ĠToast', 'Toast', 'toast', 'Ġbread']
Layer 68 | 9806'ĠToast' 23211'Ġtoast' 23211'Ġtoast' | Toast toast toast | ['ĠToast', 'Ġtoast', 'Toast', 'toast', 'ĠBread']
Layer 72 | 9806'ĠToast' 235'į' 252'ŀ' | Toast�� | ['ĠToast', 'Ġhttps', 'ĠBread', 'sen', 'ĠðŁ']
Layer 76 | 220'Ġ' 235'į' 252'ŀ' | �� | ['Ġ', 'ĠðŁ', 'Ġhttps', 'ĠToast', 'To']
Layer 80 | 11410'ĠðŁ' 235'į' 252'ŀ' | 🍞 | ['ĠðŁ', 'Ġâ', 'ðŁ', 'ĠðŁĶ', 'ĠðŁĴ']
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment