请问语言模型Chinese-LLaMA-Alpaca有微调文本分类任务的样例代码吗?
2023-05-16 阅读 171
是的,以下是使用Chinese-LLaMA-Alpaca进行微调文本分类任务的样例代码:
```python
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
# 加载模型和分词器
model_name = "hfl/chinese-llama-alpaca"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2) # 二分类任务
# 加载数据
train_texts = ["这是正样本", "这也是正样本", "这是负样本", "这也是负样本"]
train_labels = [1, 1, 0, 0]
# 分词
train_encodings = tokenizer(train_texts, truncation=True, padding=True)
# 构建Dataset对象
class MyDataset(torch.utils.data.Dataset):
def __init__(self, encodings, labels):
self.encodings = encodings
self.labels = labels
def __getitem__(self, idx):
item = {key: torch.tensor(val[idx]) for key, val in self.encodings.items()}
item['labels'] = torch.tensor(self.labels[idx])
return item
def __len__(self):
return len(self.labels)
train_dataset = MyDataset(train_encodings, train_labels)
# 设置训练参数
training_args = TrainingArguments(
output_dir='./results',
num_train_epochs=3,
per_device_train_batch_size=16,
per_device_eval_batch_size=64,
warmup_steps=500,
weight_decay=0.01,
logging_dir='./logs',
logging_steps=10,
evaluation_strategy='steps',
eval_steps=50,
load_best_model_at_end=True
)
# 训练模型
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
data_collator=default_data_collator,
compute_metrics=compute_metrics
)
trainer.train()
```
在上面的代码中,我们首先加载了Chinese-LLaMA-Alpaca模型和分词器。然后,我们加载了训练数据,对训练数据进行了分词,并将其转换为Dataset对象。接下来,我们设置了训练参数,并使用Trainer对象来训练模型。最后,我们可以使用训练好的模型来进行文本分类任务。
需要注意的是,上面的代码仅为示例代码,实际使用时需要根据自己的数据和任务进行修改。
更新于 2023年05月22日