Bild vom Herausgeber | Midjourney
Die Bibliothek „Hugging Face Transformers“ bietet Instruments zum einfachen Laden und Verwenden vorab trainierter Sprachmodelle (LMs) basierend auf der Transformer-Architektur. Aber wussten Sie, dass Sie mit dieser Bibliothek auch Ihr Transformer-Modell von Grund auf implementieren und trainieren können? Dieses Tutorial veranschaulicht dies anhand eines schrittweisen Beispiels zur Sentimentklassifizierung.
Wichtiger Hinweis: Das Trainieren eines Transformer-Modells von Grund auf ist rechenintensiv, wobei eine Trainingsschleife in der Regel Stunden dauert, um es gelinde auszudrücken. Um den Code in diesem Tutorial auszuführen, wird dringend empfohlen, Zugriff auf Hochleistungs-Rechenressourcen zu haben, sei es vor Ort oder über einen Cloud-Anbieter.
Schritt-für-Schritt-Prozess
Ersteinrichtung und Laden des Datensatzes
Abhängig von der Artwork der Python-Entwicklungsumgebung, in der Sie arbeiten, müssen Sie möglicherweise Hugging Face’s installieren. Transformatoren Und Datensätze Bibliotheken sowie die beschleunigen Bibliothek zum Trainieren Ihres Transformer-Modells in einer verteilten Computerumgebung.
!pip set up transformers datasets
!pip set up speed up -U
Sobald die notwendigen Bibliotheken installiert sind, laden wir die Emotionen-Datensatz zur Stimmungsklassifizierung von Twitter-Nachrichten vom Hugging Face Hub:
from datasets import load_dataset
dataset = load_dataset('jeffnyman/feelings')
Die Verwendung der Daten zum Trainieren eines transformerbasierten LM erfordert die Tokenisierung des Textes. Der folgende Code initialisiert einen BERT-Tokenisierer (BERT ist eine Familie von Transformermodellen, die für Textklassifizierungsaufgaben geeignet sind), definiert eine Funktion zum Tokenisieren von Textdaten mit Auffüllung und Kürzung und wendet sie stapelweise auf den Datensatz an.
from transformers import AutoTokenizer
def tokenize_function(examples):
return tokenizer(examples('textual content'), padding="max_length", truncation=True)
tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
tokenized_datasets = dataset.map(tokenize_function, batched=True)
Bevor wir mit der Initialisierung des Transformermodells fortfahren, überprüfen wir die eindeutigen Beschriftungen im Datensatz. Ein überprüfter Satz vorhandener Klassenbeschriftungen hilft dabei, GPU-bezogene Fehler während des Trainings zu vermeiden, indem die Konsistenz und Richtigkeit der Beschriftungen überprüft wird. Wir werden diesen Beschriftungssatz später verwenden.
unique_labels = set(tokenized_datasets('practice')('label'))
print(f"Distinctive labels within the coaching set: {unique_labels}")
def check_labels(dataset):
for label in dataset('practice')('label'):
if label not in unique_labels:
print(f"Discovered invalid label: {label}")
check_labels(tokenized_datasets)
Als Nächstes erstellen und definieren wir eine Modellkonfiguration und instanziieren dann das Transformermodell mit dieser Konfiguration. Hier geben wir Hyperparameter zur Transformerarchitektur an, wie Einbettungsgröße, Anzahl der Aufmerksamkeitsköpfe und den zuvor berechneten Satz eindeutiger Beschriftungen, die für den Aufbau der endgültigen Ausgabeebene für die Stimmungsklassifizierung von entscheidender Bedeutung sind.
from transformers import BertConfig
from transformers import BertForSequenceClassification
config = BertConfig(
vocab_size=tokenizer.vocab_size,
hidden_size=512,
num_hidden_layers=6,
num_attention_heads=8,
intermediate_size=2048,
max_position_embeddings=512,
num_labels=len(unique_labels)
)
mannequin = BertForSequenceClassification(config)
Wir sind quick bereit, unser Transformer-Modell zu trainieren. Es müssen nur noch zwei notwendige Instanzen instanziiert werden: Trainingsargumentemit Spezifikationen über die Trainingsschleife wie die Anzahl der Epochen und Coachdas die Modellinstanz, die Trainingsargumente und die für das Coaching und die Validierung verwendeten Daten zusammenfügt.
from transformers import TrainingArguments, Coach
training_args = TrainingArguments(
output_dir="./outcomes",
evaluation_strategy="epoch",
learning_rate=2e-5,
per_device_train_batch_size=16,
per_device_eval_batch_size=16,
num_train_epochs=3,
weight_decay=0.01,
)
coach = Coach(
mannequin=mannequin,
args=training_args,
train_dataset=tokenized_datasets("practice"),
eval_dataset=tokenized_datasets("take a look at"),
)
Es ist Zeit, das Modell zu trainieren. Lehnen Sie sich zurück und entspannen Sie sich. Denken Sie daran, dass die Ausführung dieser Anleitung viel Zeit in Anspruch nehmen wird:
Nach dem Coaching sollte Ihr Transformer-Modell bereit sein, Eingabebeispiele zur Stimmungsvorhersage zu übergeben.
Fehlerbehebung
Wenn beim Ausführen der Trainingsschleife oder während ihrer Einrichtung Probleme auftreten oder bestehen bleiben, müssen Sie möglicherweise die Konfiguration der verwendeten GPU-/CPU-Ressourcen überprüfen. Wenn Sie beispielsweise eine CUDA-GPU verwenden, können Sie Fehler in der Trainingsschleife vermeiden, indem Sie am Anfang Ihres Codes diese Anweisungen hinzufügen:
import os
os.environ("CUDA_LAUNCH_BLOCKING") = "1"
Diese Zeilen deaktivieren die GPU und synchronisieren CUDA-Operationen, wodurch unmittelbarere und genauere Fehlermeldungen zum Debuggen bereitgestellt werden.
Wenn Sie diesen Code hingegen in einer Google Colab-Instanz ausprobieren, besteht die Möglichkeit, dass während der Ausführung diese Fehlermeldung angezeigt wird, selbst wenn Sie zuvor die Speed up-Bibliothek installiert haben:
ImportError: Utilizing the `Coach` with `PyTorch` requires `speed up>=0.21.0`: Please run `pip set up transformers(torch)` or `pip set up speed up -U`
Um dieses Downside zu beheben, versuchen Sie, Ihre Sitzung im Menü „Runtime“ neu zu starten: Für die Speed up-Bibliothek ist nach der Set up normalerweise ein Zurücksetzen der Ausführungsumgebung erforderlich.
Zusammenfassung und Abschluss
Dieses Tutorial zeigt die wichtigsten Schritte zum Erstellen Ihres transformerbasierten LM von Grund auf mithilfe von Hugging Face-Bibliotheken. Die wichtigsten Schritte und Elemente können wie folgt zusammengefasst werden:
- Laden des Datensatzes und Tokenisieren der Textdaten.
- Initialisieren Sie Ihr Modell mithilfe einer Modellkonfigurationsinstanz für den Modelltyp (Sprachaufgabe), für den es vorgesehen ist, z. B. BertConfig.
- Einrichten eines Coach Und Trainingsargumente Instanzen und Ausführen der Trainingsschleife.
Als nächsten Lernschritt empfehlen wir Ihnen, zu erkunden, wie Sie mit Ihrem neu trainierten Modell Vorhersagen und Schlussfolgerungen treffen.
Iván Palomares Carrascosa ist ein führender Experte, Autor, Redner und Berater in den Bereichen KI, maschinelles Lernen, Deep Studying und LLMs. Er schult und leitet andere bei der Nutzung von KI in der realen Welt an.