💬Chat-Vorlagen
Lerne die Grundlagen und Anpassungsoptionen 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-Notebooks mit Chat-Vorlagen:
Textklassifikation von Timotheeee
Mehrere Datensätze von Flail
Neue Tokens hinzufügen
Unsloth hat eine Funktion namens add_new_tokens die es Ihnen erlaubt, neue Tokens zu Ihrem Fine-Tuning hinzuzufügen. Zum Beispiel, wenn Sie hinzufügen möchten <CHARACTER_1>, <THINKING> und <SCRATCH_PAD> 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 aufrufen add_new_tokens vorher FastLanguageModel.get_peft_model!
Mehrfachrunden-Konversationen
8. Mehrzugige Konversationen

Ein kleines Problem, falls es Ihnen nicht aufgefallen ist, ist, dass der Alpaca-Datensatz einstufig ist, während ChatGPT interaktiv ist und man in mehreren Zügen mit ihm sprechen kann. Zum Beispiel ist links, was wir wollen, aber rechts, was der Alpaca-Datensatz bietet, sind nur einzelne Unterhaltungen. Wir möchten, dass das feinabgestimmte Sprachmodell irgendwie lernt, mehrzugige Unterhaltungen genauso wie ChatGPT zu führen. Also haben wir den conversation_extension

Parameter eingeführt, der im Wesentlichen zufällige Zeilen in Ihrem einstufigen Datensatz auswählt und sie zu einer einzigen Konversation zusammenführt! Wenn Sie ihn z. B. auf 3 setzen, wählen wir zufällig 3 Zeilen aus und führen sie zu einer zusammen! Zu lange Einstellungen können das Training verlangsamen, könnten aber Ihren Chatbot und das finale Finetuning deutlich verbessern! Wählen Sie die Ausgabe- oder Ziel-/Vorhersagespalte in Setzen Sie dann
auf die Vorhersage- / Ausgabespalte. Für den Alpaca-Datensatz wäre dies die Ausgabespalte. Wir verwenden dann die standardize_sharegpt

Anpassbare Chat-Vorlagen
9. Anpassbare Chat-Vorlagen

Wir können nun die Chat-Vorlage für das Finetuning selbst festlegen. Das sehr bekannte Alpaca-Format ist unten:

Aber denken Sie daran, wir sagten, dass dies keine gute Idee ist, weil ChatGPT-ähnliche Finetunes nur 1 Prompt erfordern? Da wir erfolgreich alle Datensatzspalten mit Unsloth in einen Prompt zusammengeführt haben, können wir im Wesentlichen die unten stehende Chat-Vorlage mit 1 Eingabespalte (Anweisung) und 1 Ausgabe erstellen: Wir verlangen nur, dass Sie ein {INPUT} Feld für die Anweisung und ein {OUTPUT} Feld für die Ausgabe des Modells einfügen. Tatsächlich erlauben wir optional auch ein {SYSTEM}

Feld, das nützlich ist, um eine System-Anweisung genauso wie in ChatGPT anzupassen. Zum Beispiel sind unten einige coole Beispiele, mit denen Sie die Chat-Vorlage anpassen können:

Für das ChatML-Format, das in OpenAI-Modellen verwendet wird: Feld für die Ausgabe des Modells einfügen. Tatsächlich erlauben wir optional auch ein Oder Sie können die Llama-3-Vorlage selbst verwenden (die nur funktioniert, wenn Sie die instruct-Version von Llama-3 verwenden): Tatsächlich erlauben wir optional auch ein

Feld, das nützlich ist, um eine System-Anweisung genauso wie in ChatGPT anzupassen. Um auf das Titanic-Finetuning-Notebook zuzugreifen oder wenn Sie eine CSV- oder Excel-Datei hochladen möchten, gehen Sie hierhin:

Anwenden von Chat-Vorlagen mit Unsloth
Für Datensätze, die normalerweise dem gängigen chatml-Format folgen, besteht der Prozess der Vorbereitung des Datensatzes für Training oder Fine-Tuning aus vier einfachen Schritten:
Überprüfen Sie die Chat-Vorlagen, 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 Chat-Vorlage auf Ihren Tokenizer anzuwenden:\\
Definieren Sie Ihre Formatierungsfunktion. Hier ein Beispiel:\
Diese Funktion durchläuft Ihren Datensatz und wendet die von Ihnen definierte Chat-Vorlage auf jede Probe an.\
Laden wir schließlich den Datensatz und wenden die erforderlichen Änderungen an unserem Datensatz an: \
Wenn Ihr Datensatz das ShareGPT-Format mit den Schlüsseln "from"/"value" anstelle des ChatML-Formats "role"/"content" verwendet, können Sie zunächst die
Wir verwenden dann dieFunktion verwenden, um es zu konvertieren. Der überarbeitete Code sieht nun wie folgt aus: \
Weitere Informationen
Angenommen, Ihr Datensatz ist eine Liste von Listen von Dictionaries wie unten:
Du kannst unser get_chat_template um es zu formatieren. Wählen Sie chat_template als eine beliebige von zephyr, chatml, mistral, llama, alpaca, vicuna, vicuna_old, unsloth, und verwenden Sie mapping um die Wörterbuchwerte zuzuordnen von, value usw. map_eos_token ermöglicht es Ihnen, <|im_end|> auf EOS ohne weiteres Training zuzuordnen.
Sie können auch Ihre eigenen benutzerdefinierten Chat-Vorlagen erstellen! Zum Beispiel ist unsere interne Chat-Vorlage, die wir verwenden, unten. Sie müssen ein Tuple aus (custom_template, eos_token) übergeben, wobei das eos_token innerhalb der Vorlage verwendet werden muss.
Zuletzt aktualisiert
War das hilfreich?

