Penyempurnaan Efisien Parameter (PEFT) adalah pendekatan baru untuk menyempurnakan model bahasa besar (LLM) yang secara efektif mengurangi kebutuhan komputasi dan memori dibandingkan dengan metode tradisional.

PEFT hanya menerapkan penyesuaian pada sebagian kecil parameter model, sekaligus membekukan sebagian besar jaringan yang telah dilatih sebelumnya. Taktik ini mengurangi bencana lupa dan secara signifikan mengurangi biaya komputasi dan penyimpanan. Saya telah menulis tentang metode tradisional di “artikel” lain ini.

Berbagai metode PEFT telah dikembangkan, seperti:

  1. Penyetelan Prompt yang Dipandu Tugas: Teknik ini menggunakan perintah khusus tugas untuk memandu keluaran LLM, sehingga meniadakan kebutuhan untuk melatih ulang seluruh model untuk tugas tertentu.
  2. Adaptasi Tingkat Rendah (LoRA): Dengan memperkirakan parameter LLM dengan matriks peringkat rendah, LoRA mengurangi jumlah parameter yang disesuaikan, sehingga meningkatkan kinerja LLM.
  3. Adaptor: Lapisan kecil dan terspesialisasi ini dapat ditambahkan ke LLM untuk adaptasi tugas, memberikan fleksibilitas dan peningkatan kinerja.
  4. Penyetelan Awalan yang Relevan dengan Tugas: Menyempurnakan LLM pada awalan representatif yang terkait dengan tugas yang ada akan meningkatkan kinerja dan kemampuan beradaptasi tugas.

Teknik PEFT telah menunjukkan kemanjuran dalam berbagai tugas, termasuk inferensi bahasa alami, menjawab pertanyaan, dan meringkas teks. Peneliti dan praktisi dapat memanfaatkan PEFT untuk memanfaatkan LLM secara efisien di berbagai tugas.

Berikut adalah wawasan lebih lanjut tentang metode PEFT yang disebutkan:

  1. Penyetelan Perintah yang Dipandu Tugas: Dengan menambahkan perintah khusus tugas untuk memasukkan data, LLM melakukan tugas yang diinginkan. Misalnya, memberikan pertanyaan “Apa ibu kota Brasil?” memandu LLM untuk menghasilkan respons “Brasilia”.
  2. Adaptasi Tingkat Rendah (LoRA): Metode canggih ini memperkirakan parameter LLM menggunakan matriks peringkat rendah, sehingga sangat meningkatkan kinerjanya.
  3. Adaptor: Adaptor adalah lapisan kecil serbaguna yang diintegrasikan ke dalam LLM untuk meningkatkan kinerja tugas spesifik.
  4. Penyesuaian Awalan yang Relevan dengan Tugas: Untuk menyempurnakan LLM untuk menjawab pertanyaan, digunakan rangkaian awalan khusus tugas yang mewakili pertanyaan.

Di bawah ini adalah contoh kode Python yang menunjukkan cara menerapkan Penyempurnaan Efisien Parameter (PEFT) untuk menyempurnakan model bahasa terlatih menggunakan pustaka Hugging Face Transformers. Kami akan menggunakan TextClassificationPipeline untuk menyempurnakan model BERT yang telah dilatih sebelumnya pada kumpulan data IMDb untuk analisis sentimen.

import torch
from transformers import BertTokenizer, BertForSequenceClassification, AdamW, pipeline
from datasets import load_dataset

# Load the IMDb dataset
dataset = load_dataset("imdb")

# Load the pre-trained BERT model and tokenizer
model_name = "bert-base-uncased"
tokenizer = BertTokenizer.from_pretrained(model_name)
model = BertForSequenceClassification.from_pretrained(model_name, num_labels=2)  # Binary sentiment analysis

# Tokenize the dataset
def tokenize_function(examples):
    return tokenizer(examples["text"], padding="max_length", truncation=True)

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

# Split the dataset into training and validation sets
train_dataset, val_dataset = tokenized_dataset["train"], tokenized_dataset["test"].train_test_split(test_size=0.1)

# Hyperparameters and Training Configuration
learning_rate = 2e-5
batch_size = 16
num_epochs = 3

# Define the optimizer
optimizer = AdamW(model.parameters(), lr=learning_rate)

# Fine-tuning function using PEFT
def fine_tune(model, train_dataset, optimizer, num_epochs, batch_size):
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    model.to(device)

    for epoch in range(num_epochs):
        total_loss = 0
        model.train()

        for i in range(0, len(train_dataset), batch_size):
            batch = train_dataset[i:i+batch_size]
            input_ids = torch.tensor(batch["input_ids"]).to(device)
            attention_mask = torch.tensor(batch["attention_mask"]).to(device)
            labels = torch.tensor(batch["label"]).to(device)

            optimizer.zero_grad()
            outputs = model(input_ids=input_ids, attention_mask=attention_mask, labels=labels)
            loss = outputs.loss
            loss.backward()
            optimizer.step()
            total_loss += loss.item()

        print(f"Epoch: {epoch+1}/{num_epochs}, Average Loss: {total_loss / len(train_dataset)}")

# Fine-tune the model using PEFT
fine_tune(model, train_dataset, optimizer, num_epochs, batch_size)

# Save the fine-tuned model
output_dir = "fine_tuned_model/"
model.save_pretrained(output_dir)
tokenizer.save_pretrained(output_dir)

# Load the fine-tuned model using the TextClassificationPipeline
classifier = pipeline("text-classification", model=output_dir, tokenizer=output_dir)

# Test the fine-tuned model on a sample text
sample_text = "This movie was fantastic! I loved every bit of it."
result = classifier(sample_text)
print(result)

Kode ini menunjukkan cara menerapkan PEFT untuk menyempurnakan model BERT untuk analisis sentimen pada kumpulan data IMDb. Model yang telah disempurnakan dapat disimpan dan digunakan untuk inferensi menggunakan TextClassificationPipeline.

PEFT (pembelajaran transfer efisien parameter) adalah pendekatan baru untuk pembelajaran transfer yang dirancang agar lebih efisien dibandingkan penyesuaian tradisional. PEFT melakukan ini dengan menggunakan proses dua langkah:

  1. Sejumlah kecil lapisan adaptor ditambahkan ke model terlatih. Lapisan adaptor ini bertanggung jawab untuk mengadaptasi model ke tugas baru.
  2. Lapisan adaptor dilatih menggunakan sejumlah kecil data dari tugas baru.

Proses dua langkah ini memungkinkan PEFT mencapai kinerja yang baik pada tugas baru sambil menggunakan parameter yang jauh lebih sedikit dibandingkan penyesuaian tradisional.

Sebaliknya, pembelajaran transfer adalah pendekatan yang lebih umum untuk menggunakan model yang telah dilatih sebelumnya pada tugas baru. Pembelajaran transfer dapat digunakan dalam berbagai cara, termasuk:

  • Pembelajaran transfer berbasis fitur: Dalam pembelajaran transfer berbasis fitur, fitur yang diekstraksi dari model yang telah dilatih sebelumnya digunakan sebagai masukan ke model baru yang dilatih pada tugas baru.
  • Penyempurnaan: Dalam penyempurnaan, bobot model yang telah dilatih sebelumnya diperbarui menggunakan sejumlah kecil data dari tugas baru.
  • Adaptor yang telah dilatih sebelumnya: Adaptor yang telah dilatih sebelumnya adalah jenis lapisan adaptor yang telah dilatih sebelumnya pada kumpulan data besar yang berisi data tidak berlabel. Adaptor yang telah dilatih sebelumnya dapat digunakan untuk meningkatkan kinerja PEFT pada tugas baru.

Jadi, apakah PEFT adalah novel? Ya, PEFT adalah pendekatan baru untuk mentransfer pembelajaran yang dirancang agar lebih efisien dibandingkan penyesuaian tradisional. Namun, pembelajaran transfer adalah pendekatan yang lebih umum untuk menggunakan model terlatih pada tugas baru.