Deklaratives Deep-Learning-Framework, das auf Skalierbarkeit und Effizienz ausgelegt ist.
Wichtig
Unsere Community ist zu Discord umgezogen – bitte schließen Sie sich uns dort an!
Ludwig ist ein Low-Code- Framework zum Erstellen benutzerdefinierter KI-Modelle wie LLMs und anderer tiefer neuronaler Netze.
Hauptmerkmale:
Ludwig wird von der Linux Foundation AI & Data gehostet.
Von PyPi installieren. Beachten Sie, dass Ludwig Python 3.8+ benötigt.
pip install ludwig
Oder installieren Sie mit allen optionalen Abhängigkeiten:
pip install ludwig[full]
Detailliertere Installationsanweisungen finden Sie im Beitrag.
Möchten Sie einen kurzen Blick auf einige der Funktionen von Ludwig 0.8 werfen? Schauen Sie sich dieses Colab-Notizbuch an
Möchten Sie Llama-2 oder Mistral verfeinern? Schauen Sie sich diese Notizbücher an:
Eine vollständige Anleitung finden Sie im offiziellen Leitfaden „Erste Schritte“ oder in den End-to-End-Beispielen.
Lassen Sie uns ein vorab trainiertes großes LLaMA-2-7b-Sprachmodell verfeinern, um Anweisungen wie ein Chatbot zu befolgen („Anweisungsoptimierung“).
Wir verwenden den Stanford Alpaca-Datensatz, der als tabellenartige Datei formatiert wird, die wie folgt aussieht:
Anweisung | Eingang | Ausgabe |
---|---|---|
Geben Sie drei Tipps, wie Sie gesund bleiben. | 1. Ernähren Sie sich ausgewogen und achten Sie darauf, Folgendes einzubeziehen: | |
Ordnen Sie die unten angegebenen Elemente in der Reihenfolge an, in der ... | Kuchen, ich, Essen | Ich esse Kuchen. |
Schreiben Sie einen einleitenden Absatz über einen berühmten ... | Michelle Obama | Michelle Obama ist eine inspirierende Frau, die... |
... | ... | ... |
Erstellen Sie eine YAML-Konfigurationsdatei mit dem Namen model.yaml
mit Folgendem:
model_type : llm
base_model : meta-llama/Llama-2-7b-hf
quantization :
bits : 4
adapter :
type : lora
prompt :
template : |
Below is an instruction that describes a task, paired with an input that may provide further context.
Write a response that appropriately completes the request.
### Instruction:
{instruction}
### Input:
{input}
### Response:
input_features :
- name : prompt
type : text
output_features :
- name : output
type : text
trainer :
type : finetune
learning_rate : 0.0001
batch_size : 1
gradient_accumulation_steps : 16
epochs : 3
learning_rate_scheduler :
decay : cosine
warmup_fraction : 0.01
preprocessing :
sample_ratio : 0.1
backend :
type : local
Und jetzt trainieren wir das Modell:
export HUGGING_FACE_HUB_TOKEN = " <api_token> "
ludwig train --config model.yaml --dataset " ludwig://alpaca "
Lassen Sie uns ein neuronales Netzwerk aufbauen, das vorhersagt, ob die Rezension eines bestimmten Filmkritikers zu Rotten Tomatoes positiv oder negativ war.
Unser Datensatz wird eine CSV-Datei sein, die so aussieht:
movie_title | content_rating | Genres | Laufzeit | top_critic | review_content | empfohlen |
---|---|---|---|---|---|---|
Befreie uns vom Bösen | R | Action & Abenteuer, Horror | 117,0 | WAHR | Regisseur Scott Derrickson und sein Co-Autor Paul Harris Boardman liefern eine routinemäßige Handlung mit unauffälligen Schrecken. | 0 |
Barbara | PG-13 | Art House & International, Drama | 105,0 | FALSCH | Irgendwie schafft es Barbara in dieser mitreißenden Erzählung, an ihren Prinzipien, ihrer Menschlichkeit und ihrem Mut festzuhalten und kämpft darum, ein dissidentes junges Mädchen zu retten, dessen Leben die Kommunisten zu zerstören versuchen. | 1 |
Schreckliche Bosse | R | Komödie | 98,0 | FALSCH | Diese Bosse können weder Mord noch bleibende komische Erinnerungen rechtfertigen und gefährden damit eine Farce, die großartig hätte sein können, am Ende aber nur mittelmäßig ausfällt. | 0 |
... | ... | ... | ... | ... | ... | ... |
Laden Sie hier ein Beispiel des Datensatzes herunter.
wget https://ludwig.ai/latest/data/rotten_tomatoes.csv
Erstellen Sie als Nächstes eine YAML-Konfigurationsdatei mit dem Namen model.yaml
mit Folgendem:
input_features :
- name : genres
type : set
preprocessing :
tokenizer : comma
- name : content_rating
type : category
- name : top_critic
type : binary
- name : runtime
type : number
- name : review_content
type : text
encoder :
type : embed
output_features :
- name : recommended
type : binary
Das ist es! Jetzt trainieren wir das Modell:
ludwig train --config model.yaml --dataset rotten_tomatoes.csv
Viel Spaß beim Modellieren
Versuchen Sie, Ludwig auf Ihre Daten anzuwenden. Wenn Sie Fragen haben, wenden Sie sich an Discord.
Minimaler Boilerplate für maschinelles Lernen
Ludwig kümmert sich sofort um die technische Komplexität des maschinellen Lernens und ermöglicht es Forschern, sich auf die Erstellung von Modellen auf höchster Abstraktionsebene zu konzentrieren. Datenvorverarbeitung, Hyperparameteroptimierung, Geräteverwaltung und verteiltes Training für torch.nn.Module
-Modelle sind völlig kostenlos.
Erstellen Sie ganz einfach Ihre Benchmarks
Das Erstellen einer hochmodernen Baseline und deren Vergleich mit einem neuen Modell ist eine einfache Konfigurationsänderung.
Wenden Sie neue Architekturen ganz einfach auf mehrere Probleme und Datensätze an
Wenden Sie neue Modelle auf die umfangreichen Aufgaben und Datensätze an, die Ludwig unterstützt. Ludwig umfasst ein vollständiges Benchmarking-Toolkit, auf das jeder Benutzer zugreifen kann, um mit nur einer einfachen Konfiguration Experimente mit mehreren Modellen über mehrere Datensätze hinweg durchzuführen.
Hochgradig konfigurierbare Datenvorverarbeitung, Modellierung und Metriken
Alle Aspekte der Modellarchitektur, der Trainingsschleife, der Hyperparametersuche und der Backend-Infrastruktur können als zusätzliche Felder in der deklarativen Konfiguration geändert werden, um die Pipeline an Ihre Anforderungen anzupassen. Einzelheiten dazu, was konfiguriert werden kann, finden Sie in den Ludwig-Konfigurationsdokumenten.
Multimodales, aufgabenübergreifendes Lernen, sofort einsatzbereit
Kombinieren Sie tabellarische Daten, Text, Bilder und sogar Audio zu komplexen Modellkonfigurationen, ohne Code schreiben zu müssen.
Umfangreicher Export und Tracking von Modellen
Verfolgen Sie alle Versuche und Metriken automatisch mit Tools wie Tensorboard, Comet ML, Weights & Biases, MLFlow und Aim Stack.
Skalieren Sie das Training automatisch auf Cluster mit mehreren GPUs und mehreren Knoten
Wechseln Sie vom Training auf Ihrem lokalen Computer zur Cloud, ohne dass Codeänderungen erforderlich sind.
Low-Code-Schnittstelle für hochmoderne Modelle, einschließlich vortrainierter Huggingface-Transformatoren
Ludwig lässt sich auch nativ in vorab trainierte Modelle integrieren, wie sie beispielsweise in Huggingface Transformers verfügbar sind. Benutzer können aus einer riesigen Sammlung hochmoderner, vorab trainierter PyTorch-Modelle auswählen und diese verwenden, ohne überhaupt Code schreiben zu müssen. Das Trainieren eines BERT-basierten Stimmungsanalysemodells mit Ludwig ist beispielsweise so einfach wie:
ludwig train --dataset sst5 --config_str " {input_features: [{name: sentence, type: text, encoder: bert}], output_features: [{name: label, type: category}]} "
Low-Code-Schnittstelle für AutoML
Mit Ludwig AutoML können Benutzer trainierte Modelle erhalten, indem sie lediglich einen Datensatz, die Zielspalte und ein Zeitbudget bereitstellen.
auto_train_results = ludwig . automl . auto_train ( dataset = my_dataset_df , target = target_column_name , time_limit_s = 7200 )
Einfache Produktion
Ludwig erleichtert die Bereitstellung von Deep-Learning-Modellen, auch auf GPUs. Starten Sie eine REST-API für Ihr trainiertes Ludwig-Modell.
ludwig serve --model_path=/path/to/model
Ludwig unterstützt den Export von Modellen in effiziente Torchscript-Bundles.
ludwig export_torchscript -–model_path=/path/to/model
Lesen Sie unsere Veröffentlichungen zu Ludwig, deklarativem ML und Ludwigs SoTA-Benchmarks.
Erfahren Sie mehr über die Funktionsweise von Ludwig, die ersten Schritte und arbeiten Sie sich weitere Beispiele durch.
Wenn Sie daran interessiert sind, einen Beitrag zu leisten, Fragen, Kommentare oder Gedanken zum Teilen haben oder einfach nur auf dem Laufenden bleiben möchten, denken Sie bitte darüber nach, unserem Community Discord beizutreten und uns auf X zu folgen!
Ludwig ist ein aktiv verwaltetes Open-Source-Projekt, das auf Beiträge von Leuten wie Ihnen angewiesen ist. Erwägen Sie, sich der aktiven Gruppe der Ludwig-Mitwirkenden anzuschließen, um Ludwig zu einem noch zugänglicheren und funktionsreicheren Framework zu machen, das jeder nutzen kann!