请问语言模型Chinese-LLaMA-Alpaca有微调文本分类任务的样例代码吗?

2023-05-16 阅读 184

是的,以下是使用Chinese-LLaMA-Alpaca进行微调文本分类任务的样例代码:

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日