Spaces:
Sleeping
Sleeping
File size: 2,969 Bytes
3c24019 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | """
Inspect config.json fields and attention weight key names for new model families.
Run this before modifying model_registry.py to confirm architecture parameters.
Usage:
conda run -n llm-work python scripts/inspect_new_models.py
"""
from huggingface_hub import hf_hub_download, snapshot_download
from safetensors import safe_open
import json
import os
MODELS_TO_CHECK = [
# OLMo 2
"allenai/OLMo-2-0425-1B",
"allenai/OLMo-2-1124-7B",
"allenai/OLMo-2-1124-13B",
"allenai/OLMo-2-0325-32B",
# Llama 3.2 (gated — requires HUGGING_FACE_HUB_TOKEN)
"meta-llama/Llama-3.2-1B",
"meta-llama/Llama-3.2-3B",
# Gemma 2 (gated — requires HUGGING_FACE_HUB_TOKEN)
"google/gemma-2-2b",
"google/gemma-2-9b",
# SmolLM2
"HuggingFaceTB/SmolLM2-135M-Instruct",
"HuggingFaceTB/SmolLM2-360M-Instruct",
"HuggingFaceTB/SmolLM2-1.7B-Instruct",
]
CONFIG_KEYS = [
"model_type",
"hidden_size",
"num_hidden_layers",
"num_attention_heads",
"num_key_value_heads",
"head_dim",
"attention_bias",
]
print("=" * 70)
print("Step 1: config.json fields")
print("=" * 70)
for slug in MODELS_TO_CHECK:
try:
path = hf_hub_download(repo_id=slug, filename="config.json")
with open(path) as f:
cfg = json.load(f)
print(f"\n{slug}")
for key in CONFIG_KEYS:
print(f" {key:30s}: {cfg.get(key, 'NOT PRESENT')}")
except Exception as e:
print(f"\n{slug} ERROR: {e}")
print("\n\n" + "=" * 70)
print("Step 2: attention weight key names (one family at a time)")
print("=" * 70)
# Inspect one model per family — edit SLUG_TO_INSPECT and re-run as needed
SLUG_TO_INSPECT = "allenai/OLMo-2-0425-1B"
try:
cache = snapshot_download(SLUG_TO_INSPECT)
st_files = sorted(f for f in os.listdir(cache) if f.endswith(".safetensors"))
if not st_files:
print(f"No safetensors found in {cache}")
else:
print(f"\nWeight keys for {SLUG_TO_INSPECT} — layer 0 attention:")
with safe_open(os.path.join(cache, st_files[0]), framework="pt", device="cpu") as f:
all_keys = list(f.keys())
layer0_attn_keys = [
k for k in all_keys
if ("layers.0" in k or "h.0" in k or "blocks.0" in k)
and any(x in k for x in ["attn", "attention", "q_proj", "k_proj",
"query", "key", "qkv", "self_attn"])
]
if not layer0_attn_keys:
layer0_attn_keys = [k for k in all_keys if ".0." in k]
with safe_open(os.path.join(cache, st_files[0]), framework="pt", device="cpu") as f:
for k in sorted(layer0_attn_keys):
try:
t = f.get_tensor(k)
print(f" {k:70s} {tuple(t.shape)}")
except Exception:
print(f" {k:70s} (not in this shard)")
except Exception as e:
print(f"ERROR inspecting {SLUG_TO_INSPECT}: {e}")
|