LLM 基础-transformers 库快速入门
发布人:shili8
发布时间:2025-03-13 13:44
阅读次数:0
**LLM 基础 - transformers 库快速入门**
**前言**
transformers 是一个用于自然语言处理 (NLP) 的深度学习库,提供了许多预训练模型和工具来帮助开发者快速构建 NLP 应用程序。这个教程将指导你如何使用 transformers 库进行基本的 NLP任务。
**安装 transformers 库**
首先,我们需要安装 transformers 库。如果你已经安装过 PyTorch 和 torch torchvision,那么可以直接安装 transformers 库:
bashpip install transformers
如果你还没有安装 PyTorch 和 torch torchvision,可以使用以下命令安装:
bashconda install pytorch torchvision -c conda-forgepip install transformers
**导入必要的库**
在开始编程之前,我们需要导入必要的库:
import torchfrom transformers import AutoModelForSequenceClassification, AutoTokenizer
**预训练模型和tokenizer**
transformers 库提供了许多预训练模型和tokenizer,可以直接使用这些预训练模型和tokenizer来进行 NLP任务。例如,我们可以使用 BERT 预训练模型和tokenizer:
model_name = "bert-base-uncased" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)
**数据准备**
在进行 NLP任务之前,我们需要准备好我们的数据。例如,我们可以使用以下代码来读取一个 CSV 文件:
import pandas as pddf = pd.read_csv("data.csv")
**模型训练**
现在我们已经准备好了数据和预训练模型,我们就可以开始训练模型了。我们可以使用以下代码来训练模型:
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model.to(device) criterion = torch.nn.CrossEntropyLoss() optimizer = torch.optim.Adam(model.parameters(), lr=1e-5) for epoch in range(5): model.train() for batch in train_dataloader: input_ids, attention_mask, labels = batch input_ids, attention_mask, labels = input_ids.to(device), attention_mask.to(device), labels.to(device) optimizer.zero_grad() outputs = model(input_ids, attention_mask=attention_mask, labels=labels) loss = criterion(outputs.logits, labels) loss.backward() optimizer.step() model.eval()
**模型评估**
现在我们已经训练好了模型,我们就可以开始评估模型了。我们可以使用以下代码来评估模型:
model.eval() test_loss =0correct =0with torch.no_grad(): for batch in test_dataloader: input_ids, attention_mask, labels = batch input_ids, attention_mask, labels = input_ids.to(device), attention_mask.to(device), labels.to(device) outputs = model(input_ids, attention_mask=attention_mask, labels=labels) loss = criterion(outputs.logits, labels) test_loss += loss.item() _, predicted = torch.max(outputs.logits, dim=1) correct += (predicted == labels).sum().item() accuracy = correct / len(test_dataloader.dataset) print(f"Test Loss: {test_loss / len(test_dataloader)}") print(f"Accuracy: {accuracy:.2f}")
**总结**
在本教程中,我们使用 transformers 库快速入门进行了 NLP任务的基本操作。我们使用 BERT 预训练模型和tokenizer,准备数据,训练模型,并评估模型。希望这个教程能够帮助你开始使用 transformers 库进行 NLP任务。