加载和使用预训练模型

一、什么是预训练模型?

预训练模型是指在海量数据上提前训练好的模型,可以直接用于下游任务,如情感分类、问答、文本生成等,节省训练时间,提升精度

典型模型包括:

  • BERT:适合分类、问答、抽取任务

  • GPT:适合文本生成、对话

  • RoBERTa、DistilBERT、T5、XLNet、ERNIE

二、安装 Hugging Face Transformers 库

在命令行中输入:

pip install transformers

还可搭配:

pip install torch

三、加载预训练模型与分词器

下面以 bert-base-uncased 为例:

1. 加载 Tokenizer(分词器)

from transformers import BertTokenizer

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

2. 加载预训练模型(无下游任务头)

from transformers import BertModel

model = BertModel.from_pretrained('bert-base-uncased')

这时模型已准备好,可用于提取语义特征。

四、输入编码与输出获取

import torch

text = "Transformers are powerful models."
inputs = tokenizer(text, return_tensors="pt")

with torch.no_grad():
    outputs = model(**inputs)

print(outputs.last_hidden_state.shape)  # [batch_size, seq_len, hidden_dim]

其中:

  • inputs: 包含 input_ids、attention_mask

  • outputs.last_hidden_state: 每个 token 的语义向量

五、使用 BERT 做分类(有下游任务头)

from transformers import BertForSequenceClassification

model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)

inputs = tokenizer("I love AI.", return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits

predicted = torch.argmax(logits, dim=1)
print("预测标签:", predicted.item())

此模型在预训练 BERT 上加了一个线性分类层,可直接 fine-tune 用于二分类任务。

六、加载中文预训练模型

以哈工大 BERT 为例:

from transformers import BertTokenizer, BertModel

tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
model = BertModel.from_pretrained('bert-base-chinese')

inputs = tokenizer("今天天气不错。", return_tensors="pt")
outputs = model(**inputs)

七、如何微调(finetune)

在自有数据集上进行训练,需要使用 TrainerTrainer + Dataset 结构:

from transformers import Trainer, TrainingArguments

training_args = TrainingArguments(output_dir="./results", num_train_epochs=3)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset
)

trainer.train()

 train_dataseteval_dataset 可用 datasets 库加载如 GLUE、SST-2、MNLI 等,也可自定义。

八、文本生成模型的加载与使用(以 GPT2 为例)

from transformers import GPT2LMHeadModel, GPT2Tokenizer

tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = GPT2LMHeadModel.from_pretrained("gpt2")

input_ids = tokenizer("Once upon a time", return_tensors="pt").input_ids
outputs = model.generate(input_ids, max_new_tokens=50)

print(tokenizer.decode(outputs[0], skip_special_tokens=True))

九、快速总结:常见模型一览

模型适用方向任务示例
BERT编码器模型分类、问答、抽取
RoBERTa强化版 BERT同上
DistilBERT轻量版 BERT快速推理
GPT2/GPT3/GPT4解码器模型文本生成、对话
T5编码器-解码器文本摘要、翻译

十、结语

通过预训练模型 + Transformers 工具库,即使没有强大的计算资源,也可以利用大模型完成高质量的 NLP 任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

00&00

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值