"""
预训练模型使用总结:
1- pipeline管道:
优点:代码开发非常简单
缺点:底层高度封装,可调整的超参数少
使用:一般用来快速验证预训练模型/大模型是否满足业务需求
2- AutoModel自动模型:
优点:代码相对比较简单,有一定可以可调整的超参数
缺点:相对具体模型来说,可调整的超参数相对较少
3- 指定模型:
优点:可调整的超参数很多,能够针对具体的大模型进行指定参数的微调。每种大模型的可调整的参数都是不一样
缺点:比较灵活,不同的大模型可调整的参数有区别
使用:针对业务场景需要比较高的情况,推荐使用
后续课程:LoRA、QLoRA
"""
import torch
from transformers import BertTokenizer
from transformers import BertForMaskedLM
if __name__ == '__main__':
# 1- 创建模型的实例对象
model_path = r"D:\soft\PretrainedModel\bert-base-chinese"
# 创建词汇映射器
tokenizer = BertTokenizer.from_pretrained(model_path)
model = BertForMaskedLM.from_pretrained(model_path)
# 2- 准备数据
content = "我想明天去[MASK]家吃饭"
# 3- 处理数据
data_tensor = tokenizer.encode_plus(text=content,return_tensors="pt")
# 4- 调用模型
model.eval()
result = model(**data_tensor)
# 5- 结果解析
# 5.1- 获得预测概率词最高的词索引
pred_word_index = torch.argmax(result.logits[0][6]).item()
# 5.2- 词索引转成词
pred_word = tokenizer.convert_ids_to_tokens(pred_word_index)
# 5.3- 输出
print(f"填充词的索引:{pred_word_index},对应内容:{pred_word}")