File size: 1,921 Bytes
c0a2ac4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from huggingface_hub import model_info

from openmodellab.genome.inspectors.tokenizer import inspect_tokenizer

from openmodellab.genome.inspectors.hardware import inspect_hardware

from openmodellab.genome.inspectors.fingerprint import inspect_fingerprint

from datetime import datetime, UTC

from openmodellab.genome.inspectors.precision import inspect_precision

from openmodellab.genome.inspectors.execution import inspect_execution


def count_parameters(model):
    return sum(p.numel() for p in model.parameters())


def inspect_model(model_name, model):
    cfg = model.config
    info = model_info(model_name)

    return {
        "model_name": model_name,
        "architecture": model.__class__.__name__,
        "model_type": getattr(cfg, "model_type", None),
        "hidden_size": getattr(cfg, "hidden_size", None),
        "num_hidden_layers": getattr(cfg, "num_hidden_layers", None),
        "num_attention_heads": getattr(cfg, "num_attention_heads", None),
        "intermediate_size": getattr(cfg, "intermediate_size", None),
        "max_position_embeddings": getattr(cfg, "max_position_embeddings", None),
        "parameter_count": count_parameters(model),
        "dtype": str(next(model.parameters()).dtype),
        "framework": "transformers",
        "license": info.card_data.get("license") if info.card_data else None,
    }


def analyze_model(model_name, model, tokenizer):
    return {
         "report": {
            "tool": "OpenModelLab",
            "tool_version": "0.1.0-alpha",
            "schema_version": "1.0",
            "generated_at": datetime.now(UTC).isoformat(),
        },   
        "model": inspect_model(model_name, model),
        "tokenizer": inspect_tokenizer(tokenizer),
        "hardware": inspect_hardware(),
        "fingerprint": inspect_fingerprint(model),
        "precision": inspect_precision(model),
        "execution": inspect_execution(model),
    }