File size: 1,365 Bytes
2049fc8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import sys

sys.path.insert(0, "/tmp/opencode/tl")
import numpy as np
import torch

import int4hf as H
import mirror3 as M
from export_full import load as load_weights

M.ATT_C, M.PKSH, M.SILU_SH, M.SILU_RND = 66572, 0, 11, False
M.build_tables()

float_m = H.AutoModelForCausalLM.from_pretrained("/tmp/opencode/tl", dtype=torch.float32).eval()
int4_m = H.int4_model()

N = 40


def greedy(model, n):
    ids = torch.tensor([[1]])
    out = []
    with torch.no_grad():
        for _ in range(n):
            lg = model(ids).logits[0, -1]
            t = int(lg.argmax())
            out.append(t)
            ids = torch.cat([ids, torch.tensor([[t]])], 1)
    return out


def mirror_greedy(n):
    st = M.State()
    tok = 1
    out = []
    for pos in range(n):
        lg = M.step(tok, pos, st)
        tok = int(lg.argmax())
        out.append(tok)
    return out


f = greedy(float_m, N)
i4 = greedy(int4_m, N)
mi = mirror_greedy(N)
print("float puro        :", f)
print("int4 pesos float  :", i4)
print("pipeline entero   :", mi)
agree_i4 = next((k for k in range(N) if f[k] != i4[k]), N)
agree_mi = next((k for k in range(N) if f[k] != mi[k]), N)
same = sum(1 for k in range(N) if i4[k] == mi[k])
print(f"float vs int4-float: coinciden {agree_i4}/{N} | float vs pipeline: {agree_mi}/{N}")
print(f"pipeline vs int4-float (fidelidad del kernel): {same}/{N}")