微调大语言模型的七个步骤( 二 )


通过利用map方法对整个数据集进行分词处理,我们很容易做到这一点 。
from transformers import GPT2Tokenizer# Loading the dataset to train our modeldataset = load_dataset("mteb/tweet_sentiment_extraction")tokenizer = GPT2Tokenizer.from_pretrained("gpt2")tokenizer.pad_token = tokenizer.eos_tokendef tokenize_function(examples): return tokenizer(examples["text"], padding="max_length", truncatinotallow=True)tokenized_datasets = dataset.map(tokenize_function, batched=True)为了提高我们的处理性能,生成两个较小的子集:

  • 训练集:用来微调我们的模型 。
  • 测试集:用来评估模型 。
Small_train_dataset = tokenized_datasets["train"].shuffle(seed=42).select(range(1000))Small_eval_dataset = tokenized_datasets["test"].shuffle(seed=42).select(range(1000))第五步:初始化基本模型一旦我们有了要使用的数据集,就加载我们的模型,并指定预期标签的数量 。您可以从推文的情绪数据集知道有三种可能的标签:
  • 0或消极的
  • 1或中性的
  • 2或积极的
from transformers import GPT2ForSequenceClassificationmodel = GPT2ForSequenceClassification.from_pretrained("gpt2", num_labels=3)第六步:评估方法Transformers库提供了一个名为“Trainer”的类 , 它可以优化我们模型的训练和评估 。因此,在实际训练开始之前,我们需要定义一个函数来评估经过微调的模型 。
import evaluatemetric = evaluate.load("accuracy")def compute_metrics(eval_pred): logits, labels = eval_pred predictions = np.argmax(logits, axis=-1) return metric.compute(predictinotallow=predictions, references=labels)第七步:使用Trainer方法进行微调最后一步是微调模型 。为此,我们将一起设置训练参数与评估策略,并执行Trainer对象 。
要执行Trainer对象,我们只需使用train()命令 。
from transformers import TrainingArguments, Trainertraining_args = TrainingArguments( output_dir="test_trainer", #evaluation_strategy="epoch", per_device_train_batch_size=1, # Reduce batch size here per_device_eval_batch_size=1, # Optionally, reduce for evaluation as well gradient_accumulation_steps=4 )trainer = Trainer( model=model, args=training_args, train_dataset=small_train_dataset, eval_dataset=small_eval_dataset, compute_metrics=compute_metrics,)trainer.train()一旦我们的模型经过微调,我们使用测试集来评估其性能 。trainer对象已经包含了经过优化的evaluate()方法 。
import evaluatetrainer.evaluate()这就是对任何LLM进行微调的基本过程 。
另外请记住 , 微调LLM的过程对计算资源的要求很高,因此您的本地计算机可能没有足够的能力来进行微调 。
主要结论如今,针对特定任务对预训练的大语言模型(比如GPT)进行微调对于改进LLM在特定领域的性能至关重要 。它使我们得以利用LLM的自然语言能力,同时提高它们的效率和定制方面的潜力,使这个过程易于访问且具有成本效益 。
如果遵循这七个简单的步骤:从选择正确的模型和数据集到训练和评估微调模型,我们可以在特定领域实现卓越的模型性能 。
如果想要查看完整代码,可以在我的大语言模型Github代码库中找到:https://github.com/rfeers/large-language-models/blob/main/7%20Steps%20to%20Fine-Tune%20LLMs.ipynb 。
原文标题:7 Steps to Mastering Large Language Model Fine-tuning,作者:Josep Ferrer

【微调大语言模型的七个步骤】


推荐阅读