偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

譯者 | 布加迪

審校 | 重樓

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在這個(gè)例子中,我們將充分利用Hugging Face數(shù)據(jù)集庫(kù)來(lái)導(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ù)看起來(lái)就像這樣:

第四:分詞器(Tokenizer

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

通過(guò)利用map方法對(duì)整個(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)練集:用來(lái)微調(diào)我們的模型。
  • 測(cè)試集:用來(lái)評(píng)估模型。
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)

第六步:評(píng)估方法

Transformers庫(kù)提供了一個(gè)名為Trainer的類(lèi),它可以優(yōu)化我們模型的訓(xùn)練和評(píng)估。因此,在實(shí)際訓(xùn)練開(kāi)始之前,我們需要定義一個(gè)函數(shù)來(lái)評(píng)估經(jīng)過(guò)微調(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ù)與評(píng)估策略,并執(zhí)行Trainer對(duì)象。

要執(zhí)行Trainer對(duì)象,我們只需使用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)過(guò)微調(diào),我們使用測(cè)試集來(lái)評(píng)估性能。trainer對(duì)象已經(jīng)包含了經(jīng)過(guò)優(yōu)化的evaluate()方法。

import evaluate

trainer.evaluate()

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

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

主要結(jié)論

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

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

如果想要查看完整代碼,可以在我的大語(yǔ)言模型GitHub代碼庫(kù)中找到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é)任編輯:華軒 來(lái)源: 51CTO
相關(guān)推薦

2024-01-17 22:56:07

開(kāi)源大語(yǔ)言模型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ò)攻擊

2023-07-10 13:28:43

智能建筑工具

2023-04-25 12:45:09

2015-12-23 09:48:32

2023-03-06 08:48:52

2022-02-15 11:03:40

SD-WAN軟件定義WAN

2023-06-01 13:09:09

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

2025-04-10 07:59:51

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

2015-10-12 16:20:55

DevOps企業(yè)IT運(yùn)維開(kāi)發(fā)

2022-07-28 11:33:23

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

2025-01-17 00:00:00

JavaFeign客戶(hù)端

2013-07-18 10:03:06

TypeScript

2025-01-14 10:56:14

點(diǎn)贊
收藏

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