Views
No views yet
pip install -U transformers torch1from transformers import AutoTokenizer, AutoModel
2import torch
3
4repo_id = "ZoeYou/jepa_lr5e-06_plr0.0001_bs512_tgt512_ema0.996_sigreg0.001_norm_pdim4096_mean_docs5000000"
5device = "cuda" if torch.cuda.is_available() else "cpu"
6
7# Load encoder
8tokenizer = AutoTokenizer.from_pretrained(repo_id)
9model = AutoModel.from_pretrained(repo_id).to(device).eval()
10
11# Mean pooling over non-padding tokens (same logic as project eval script)
12def encode(texts, max_length=512):
13 inputs = tokenizer(
14 texts,
15 padding=True,
16 truncation=True,
17 max_length=max_length,
18 return_tensors="pt",
19 ).to(device)
20 with torch.no_grad():
21 out = model(**inputs)
22 mask = inputs["attention_mask"].unsqueeze(-1).float()
23 emb = (out.last_hidden_state * mask).sum(dim=1) / mask.sum(dim=1).clamp(min=1e-12)
24 emb = torch.nn.functional.normalize(emb, p=2, dim=1)
25 return emb
26
27sep = tokenizer.sep_token
28def build_paper_text(title, abstract):
29 title = (title or "").strip()
30 abstract = (abstract or "").strip()
31 return f"{title} {sep} {abstract}" if title and abstract else (title or abstract)
32
33query = build_paper_text(
34 "Scientific paper retrieval with domain adaptation",
35 "We study representation learning methods for scientific document retrieval.",
36)
37docs = [
38 build_paper_text("Dense retrieval for scientific literature", "A dual-encoder approach for citation recommendation."),
39 build_paper_text("Patent semantic search with transformer encoders", "Cross-domain transfer from papers to patents."),
40 build_paper_text("Protein folding with large language models", "Large-scale sequence modeling for structure prediction."),
41]
42
43q = encode([query])
44d = encode(docs)
45scores = (d @ q.T).squeeze(-1)
46print(scores)