Anleitungen, Code und Konfigurationen für die ReplitLM -Modellfamilie.
Dies wird kontinuierlich aktualisiert, um weitere Möglichkeiten zur Nutzung und Weiterentwicklung unserer Modelle hinzuzufügen.
Modell | Kontrollpunkt [CC BY-SA 4.0] | Wortschatz [CC BY-SA 4.0] | Code [Apache 2.0] |
---|---|---|---|
replit-code-v1-3b | Download-Link | Herunterladen | Repo |
replit-code-v1_5-3b | (In Kürze verfügbar) | (In Kürze verfügbar) | Demnächst erhältlich |
2. Mai 2023: replit-code-v1-3b
Wir haben auch einen GPU-basierten Space für das replit-code-v1-3b
-Modell, wo Sie das Modell direkt verwenden können!
GPU-gestützte gehostete Demo
Alle veröffentlichten Replit-Modelle sind auf Hugging Face auf der Replit-Organisationsseite verfügbar und können mit der Hugging Face Transformers-Bibliothek verwendet werden.
Sie können die Replit-Modelle mit der Hugging Face Transformers-Bibliothek verwenden. Die README-Datei für jedes veröffentlichte Modell enthält Anweisungen zur Verwendung des Modells mit Hugging Face Transformers. Stellen Sie sicher, dass Sie „ clean_up_tokenization_spaces=False
festlegen, wenn Sie mit dem Tokenizer dekodieren, und verwenden Sie auch die empfohlene Nachbearbeitung in der README-Datei.
Modell | README |
---|---|
replit-code-v1-3b | Dokumentation |
Wir empfehlen jede weitere Schulung, Vorschulung und Feinabstimmung der Replit-Modelle mit LLM Foundry and Composer von MosaicML.
Unsere Replit-Modelle sind mit LLM Foundry kompatibel und können mit LLM Foundry + Composer unter Verwendung modernster Trainingstechniken, Architekturkomponenten, Optimierer und mehr auf hochoptimierte Weise trainiert/abgestimmt werden. Alle Modelle, LLM Foundry und das Composer-Trainingsframework basieren auf Pytorch. Mithilfe dieser können Sie die Replit-Modelle anhand Ihrer eigenen Datensätze trainieren.
Die folgenden Schritte geben Ihnen einen Überblick darüber, was getan werden muss, um die Modelle zu trainieren, mit Links zu den LLM Foundry-Dokumentationsabschnitten, die für jeden Schritt benötigt werden:
Installieren Sie LLM Foundry
Um mit LLM Foundry zu beginnen, können Sie der LLM Foundry README folgen, um:
Auf hoher Ebene wird LLM Foundry verwendet, indem ein Konfigurations-YAML definiert und dann das Trainingsskript train/train.py
im LLM Foundry-Repository mit dem definierten Konfigurations-YAML ausgeführt wird, indem ein Befehl wie composer train/train.py <configuration_yaml_path> <extra_args>
verwendet wird composer train/train.py <configuration_yaml_path> <extra_args>
. Das Verzeichnis „scripts/train/yamls“ enthält Beispiel-YAMLs sowohl für die Feinabstimmung als auch für die Vorabverwaltung.
Installieren Sie weitere Anforderungen für die Replit-Modelle
Anschließend müssen Sie noch einige weitere Abhängigkeiten installieren, die in der requirements.txt
angegeben sind.
Um mit LLM Foundry zu trainieren, müssen Sie Ihren Datensatz in das Mosaik-StreamingDataset-Format konvertieren.
Die unterstützten Arten von Datensatzquellen sind JSON-Datensätze und Hugging Face-Datensätze.
Die Dokumentation zur Datenvorbereitung in LLM Foundry enthält die Schritte dazu.
Wenn Sie in den obigen Schritten „ convert_dataset_hf.py
oder convert_dataset_json.py
ausführen, müssen Sie angeben, dass Sie den Replit-Tokenizer verwenden, indem Sie das Argument --tokenizer replit/replit-code-v1-3b
übergeben. Ein wichtiger Schritt (aufgrund der aktuellen Implementierung von llm-foundry
) besteht darin, scripts/data_prep/convert_dataset_hf.py
zu bearbeiten, indem der Befehl trust_remote_code=True
an den Aufruf AutoTokenizer.from_pretrained
übergeben wird, wenn der Tokenizer in die Methode main()
geladen wird.
Testen Sie Ihren konvertierten Datensatz
Um den konvertierten Datensatz zu testen und zu überprüfen, ob er mit dem Dataloader funktioniert, können Sie dem Abschnitt „Testen des Dataloaders“ in den LLM Foundry-Dokumenten folgen.
Um mit LLM Foundry zu trainieren, müssen Sie ein Ausführungskonfigurations-YAML definieren. Dieses Yaml definiert das Modell, den Trainingsdatensatz, den Bewertungsdatensatz und die Metrik, Trainingsparameter und mehr.
Verwendung der Replit-Modelle
Für jedes Konfigurations-YAML, das Sie zum Trainieren/Abstimmen mit LLM Foundry definieren, können Sie das Replit-Modell einbinden und verwenden, indem Sie die Modell- und Tokenizer-Schlüssel in Ihrem YAML wie folgt ersetzen:
...
model:
name: hf_causal_lm
pretrained: true
pretrained_model_name_or_path: replit/replit-code-v1-3b
config_overrides:
attn_config:
attn_impl: triton
attn_uses_sequence_id: false
tokenizer:
name: replit/replit-code-v1-3b
kwargs:
model_max_length: ${max_seq_len}
trust_remote_code: true
...
Dadurch wird unser Modell mit seinen Gewichten von Hugging Face für Ihre Konfiguration geladen.
Nachdem Sie Ihren Datensatz konvertiert und ein Ausführungskonfigurations-YAML definiert haben, können Sie das Training mit LLM Foundry durchführen.
Befolgen Sie den Abschnitt „So starten Sie das Training“ in den LLM Foundry-Dokumenten, um das Training durchzuführen. In diesem Abschnitt erfahren Sie, wie Sie Einzelknoten- und Mehrknoten-Trainings durchführen. Tatsächlich führen Sie das Trainingsskript scripts/train/train.py
im LLM Foundry-Repository mit der definierten Konfigurations-YAML aus, indem Sie einen Befehl wie composer train/train.py <configuration_yaml_path> <extra_args>
verwenden.
In Composer gibt es eine fest codierte Logik, die wir umgehen müssen, um die Prüfpunkte zu speichern. Fügen Sie im Trainingsskript scripts/train/train.py
die Zeile model.tokenizer = None
hinzu, direkt nachdem das Modell initialisiert wurde und bevor der Train Dataloader eingerichtet wird, d. h. zum Zeitpunkt des Schreibens, Zeile 147 in main()
. Dadurch wird effektiv sichergestellt, dass wir den Tokenizer nicht mit dem Checkpoint-Status speichern. Wir benötigen diese Problemumgehung, da Composer derzeit das Speichern von Prüfpunkten mit Tokenizern, die *.py
Dateien enthalten, nicht verarbeiten kann.
Sie können unsere ReplitLM -Modelle individuell auf Ihren Anwendungsfall abstimmen. Für die meisten Anwendungsfälle zur Befehlsoptimierung empfehlen wir, mit den unten aufgeführten Hugging Face-Beispielen zu beginnen. Ansonsten stellen wir auch eine detaillierte Anleitung zum Instruction Tuning mit LLM Foundry zur Verfügung.
Mithilfe der transformers
-Bibliothek können Sie das replit-code-v1-3b
-Modell für Datensätze im Alpaca-Stil anweisen und optimieren.
Um dies zu erreichen, benötigen Sie einen Instruct-Tuning-Datensatz, der bereits im Alpaca-Format vorliegt, wie zum Beispiel:
Der Open-Source-Mitarbeiter Teknium hat das ursprüngliche Alpaca-Repo in das stanford_alpaca-replit-Repo umgewandelt, das für die Ausführung mit unseren Modellen vorkonfiguriert ist. Wir empfehlen Ihnen dringend, dies als Ausgangspunkt zu verwenden.
Das Repo enthält Anweisungen zum Einrichten und Ausführen des Trainers. Das erforderliche Datensatzformat im Alpaka-Stil wird hier beschrieben. Jeder im Alpaka-Stil formatierte Datensatz funktioniert mit dem Trainer. Beispielsweise kann der Code Alpaca-Datensatz verwendet werden, um die Optimierung unseres Modells mithilfe des Trainingsskripts im Repo von Teknium anzuweisen.
Sie können LLM Foundry auch für das Instruction Tuning verwenden. Dazu müssen Sie die folgenden Schritte auf allgemeiner Ebene ausführen, wobei die spezifischen Details und Schritte, die Sie befolgen müssen, bei Bedarf verlinkt sind:
Installieren Sie LLM Foundry
Um mit LLM Foundry zu beginnen, können Sie der LLM Foundry README folgen, um:
Auf hoher Ebene wird LLM Foundry verwendet, indem ein Konfigurations-YAML definiert und dann das Trainingsskript train/train.py
im LLM Foundry-Repository mit dem definierten Konfigurations-YAML ausgeführt wird, indem ein Befehl wie composer train/train.py <configuration_yaml_path> <extra_args>
verwendet wird composer train/train.py <configuration_yaml_path> <extra_args>
. Das Verzeichnis „scripts/train/yamls“ enthält Beispiel-YAMLs für die Feinabstimmung und Vorverwaltung.
Installieren Sie weitere Anforderungen für die Replit-Modelle
Anschließend müssen Sie noch einige weitere Abhängigkeiten installieren, die in der requirements.txt
angegeben sind.
Kann einer der folgenden sein:
Abhängig vom verwendeten Datensatz müssen Sie den Datensatz möglicherweise in das von LLM Foundry erwartete Format formatieren.
Datensätze, für die keine benutzerdefinierte Vorverarbeitung erforderlich ist
Einige Datensätze wiemosaicml/dolly_hhrlhf verfügen bereits über eine Vorverarbeitungsfunktion, die Sie sofort verwenden können. Zum Zeitpunkt der Veröffentlichung waren die folgenden Hugging Face-Datensätze mit einer vorregistrierten Vorverarbeitungsfunktion ausgestattet: HuggingFaceH4/databricks_dolly_15k
, Muennighoff/P3
, Muennighoff/flan
, bigscience/P3
, tatsu-lab/alpaca
.
Datensätze, für die eine benutzerdefinierte Vorverarbeitung erforderlich ist
Wenn Sie keinen der oben genannten Datensätze verwenden, müssen Sie Ihre eigene Vorverarbeitungsfunktion schreiben und diese registrieren.
Für jeden Datensatz muss jedes Beispiel als Wörterbuch mit den folgenden Schlüsseln formatiert sein:
formatted_example = { 'prompt' : < prompt_text > , 'response' : < response_text > }
Das heißt, jedes Beispiel ist ein Wörterbuch mit den beiden Schlüsseln. Dies ist das Format, das der finetuning
Dataloader im Downstream erwartet.
Leitfaden zum Formatieren Ihres Datensatzes
Der Abschnitt „Datenformatierung“ im ursprünglichen LLM Foundry-Repo beschreibt, wie das geht.
Für den Fall, dass Sie eine benutzerdefinierte Vorverarbeitungsfunktion erstellen müssen, um Ihre Daten in das richtige Format zu bringen, und die Schritte in der LLM Foundry-Dokumentation Sie verwirren, lautet die TL;DR-Umschreibung wie folgt:
preprocess.py
) irgendwo in Ihrer Codebasis, z. B. im selben Verzeichnis wie Ihr Trainingsskript, sofern sie von Ihrem Trainingsskript importiert werden kann.preprocess_function()
die als Eingabe ein Beispiel aus Ihrem Datensatz verwendet und ein Wörterbuch mit den oben beschriebenen Tasten prompt
und response
zurückgibt, entsprechend Ihrer Logik, wie das Beispiel in das erforderliche Format formatiert werden soll.preprocess.py
) und die Funktion (z. B. preprocess_function()
), die Sie erstellt haben. Jetzt können Sie Ihren Datensatz zur Feinabstimmung des Replit-Modells verwenden.
Führung
Im Abschnitt „Nutzung“ im ursprünglichen LLM Foundry-Repo wird beschrieben, wie Sie Ihren Datensatz verwenden und das Replit-Modell optimieren.
Wenn Sie in diesem Abschnitt die Optionen 1) oder 2) verwenden, ändern Sie train_loader
und ggf. eval_loader
in Ihrer Trainings-YAML basierend auf dem, was Sie in den beiden vorherigen Schritten getan haben. Wenn Sie Option 3) (dh Streaming-Datensatz) verwenden, konvertieren Sie den Datensatz zunächst in das richtige Format mit Eingabeaufforderungs- und Antwortschlüsseln und schreiben ihn dann in einen lokalen MDS-Datensatz. Danach können Sie Ihr YAML so ändern, dass es darauf verweist.