自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

微調(diào)大語言模型的七個(gè)步驟

譯文
人工智能
從理論到實(shí)踐,本文介紹了如何借助這七個(gè)簡單的步驟來改善您的NLP項(xiàng)目。

譯者 | 布加迪

審校 | 重樓

在最近一年半的時(shí)間里,自然語言處理NLP領(lǐng)域發(fā)生了顯著的變化,這主要得益于OpenAIGPT系列等大語言模型(LLM)的興起。

這些功能強(qiáng)大的模型徹底改變了我們處理自然語言任務(wù)的方法,在翻譯、情緒分析和文本自動生成方面提供了前所未有的能力。它們理解和生成類似人類文本的能力已帶來了曾經(jīng)被認(rèn)為無法實(shí)現(xiàn)的可能性。

然而,盡管這些模型具有出色的能力,但訓(xùn)練它們的過程充滿了挑戰(zhàn),比如需要投入大量的時(shí)間和資金這時(shí)候,微調(diào)LLM就體現(xiàn)出了其重要性

通過細(xì)化這些預(yù)訓(xùn)練模型以更好地適應(yīng)特定的應(yīng)用環(huán)境或領(lǐng)域,我們可以顯著提高它們處理特定任務(wù)的性能。這一步不僅提高了它們的質(zhì)量,擴(kuò)了它們在一系列廣泛領(lǐng)域的用途。

旨在將這個(gè)過程分解為個(gè)簡單步驟,以便使任何LLM針對特定任務(wù)進(jìn)行微調(diào)。

理解預(yù)訓(xùn)練的大語言模型

LLM機(jī)器學(xué)習(xí)算法的一個(gè)特殊類別,旨在根據(jù)前一個(gè)單詞提供的上下文預(yù)測序列中的下一個(gè)單詞。這些模型建立在Transformers架構(gòu)上,這是機(jī)器學(xué)習(xí)技術(shù)領(lǐng)域的一大突破,在谷歌的《你需要的就是注意力》文章中作了首次解釋。

GPT生成預(yù)訓(xùn)練Transformer)之類的模型就是已經(jīng)暴露于大量文本數(shù)據(jù)的預(yù)訓(xùn)練語言模型。這種廣泛的訓(xùn)練使它們得以掌握語言使用的基本規(guī)則,包括如何將單詞組合成連貫的句子。

這些模型的一個(gè)關(guān)鍵優(yōu)勢在于,它們不僅能夠理解自然語言,能夠根據(jù)提供的輸入生成酷似人類寫作的文本。

那么優(yōu)點(diǎn)是什么呢?那就是這些模型已經(jīng)通過API向大眾開放。

什么是微調(diào),為什么很重要

微調(diào)是選擇一個(gè)預(yù)訓(xùn)練的模型,并通過使用特定領(lǐng)域數(shù)據(jù)集進(jìn)一步訓(xùn)練來改進(jìn)它的過程。

大多數(shù)LLM模型有很好的自然語言技能和通用知識性能,但在處理特定的面向任務(wù)的問題時(shí)差強(qiáng)人意。微調(diào)過程提供了一種方法,可以提升模型處理特定問題的性能,同時(shí)降低計(jì)算費(fèi)用,無需從頭開始構(gòu)建模型。

簡而言之,模型經(jīng)過微調(diào)后,針對特定任務(wù)擁有更好的性能,使其在實(shí)際應(yīng)用中更有效、更通用。這個(gè)過程對于改進(jìn)現(xiàn)有模型以處理特定任務(wù)或領(lǐng)域關(guān)重要。

微調(diào)LLM的逐步指南

不妨通過如下個(gè)步驟微調(diào)一個(gè)實(shí)際模型來舉例說明這個(gè)概念。

第一步明確具體目標(biāo)

假設(shè)我們想要推斷任何文本的情緒,決定試GPT-2來完成這樣的任務(wù)。

我敢肯定,我們很快就會發(fā)現(xiàn)它在這方面做得很差,這并不奇怪。然后,一個(gè)自然而然的問題浮現(xiàn)在腦海中我們可以做些什么來改善性能?

當(dāng)然,答案是我們可以!

使用含有推文及相應(yīng)情緒的數(shù)據(jù)集訓(xùn)練來自Hugging Face Hub的預(yù)訓(xùn)練GPT-2模型,充分利用微調(diào)的效果,以便提高性能。

所以,我們的最終目標(biāo)是擁有一個(gè)善于從文本中推斷情緒的模型。

第二選擇預(yù)訓(xùn)練的模型和數(shù)據(jù)集

第二步是選擇什么模型作為基模型。在本文例子中,我們已經(jīng)選擇了模型GPT-2。所以我們要對它進(jìn)行一些簡單的微調(diào)。

始終記住要選擇適合您任務(wù)的模型。

第三加載要使用的數(shù)據(jù)

我們有了模型和主要任務(wù),現(xiàn)在需要一些數(shù)據(jù)來處理。

不過別擔(dān)心,Hugging Face已經(jīng)把一切安排好了!

時(shí)候,它的數(shù)據(jù)集庫有了用武之地。

在這個(gè)例子中,我們將充分利用Hugging Face數(shù)據(jù)集庫來導(dǎo)入一個(gè)數(shù)據(jù)集,其中的推文被標(biāo)記為相應(yīng)的情緒積極的、中立或消極的)。

from datasets import load_dataset

dataset = load_dataset("mteb/tweet_sentiment_extraction")
df = pd.DataFrame(dataset['train'])

數(shù)據(jù)看起來就像這樣:

第四:分詞器(Tokenizer

現(xiàn)在我們有了模型和數(shù)據(jù)集來對其進(jìn)行微調(diào)。因此,接下來的合理步驟是加載分詞器。由于LLM使用token(而不是單詞!!),我們需要分詞器將數(shù)據(jù)發(fā)送到我們的模型。

通過利用map方法對整個(gè)數(shù)據(jù)集進(jìn)行分詞處理,我們很容易做到這一點(diǎn)。

from transformers import GPT2Tokenizer

# Loading the dataset to train our model
dataset = load_dataset("mteb/tweet_sentiment_extraction")
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
tokenizer.pad_token = tokenizer.eos_token

def tokenize_function(examples):
 return tokenizer(examples["text"], padding="max_length", truncatinotallow=True)

tokenized_datasets = dataset.map(tokenize_function, batched=True)

為了提高我們的處理性能,生成兩個(gè)較小的子集

  • 訓(xùn)練集:用來微調(diào)我們的模型。
  • 測試集:用來評估模型。
Small_train_dataset = tokenized_datasets["train"].shuffle(seed=42).select(range(1000))
Small_eval_dataset = tokenized_datasets["test"].shuffle(seed=42).select(range(1000))

第五初始化基本模型

一旦我們有了要使用的數(shù)據(jù)集,加載我們的模型,并指定預(yù)期標(biāo)簽的數(shù)量。您可以推文的情緒數(shù)據(jù)集知道有三種可能的標(biāo)簽

  • 0或消極的
  • 1或中性
  • 2或積極的
from transformers import GPT2ForSequenceClassification

model = GPT2ForSequenceClassification.from_pretrained("gpt2", num_labels=3)

第六步:評估方法

Transformers庫提供了一個(gè)名為Trainer的類,它可以優(yōu)化我們模型的訓(xùn)練和評估。因此,在實(shí)際訓(xùn)練開始之前,我們需要定義一個(gè)函數(shù)來評估經(jīng)過微調(diào)的模型。

import evaluate

metric = 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方法進(jìn)行微調(diào)

后一步是微調(diào)模型。為此,我們將一起設(shè)置訓(xùn)練參數(shù)與評估策略,并執(zhí)行Trainer對象。

要執(zhí)行Trainer對象,我們只需使用train()命令。

from transformers import TrainingArguments, Trainer

training_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()

一旦我們的模型經(jīng)過微調(diào),我們使用測試集來評估性能。trainer對象已經(jīng)包含了經(jīng)過優(yōu)化的evaluate()方法。

import evaluate

trainer.evaluate()

任何LLM進(jìn)行微調(diào)的基本過程。

另外請記住,微調(diào)LLM的過程對計(jì)算資源的要求很高,因此您的本地計(jì)算機(jī)可能沒有足夠的能力來進(jìn)行微調(diào)。

主要結(jié)論

如今,針對特定任務(wù)對預(yù)訓(xùn)練的大語言模型(比如GPT進(jìn)行微調(diào)對于改進(jìn)LLM在特定領(lǐng)域的性能至關(guān)重要。它使我們得以利用LLM的自然語言能力,同時(shí)提高它們的效率和定制方面的潛力,使這個(gè)過程易于訪問且具有成本效益。

如果遵循這七個(gè)簡單步驟從選擇正確的模型和數(shù)據(jù)集到訓(xùn)練和評估微調(diào)模型,我們可以在特定領(lǐng)域?qū)崿F(xiàn)卓越的模型性能。

如果想要查看完整代碼,可以在我的大語言模型GitHub代碼庫中找到https://github.com/rfeers/large-language-models/blob/main/7%20Steps%20to%20Fine-Tune%20LLMs.ipynb。

原文標(biāo)題:7 Steps to Mastering Large Language Model Fine-tuning,作者:Josep Ferrer

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2024-01-17 22:56:07

開源大語言模型LLM

2010-04-09 09:55:43

Oracle sqlp

2014-03-12 15:23:20

2022-08-02 20:22:01

SaaS安全網(wǎng)絡(luò)攻擊

2025-04-10 07:59:51

2023-04-25 12:45:09

2023-07-10 13:28:43

智能建筑工具

2023-06-01 13:09:09

智能建筑數(shù)字孿生

2015-12-23 09:48:32

2022-02-15 11:03:40

SD-WAN軟件定義WAN

2023-03-06 08:48:52

2023-06-07 08:22:59

LLM微調(diào)技術(shù)

2009-12-25 14:52:49

2019-07-11 15:26:50

數(shù)據(jù)中心技術(shù)數(shù)據(jù)網(wǎng)絡(luò)

2025-03-11 08:37:42

2022-07-28 11:33:23

數(shù)據(jù)分析經(jīng)驗(yàn)

2025-01-14 10:56:14

2025-01-17 00:00:00

JavaFeign客戶端

2024-11-21 08:22:45

2024-04-15 12:50:00

大型語言模型ReFT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號