Künstliche Intelligenz (KI) und maschinelles Lernen (ML) verändern die Landschaft moderner Technologie. Einer der bedeutenden Fortschritte in diese Richtung ist das Aufkommen von Giant Language Fashions (LLMs) wie Falcon, die darauf ausgelegt sind, menschenähnlichen Textual content besser zu verstehen und zu generieren. Dieser Artikel bietet einen detaillierten Einblick in die Optimierung von Falcon LLMs mithilfe von Language Mannequin Illustration Adaptation (LoRA) und Adaptern.
In den letzten Jahren ist die Verwendung transformatorbasierter Modelle wie Falcon LLMs bei der Verarbeitung natürlicher Sprache allgegenwärtig geworden. Der immense Umfang dieser Modelle stellt jedoch besondere Herausforderungen hinsichtlich der Anpassung und Feinabstimmung dar. Zwei wichtige Methoden zur Bewältigung dieser Herausforderungen sind LoRA und Adapter. Sie bieten eine leistungsstarke Möglichkeit, Falcon-LLMs individuell anzupassen und gleichzeitig den Rechenaufwand zu minimieren.
Das Ziel: Unser Ziel ist es, Sie durch einen detaillierten Prozess der effizienten Feinabstimmung von Falcon LLMs, der Nutzung von LoRA und Adaptern und der Erzielung einer überlegenen Modellleistung zu führen.
Bevor wir uns mit der Anleitung befassen, wollen wir uns mit der Notwendigkeit von LoRA und Adaptern befassen.
LoRA (Language Mannequin Illustration Adaptation) ist ein Mechanismus zur Spezialisierung vorab trainierter Sprachmodelle für bestimmte Aufgaben. Der wesentliche Vorteil von LoRA besteht darin, dass es nur wenige zusätzliche Parameter benötigt, was den Rechenaufwand drastisch reduziert.
# Importing mandatory libraries
import torch
from transformers import FalconForCausalLM, LoRA# Load pretrained mannequin
mannequin = FalconForCausalLM.from_pretrained('falcon-large')
# Initialize LoRA
lora = LoRA(mannequin, num_lora_layers=1)
# Connect LoRA to Falcon mannequin
mannequin.lora = lora
Adapter hingegen sind kleine Module, die in die Transformatorschichten eingefügt werden und es uns ermöglichen, das Verhalten der Originalmodelle mit minimalen Änderungen und minimalem Rechenaufwand zu ändern. Diese Strategie ist als AdapterFusion bekannt.
# Importing mandatory libraries
from transformers import AdapterConfig, AdapterFusion, AdapterType# Load pretrained mannequin
mannequin = FalconForCausalLM.from_pretrained('falcon-large')
# Add Adapter
adapter_name = mannequin.load_adapter("nli/roberta.giant", config="pfeiffer")
# Set the adapter for use in each ahead go
mannequin.set_active_adapters(AdapterFusion(adapter_name))
Nachdem wir die Notwendigkeit und Bedeutung von LoRA und Adaptern verstanden haben, begeben wir uns auf die Reise der effizienten Feinabstimmung von Falcon LLMs.
Der erste Schritt besteht darin, das Falcon LLM zu initialisieren und LoRA einzurichten. Wir würden ein vorab trainiertes Falcon-Modell laden und eine LoRA-Ebene anhängen.
# Importing mandatory libraries
import torch
from transformers import FalconForCausalLM, LoRA# Load pretrained mannequin
mannequin = FalconForCausalLM.from_pretrained('falcon-large')
# Initialize LoRA
lora = LoRA(mannequin, num_lora_layers=1)
# Connect LoRA to Falcon mannequin
mannequin.lora = lora
Als nächstes fügen wir die Adaptermodule in die Transformatorschichten ein.
# Importing mandatory libraries
from transformers import AdapterConfig, AdapterFusion, AdapterType# Add Adapter
adapter_name = mannequin.load_adapter("nli/roberta.giant", config="pfeiffer")
# Set the adapter for use in each ahead go
mannequin.set_active_adapters(AdapterFusion(adapter_name))
Nachdem das Modell eingerichtet und bereit ist, optimieren wir es nun anhand unseres aufgabenspezifischen Datensatzes.
# Importing mandatory libraries
from transformers import Coach, TrainingArguments# Outline coaching arguments
training_args = TrainingArguments(
output_dir="./outcomes",
num_train_epochs=3,
per_device_train_batch_size=16,
per_device_eval_batch_size=64,
warmup_steps=500,
weight_decay=0.01,
)
# Outline coach
coach = Coach(
mannequin=mannequin,
args=training_args,
train_dataset=train_dataset,
eval_dataset=val_dataset,
)
# Prepare the mannequin
coach.prepare()
Nach dem Coaching bewerten wir die Leistung unseres fein abgestimmten Modells anhand des Bewertungsdatensatzes.
# Consider the mannequin
eval_result = coach.consider(eval_dataset)print(eval_result)
Abschließend speichern wir das fein abgestimmte Modell und laden es für die zukünftige Verwendung.
# Save the mannequin
mannequin.save_adapter("./fashions/fine_tuned_adapter", adapter_name)# Load the saved mannequin
model_with_adapter = FalconForCausalLM.from_pretrained('falcon-large')
model_with_adapter.load_adapter("./fashions/fine_tuned_adapter")
Durch die effiziente Feinabstimmung der Falcon Giant Language-Modelle mit LoRA und Adaptern sind wir in der Lage, die umfangreichen vorab trainierten Modelle an unsere spezifischen Aufgaben anzupassen und gleichzeitig den Rechenaufwand minimal zu halten. Dieser Ansatz bietet eine ressourceneffizientere Different zur umfassenden Feinabstimmung und demokratisiert so den Zugang zu umfangreichen Sprachmodellen. Wir hoffen, Ihnen mit diesem Artikel einen praktischen Leitfaden zur Verfügung gestellt zu haben, wie Sie das Potenzial von Falcon LLMs, LoRA und Adaptern für Ihre NLP-Aufgaben nutzen können.