paint-brush
So machen Sie jedes LLM mit nur wenigen Codezeilen genauervon@FrederikBussler
7,012 Lesungen
7,012 Lesungen

So machen Sie jedes LLM mit nur wenigen Codezeilen genauer

von Frederik Bussler5m2023/08/14
Read on Terminal Reader
Read this story w/o Javascript

Zu lang; Lesen

Die KI-Revolution hat sich mit dem Aufkommen von Large Language Models (LLMs) wie ChatGPT verändert, was auf einen Sieg über die Datenkomplexität hindeutet. Diese LLMs stehen aufgrund der riesigen Datensätze (bis zu einem Petabyte) und der Komplexität der menschlichen Sprache vor Herausforderungen. Datenzentrierte Tools wie Cleanlab haben den Umgang mit KI-Daten revolutioniert, Datenverbesserungsprozesse automatisiert und Fortschritte demokratisiert. Datenzentrierte KI ist aufgrund von Anmerkungsfehlern (7–50 %) in realen Datensätzen unerlässlich, was das Training behindert. OpenAI und Tools wie Cleanlab legen Wert auf die Datenqualität und ermöglichen so erhebliche Verbesserungen der Modellgenauigkeit. Eine Python-Demo zeigt, wie Cleanlab Etikettenprobleme erkennt, Daten filtert und Modelle neu trainiert, was zu einer bemerkenswerten Genauigkeitssteigerung von 63 % auf über 66 % führt. Dieser datenzentrierte Ansatz ist vielversprechend für zukünftige LLMs wie GPT-5.
featured image - So machen Sie jedes LLM mit nur wenigen Codezeilen genauer
Frederik Bussler HackerNoon profile picture
0-item
1-item
2-item

Die KI-Revolution dauerte Jahrzehnte. Es war ein Feld voller Aufregung, das jedoch oft von Enttäuschungen und „ KI-Wintern “ unterbrochen wurde. Aber in letzter Zeit hat sich etwas verändert. Large Language Models (LLMs) wie ChatGPT, Claude und Bard katapultierten die KI vom Laborinteresse zum Mainstream .


Dieser Wandel war nicht nur ein Triumph der KI, sondern auch ein Sieg über die Komplexität großer und unübersichtlicher Daten. Wie das Sprichwort sagt: „Müll rein, Müll raus.“ Es entstehen neue Tools, die sich auf die Verbesserung der zugrunde liegenden Daten und damit auf die Verbesserung von LLMs konzentrieren.


Die doppelte Herausforderung von LLMs

Der Begriff „Große Sprachmodelle“ birgt zwei große Herausforderungen. Erstens die schiere Datenmenge. Wir sprechen von mehr als einem Petabyte (einer Million Gigabyte) an Daten für GPT-4, die Millionen von Büchern, Blogs, Social-Media-Beiträgen, Videotranskripten und mehr umfassen. Dieses kolossale Ausmaß bietet ein enormes Potenzial, wirft aber auch erhebliche logistische Überlegungen auf.


Zweitens die Komplexität der natürlichen Sprache. Kontextabhängige, mehrdeutige und vielfältige Sprachdaten sind ein wildes Biest, das selbst die besten Algorithmen nur schwer bändigen können. Es ist unmöglich, alle diese Daten genau zu kennzeichnen, was zwangsläufig bedeutet, dass selbst hochmoderne LLMs auf Unmengen falsch gekennzeichneter Daten trainiert werden.


Bei der Bewältigung dieser Herausforderungen entstanden neue datenzentrierte Tools und Methoden, die einen echten Sprung in der Leistungsfähigkeit der KI ermöglichten. Lösungen wie Cleanlab und andere begannen, Möglichkeiten anzubieten, vielfältige Daten zu sammeln, die Qualitätskontrolle zu automatisieren und Sprache in eine für KI-Modelle geeignete Form zu verarbeiten.


Diese Tools boten nicht nur schrittweise Verbesserungen; Sie haben den Ansatz zur KI-Datenverarbeitung grundlegend verändert. Sie verwandelten den Umgang mit großen Sprachdaten von einem manuellen, fehleranfälligen Prozess in einen automatisierten, präzisen Prozess, demokratisierten das Fachgebiet und ermöglichten Fortschritte in einem beispiellosen Tempo.


Warum datenzentrierte KI benötigt wird (mit einer Python-Demo)

In der KI enthalten reale Datensätze Anmerkungsfehler zwischen 7 und 50 % . Diese Unvollkommenheiten erschweren die Ausbildung und Bewertung erheblich. Bei der datenzentrierten KI liegt der Schwerpunkt auf der Verbesserung der Qualität des Datensatzes selbst.


Die Strategie von OpenAI verdeutlicht beispielsweise diesen Schwerpunkt: „Wir haben dem Herausfiltern aller schlechten Daten Vorrang vor dem Belassen aller guten Daten eingeräumt.“ Das liegt daran, dass wir unser Modell später jederzeit mit mehr Daten verfeinern können, um ihm neue Dinge beizubringen. Es ist jedoch viel schwieriger, das Modell dazu zu bringen, etwas zu vergessen, was es bereits gelernt hat.“


Der Ansatz, Daten manuell zu filtern, ist jedoch zeitaufwändig und teuer. Das Cleanlab-Paket ist ein Open-Source-Framework, das heute für die Ausübung datenzentrierter KI beliebt ist. Sie können damit Datenqualitätsalgorithmen für die Ausgaben Ihres trainierten ML-Modells ausführen, um häufige Datensatzprobleme wie Beschriftungsfehler, Ausreißer, Drift und mehr zu erkennen.


Mit nur wenigen Codezeilen können Sie automatisch Probleme in verschiedenen Datentypen wie Bildern, Texten, Tabellen und Audiodaten finden und identifizieren. Durch die Verwendung des Cleanlab-Pakets können Sie entscheiden, wie Sie Ihren Datensatz und Ihr Modell verbessern, Ihr ML-Modell neu trainieren und sehen, wie sich seine Leistung verbessert, ohne dass Änderungen an Ihrem vorhandenen Code erforderlich sind.


Cleanlab Studio hingegen ist mehr als nur eine Erweiterung des Cleanlab-Pakets; Es handelt sich um eine No-Code-Plattform, die darauf ausgelegt ist, Probleme in realen Datensätzen zu finden und zu beheben. Es beschränkt sich nicht nur auf die Erkennung von Problemen, sondern geht noch weiter mit der Datenkurierung und -korrektur und automatisiert sogar fast alle schwierigen Teile der Umwandlung von Rohdaten in zuverlässige ML oder Analysen.


Nutzen wir das Cleanlab-Paket, um die Leistungsfähigkeit datenzentrierter KI zu demonstrieren.


1. Datenvorbereitung und Feinabstimmung

Wir beginnen mit dem Stanford Politeness Dataset . Stellen Sie sicher, dass die Zug- und Testsätze geladen sind. In dieser Demo optimieren wir das Davinci LLM für die 3-Klassen-Klassifizierung zunächst ohne Cleanlab und sehen dann, wie wir die Genauigkeit durch Datenzentrierung verbessern können. Wir können einen einfachen Bash-Befehl ausführen, um ein Modell zu trainieren.


!openai api fine_tunes.create -t "train_prepared.jsonl" -v "test_prepared.jsonl" --compute_classification_metrics --classification_n_classes 3 -m davinci --suffix "baseline"


Wenn das erledigt ist, können wir einen fine_tunes.results -Endpunkt abfragen, um die Testgenauigkeit zu sehen.


!openai api fine_tunes.results -i ft-9800F2gcVNzyMdTLKcMqAtJ5 > baseline.csv

`df = pd.read_csv('baseline.csv')

baseline_acc = df.iloc[-1]['classification/accuracy']`


Wir erhalten ein Ergebnis mit einer Genauigkeit von 63 %. Mal sehen, ob wir das verbessern können.


2. Erhalten Sie vorhergesagte Klassenwahrscheinlichkeiten

Lassen Sie uns nun die API von OpenAI verwenden, um Einbettungen zu berechnen und ein logistisches Regressionsmodell anzupassen, um vorhergesagte Klassenwahrscheinlichkeiten außerhalb der Stichprobe zu erhalten.


# Get embeddings from OpenAI. from openai.embeddings_utils import get_embedding

embedding_model = "text-similarity-davinci-001" train["embedding"] = train.prompt.apply(lambda x: get_embedding(x, engine=embedding_model)) embeddings = train["embedding"].values

# Get out-of-sample predicted class probabilities via cross-validation.

from sklearn.linear_model import LogisticRegression

model = LogisticRegression() labels = train["completion"].values pred_probs = cross_val_predict(estimator=model, X=embeddings, y=labels, cv=10, method="predict_proba")


Mit nur einer Codezeile schätzt Cleanlab, welche Beispiele in unserem Trainingsdatensatz Labelprobleme aufweisen.


from cleanlab.filter import find_label_issues

Jetzt können wir Indizes von Beispielen erhalten, bei denen schätzungsweise Etikettenprobleme auftreten:


issue_idx = find_label_issues(labels, pred_probs, return_indices_ranked_by='self_confidence') # sort indices by likelihood of label error


3. Labelprobleme filtern und neu trainieren

Jetzt haben wir die Indizes möglicherweise falsch gekennzeichneter Beispiele automatisch extrahiert, sodass wir sie entfernen und einen neuen Klassifikator trainieren können.


# Remove the label errors

train_cl = train.drop(issue_idx).reset_index(drop=True) format_data(train_cl, "train_cl.jsonl")


Lassen Sie uns nun einen robusteren Klassifikator mit besseren Daten trainieren.


!openai api fine_tunes.create -t "train_cl_prepared.jsonl" -v "test_prepared.jsonl" --compute_classification_metrics --classification_n_classes 3 -m davinci --suffix "dropped"


# Evaluate model on test data

!openai api fine_tunes.results -i ft-InhTRQGu11gIDlVJUt0LYbEx > cleanlab.csv df = pd.read_csv('cleanlab.csv') dropped_acc = df.iloc[-1]['classification/accuracy']


Wir erreichen eine Genauigkeit von über 66 % und verbessern ein hochmodernes, feinabstimmbares Modell (GPT-3, da man GPT-4 nicht feinabstimmen kann), lediglich durch automatische Verbesserung des Datensatzes ohne jegliche Änderung zum Modell.


Mit Cleanlab Studio ist es außerdem möglich, falsche Etiketten automatisch zu korrigieren, anstatt sie einfach nur zu entfernen, was die Genauigkeit noch weiter verbessert. Ein Leitfaden von Cleanlab zeigt, dass dies eine Genauigkeit von bis zu 77 % erfordert.


Imbissbuden

Mit datenzentrierten Tools wie Cleanlab können Sie Daten- und Etikettenprobleme effizient finden und beheben, was zu erheblichen Leistungsverbesserungen von LLMs wie Davinci führt. Dieser Ansatz verändert weder die Modellarchitektur noch die Hyperparameter und konzentriert sich ausschließlich auf die Verbesserung der Qualität der Trainingsdaten.


Der in diesem Leitfaden beschriebene Ansatz könnte der Schlüssel zu noch größerer Genauigkeit und Robustheit in KI-Modellen sein, selbst mit zukünftigen fortschrittlichen LLMs wie GPT-5.