| """加载 BERTc 骨干做掩码语言建模。""" | |
| import torch | |
| from model import ModernBertConfig, ModernBertForMLM # noqa: F401 | |
| from tokenizer import PieceCharTokenizer | |
| import json | |
| from checkpoint import load_safetensors | |
| def load_bertc(model_dir="."): | |
| with open(f"{model_dir}/config.json") as f: | |
| cfg = ModernBertConfig.from_dict(json.load(f)) | |
| model = ModernBertForMLM(cfg) | |
| model.load_state_dict(load_safetensors(f"{model_dir}/model.safetensors"), strict=True) | |
| model.eval() | |
| return model | |
| if __name__ == "__main__": | |
| tok = PieceCharTokenizer(".") | |
| model = load_bertc(".") | |
| text = "北京是中国的首都" | |
| ids = torch.tensor([tok.encode(text)], dtype=torch.long) | |
| ids[0, 2] = tok.mask_token_id # 把"是"盖住 | |
| with torch.no_grad(): | |
| logits = model(ids)["logits"] | |
| pred = int(logits[0, 2].argmax()) | |
| print(f"{text} → 第 3 个字预测为 {tok.id_to_char(pred)!r}") | |