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}")