Views
No views yet
input_ids, attention_mask)hidden_dim with L2 normalizationcos(a, b) = embedding(a) · embedding(b)Notebooks/Training.ipynb:vocab_size: 30522seq_len: 128hidden_dim: 512n_heads: 8n_layer: 3ff_dim: 2048eps: 1e-5dropout: 0.1loss = max(0, sim(anchor, negative) - sim(anchor, positive) + margin)checkpoints/checkpoint.pt: training checkpoint (model, optimizer, losses, and configs)checkpoints/model.safetensors: weights-only export for inference1import torch
2from transformers import AutoTokenizer
3from safetensors.torch import load_file
4
5from Architecture import EmbeddingModel, ModelConfig
6
7device = "cuda" if torch.cuda.is_available() else "cpu"
8
9state_dict = load_file("checkpoints/model.safetensors")
10
11cfg = ModelConfig(
12 vocab_size=30522,
13 seq_len=128,
14 hidden_dim=512,
15 n_heads=8,
16 n_layer=3,
17 eps=1e-5,
18 ff_dim=2048,
19 dropout=0.1,
20)
21
22model = EmbeddingModel(cfg).to(device)
23model.load_state_dict(state_dict)
24model.eval()
25
26tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
27
28def embed(texts):
29 enc = tokenizer(
30 texts,
31 padding=True,
32 truncation=True,
33 max_length=128,
34 return_tensors="pt",
35 )
36 enc = {k: v.to(device) for k, v in enc.items()}
37 with torch.no_grad():
38 return model(enc["input_ids"], enc["attention_mask"]) # normalized
39
40def cosine_similarity(a, b):
41 ea = embed([a])[0]
42 eb = embed([b])[0]
43 return float((ea * eb).sum().item())bert-base-uncased) and the same max_length=128 (or keep seq_len and preprocessing consistent).