💬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.pyarrow-up-right

Liste der Colab-Notebooks mit Chat-Vorlagen:

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(...)
circle-exclamation

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:arrow-up-right

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_template um 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 die Funktion 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?