ducanhdinh/jepa_proof_vicreg_replace
0
ducanhdinh/jepaproofvicreg_replace
BERT encoder pretrained from scratch với VICReg + Lexical Substitution augmentation.
Augmentation strategy
Thay vì span masking, model này dùng lexical substitution để tạo view 2:
Quá trình tạo view 2 được thực hiện offline 1 lần trước khi train, không gọi BERT thêm lần nào trong vòng lặp training.
Kiến trúc VICReg
Text → BERT (mean-pool) → z ∈ R^768 → Expander MLP → z' ∈ R^3072
↑ VICReg loss áp dụng tại đâyExpander gồm 3 lớp Linear-BatchNorm-ReLU (dim = 3072).
Thông số huấn luyện
Cách dùng — BERT encoder (feature extraction)
from transformers import BertModel, BertTokenizerFast
import torch
tokenizer = BertTokenizerFast.from_pretrained("ducanhdinh/jepa_proof_vicreg_replace")
bert = BertModel.from_pretrained("ducanhdinh/jepa_proof_vicreg_replace/encoder")
encoded = tokenizer(
["Hello world!", "VICReg with lexical substitution."],
return_tensors="pt",
padding=True,
truncation=True,
)
with torch.no_grad():
out = bert(**encoded)
hidden = out.last_hidden_state # (B, T, 768)
mask = encoded["attention_mask"].unsqueeze(-1).float()
emb = (hidden * mask).sum(1) / mask.sum(1).clamp(min=1) # mean-pool → (B, 768)Cách dùng — Full model (encoder + expander)
import torch
from text_vicreg_replace import TextVICRegReplace, VICRegReplacePretrainConfig
cfg = VICRegReplacePretrainConfig()
model = TextVICRegReplace(cfg)
state = torch.load(
hf_hub_download("ducanhdinh/jepa_proof_vicreg_replace", "pytorch_model.bin"),
map_location="cpu",
)
model.load_state_dict(state)
model.eval()