拥抱面变压器 API 简要摘要
一、说明
Hugging Face 的变压器库提供了广泛的 API,可用于处理各种 NLP 任务的预训练变压器模型。在本教程中,我们将探讨主要 API 并提供示例来帮助你了解它们的用法。
二、导入模型
1. 分词器接口:
分词器 API 用于预处理文本数据,并将其标记为转换器模型的输入特征。
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
text = "Hello, how are you?"
encoded_input = tokenizer(text, padding=True, truncation=True, return_tensors="pt")
print(encoded_input)
2. 模型接口:
模型 API 允许您为各种 NLP 任务加载预先训练的转换器模型。
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=2)
outputs = model(**encoded_input)
print(outputs)
3. 管道接口:
管道 API 简化了将预训练模型用于特定任务(如文本生成、问答、情绪分析等)的过程。
from transformers import pipeline
text_generation = pipeline("text-generation", model="gpt2")
generated_text = text_generation("Once upon a time")
print(generated_text)
三、训练过程
4. 培训师接口:
训练器 API 可帮助您针对特定任务在自定义数据集上微调预训练的模型。
from transformers import Trainer, TrainingArguments
training_args = TrainingArguments("fine_tuned_model")
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
data_collator=data_collator,
)
trainer.train()
5. 数据集接口:
数据集 API 允许您为 NLP 任务加载和预处理各种数据集。
from datasets import load_dataset
dataset = load_dataset("glue", "sst2")
print(dataset)
6. 评估接口:
评估 API 可帮助您计算模型预测的评估指标。
from datasets import load_metric
metric = load_metric("accuracy")
predictions = model.predict(test_dataset)
accuracy = metric.compute(predictions=predictions["predictions"], references=predictions["labels"])
print(accuracy)
7. 使用自定义指标进行微调:
您可以为培训师 API 定义自己的自定义指标。
from datasets import load_metric
metric = load_metric("accuracy")
predictions = model.predict(test_dataset)
accuracy = metric.compute(predictions=predictions["predictions"], references=predictions["labels"])
print(accuracy)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
data_collator=data_collator,
compute_metrics=compute_custom_metrics,
)
trainer.train()
四、训练模型存取
8. 从检查点加载模型:
您可以加载预先训练的模型检查点并恢复训练或将其用于推理。
model_checkpoint = "fine_tuned_model/checkpoint-1000"
loaded_model = AutoModelForSequenceClassification.from_pretrained(model_checkpoint)
9. 模型推理:
加载模型后,您可以使用它对新数据进行推理。
new_text = "This is a new text to classify"
encoded_input = tokenizer(new_text, padding=True, truncation=True, return_tensors="pt")
outputs = loaded_model(**encoded_input)
print(outputs)
五、训练模型序列化
10. 模型序列化:
可以使用 and 方法保存和加载预先训练的模型。.save_pretrained()
.from_pretrained()
loaded_model.save_pretrained("saved_model")
reloaded_model = AutoModelForSequenceClassification.from_pretrained("saved_model")
通过探索这些 API,您可以利用拥抱面变压器的强大功能来预处理数据、微调模型、执行推理并评估各种 NLP 任务的性能。该图书馆的灵活性和广泛的文档使其成为NLP从业者和研究人员的宝贵资源 拉克什·拉杰普罗希特