💬Chat-Vorlagen
Lerne die Grundlagen und Anpassungsmöglichkeiten von Chat-Vorlagen, einschließlich Conversational, ChatML, ShareGPT, Alpaca-Formate und mehr!
In unserem GitHub haben wir eine Liste aller Chat-Vorlagen, die Unsloth verwendet, einschließlich für Llama, Mistral, Phi-4 usw. Wenn Sie also Hinweise zur Formatierung oder zum Anwendungsfall benötigen, können Sie sie hier einsehen: github.com/unslothai/unsloth/blob/main/unsloth/chat_templates.py
Liste der Colab-Chatvorlagen-Notebooks:
Textklassifikation von Timotheeee
Mehrere Datensätze von Flail
Neue Token hinzufügen
Unsloth hat eine Funktion namens add_new_tokens die es Ihnen ermöglicht, neue Token zu Ihrem Finetuning hinzuzufügen. Zum Beispiel, wenn Sie <CHARACTER_1>, <THINKING> und <SCRATCH_PAD> hinzufügen möchten, können wir Folgendes tun:
model, tokenizer = FastLanguageModel.from_pretrained(...)
from unsloth import add_new_tokens
add_new_tokens(model, tokenizer, new_tokens = ["<CHARACTER_1>", "<THINKING>", "<SCRATCH_PAD>"])
model = FastLanguageModel.get_peft_model(...)Hinweis - Sie MÜSSEN immer add_new_tokens vor FastLanguageModel.get_peft_model!
Mehrwertige Gespräche
Ein Problem, falls Sie es nicht bemerkt haben: Der Alpaca-Datensatz ist einstufig, während die Nutzung von ChatGPT interaktiv war und Sie mehrmals mit ihm sprechen können. Zum Beispiel ist links das, was wir wollen, aber rechts liefert der Alpaca-Datensatz nur einzelne Gespräche. Wir möchten, dass das feinabgestimmte Sprachmodell irgendwie lernt, mehrstufige Konversationen genau wie ChatGPT zu führen.

Deshalb haben wir den conversation_extension Parameter eingeführt, der im Wesentlichen einige zufällige Zeilen in Ihrem einstufigen Datensatz auswählt und sie zu einer Konversation zusammenführt! Wenn Sie ihn zum Beispiel auf 3 setzen, wählen wir zufällig 3 Zeilen aus und fügen sie zu einer zusammen! Zu lange Einstellungen können das Training verlangsamen, aber Ihren Chatbot und das endgültige Finetuning erheblich verbessern!

Dann setzen Sie output_column_name auf die Vorhersage- / Ausgabespalte. Für den Alpaca-Datensatz wäre es die Ausgabespalte.
Wir verwenden dann die standardize_sharegpt Funktion, um den Datensatz einfach in ein korrektes Format für das Finetuning zu bringen! Rufen Sie diese Funktion immer auf!

Anpassbare Chatvorlagen
Wir können nun die Chatvorlage für das Finetuning selbst angeben. Das sehr berühmte Alpaca-Format ist unten:

Aber denken Sie daran, wir sagten, dies sei eine schlechte Idee, weil ChatGPT‑Stil-Finetunes nur 1 Eingabeaufforderung erfordern? Da wir erfolgreich alle Datensatzspalten mit Unsloth in eine einzige zusammengeführt haben, können wir im Wesentlichen die unten gezeigte Chatvorlage im Stil mit 1 Eingabespalte (instruction) und 1 Ausgabe erstellen:

Wir verlangen nur, dass Sie ein {INPUT} Feld für die Anweisung und ein {OUTPUT} Feld für das Ausgabeergebnis des Modells einfügen. Tatsächlich erlauben wir optional ein {SYSTEM} Feld, das nützlich ist, um eine Systemaufforderung wie in ChatGPT anzupassen. Zum Beispiel sind unten einige coole Beispiele, mit denen Sie die Chatvorlage anpassen können:

Für das ChatML-Format, das in OpenAI-Modellen verwendet wird:

Oder Sie können die Llama-3-Vorlage selbst verwenden (die nur funktioniert, wenn die Instruct-Version von Llama-3 verwendet wird): Tatsächlich erlauben wir optional ein {SYSTEM} Feld, das ebenfalls nützlich ist, um eine Systemaufforderung wie in ChatGPT anzupassen.

Oder bei der Titanic-Vorhersageaufgabe, bei der Sie vorhersagen mussten, ob ein Passagier gestorben oder überlebt hat, in diesem Colab-Notebook, das CSV- und Excel-Uploads enthält: https://colab.research.google.com/drive/1VYkncZMfGFkeCEgN2IzbZIKEDkyQuJAS?usp=sharing

Anwenden von Chat-Vorlagen mit Unsloth
Für Datensätze, die üblicherweise dem gängigen ChatML-Format folgen, besteht der Prozess zur Vorbereitung des Datensatzes für Training oder Finetuning aus vier einfachen Schritten:
Überprüfen Sie die Chatvorlagen, die Unsloth derzeit unterstützt:\
Dies gibt die Liste der derzeit von Unsloth unterstützten Vorlagen aus. Hier ein Beispielausgabe:\
\
Verwenden Sie
get_chat_templateum die richtige Chatvorlage auf Ihren Tokenizer anzuwenden:\\
Definieren Sie Ihre Formatierungsfunktion. Hier ein Beispiel:\
Diese Funktion durchläuft Ihren Datensatz und wendet die von Ihnen definierte Chatvorlage auf jede Probe an.\
Laden wir schließlich den Datensatz und wenden die erforderlichen Änderungen auf unseren Datensatz an: \
Wenn Ihr Datensatz das ShareGPT-Format mit "from"/"value" Schlüsseln anstelle des ChatML "role"/"content" Formats verwendet, können Sie zuerst die
standardize_sharegptFunktion verwenden, um ihn zu konvertieren. Der überarbeitete Code sieht dann wie folgt aus: \
Weitere Informationen
Vorausgesetzt, Ihr Datensatz ist eine Liste von Listen von Dictionaries wie unten:
Sie können unser get_chat_template verwenden, um es zu formatieren. Wählen Sie chat_template aus, um eines von zephyr, chatml, mistral, llama, alpaca, vicuna, vicuna_old, unslothzu sein, und verwenden Sie mapping um die Wörterbuchwerte abzubilden von, value usw. map_eos_token ermöglicht es Ihnen, <|im_end|> ohne weiteres Training auf EOS abzubilden.
Sie können auch Ihre eigenen benutzerdefinierten Chatvorlagen erstellen! Zum Beispiel ist unsere interne Chatvorlage, die wir verwenden, unten. Sie müssen ein Tupel aus (custom_template, eos_token) übergeben, wobei das eos_token im Template verwendet werden muss.
Zuletzt aktualisiert
War das hilfreich?

