通过利用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
【微调大语言模型的七个步骤】
推荐阅读
- 人形机器人成本大揭秘:如何降低成本提高效率?
- ChatGPT-4o,OpenAI的一小步,人类「AI助理」的一大步
- Windows和Mac电脑密码修改大揭秘,快来学学吧!
- 看看窦唯,老狼的现状,才发现周晓鸥已经走上了另一条大道
- 人间清醒大张伟:坚持和队友对半分账,拒绝黄小蕾,只宠胖媳妇儿
- 没演技就是没演技,同样是扮演刑侦专家,丁勇岱和张丰毅差距太大
- 林更新大方牵手赵丽颖,冯绍峰微妙回避,星光大赏上的一幕
- 张柏芝大儿子新年首露面,正脸照曝光被指颜值不如谢霆锋
- 有种“整容”叫长大,11年前春晚一转成名的小彩旗,如今像换个人
- 韩剧女王宋慧乔变身驱魔修女, 这次乔妹拼了!尺度比《黑暗荣耀》还大!