QWEN-3: EASIEST WAY TO FINE-TUNE WITH REASONING 🙌

German-language tutorial showing how to fine-tune QUIN family models (Qwen/Quin) using LoRA adapters and a mix of reasoning (chain-of-thought) and non-reasoning instruction data. Covers the rationale for using adapters (avoid catastrophic forgetting), dataset preparation and prompt templates (special think/chain-of-thought tokens), quantization and memory-saving tools/notebooks, SFT trainer setup and example hyperparameters, and example inference settings to toggle hybrid 'think' vs 'non-think' behavior. Demonstrates a small-scale Colab workflow (4-bit loading, modest VRAM ~12 GB, short run ~30 steps) and discusses saving/loading only LoRA adapters for edge deployment.
Questions this video answers
248 tokens
4-bit
~12 GB
Maximum ~30 steps
~36%
Chapters
Heute zeige ich euch, wie ihr ein QUIN Modell anhand eures eigenen Datensatzes optimiert. QUIN bietet verschiedene Größen für diese Optimierung. Sie laufen auf Smartphones oder skalieren auf riesige Cluster. Die Leistung dieser Modelle ist wirklich unglaublich. Die Anpassung dieser Modelle an benutzerdefinierte Daten weicht jedoch stark von traditionellen LLMs ab. Aufgrund des hybriden Denkmodus der Quinn Modelle müsst ihr eure Daten ganz speziell strukturieren. Innerhalb desselben Modells könnt ihr also die Argumentation mit einem einzigen Hyperparameter aktivieren oder deaktivieren. Aus diesem Grund müsst ihr eure Daten in einem ganz bestimmten Format strukturieren, das wir in diesem Video betrachten werden. Wie ihr euren Datensatz einrichtet, seht ihr hier. Welche verschiedenen Hyperparameter gibt es für eine optimale Inferenz und was müsst ihr beim Quantitätsmodell optimieren. Fangen wir an. Zur Feinabstimmung verwende ich UNSLOT, was wahrscheinlich eine der besten Optionen ist, wenn man nach Möglichkeiten sucht, LLMs zu optimieren. Wir verwenden dieses offizielle Notebook des Unsort Teams. Zuvor möchte ich jedoch über ein sehr wichtiges Thema hinsichtlich der Feinabstimmung sprechen. Es gab dieses Paper über katastrophales Vergessen in großen Sprachmodellen während der kontinuierlichen Feinabstimmung. In diesem Paper wurde gezeigt, dass das Modell dazu neigt, einen Teil seines ursprünglichen Wissens zu vergessen, wenn man einen Prüfpunkt eines großen Sprachmodells nimmt und ihn dann anhand separater diskreter Aufgaben weiter fein abstimmt. Dies wird viel deutlicher sein, wenn man eine vollständige Feinabstimmung der Gewichtungen vornimmt. In diesem Video verwenden wir ein Konzept von Loras und die Idee. Ist sehr Anstatt die ursprünglichen Gewichtungen des Modells zu optimieren oder zu ändern, fügen wir Adopter Gewichtungen hinzu. Diese Adopter sind im Vergleich zur Gesamtzahl der Gewichtungen, die im ursprünglichen Modell vorhanden sind, viel kleiner. Diese zusätzlichen Gewichtungen werden jedoch das Verhalten des Modells verändern. Ich werde einen Link zu diesem wirklich guten Artikel einfügen, der zwar etwas veraltet ist, aber die Konzepte von PFT und LORAS eingeführt hat. Gehen wir nun den Code durch. Die wichtigsten Teile dieser Codebasis sind die Vorbereitung des Datensatzes und die Kombination von Reasoning Traces und Non Reasoning Diagramm Datensätzen. Dies ist besonders wichtig, wenn die Reasoning Fähigkeiten in ihrem optimierten Modell erhalten bleiben sollen. Wenn sie sich keine Sorgen um die Reasoning Fähigkeiten machen, können Sie einfach einen Instruct Datensatz erstellen, der weiterhin funktioniert. Wir müssen onslot installieren, das ist das Paket, das wir verwenden werden. Onslaught ist ziemlich genial, da es den benötigten Speicherbedarf reduziert, indem es die Modelle mit Hilfe der Dynamic Quantisierungsmethode quantisiert. Dies ist die neue Quantisierungsmethode, die von der Branche übernommen wird. Mit Dynamic konsolidierte Modelle werden also in Lama 7 CVP, Lama und OpenWeb sowie vielen anderen unterstützt. Das scheint auch bei einer Mischung aus Expertenmodellen und nonis zu funktionieren, was ziemlich gut ist. Denken Sie über ANNE auf Ihrem lokalen Rechner nach, dann nutzen Sie deren Quantisierungsmethode. Im Allgemeinen kann die Quantisierung die Leistung im Vergleich zu nonis beeinträchtigen. Dies scheint die Leistung jedoch zu erhalten, was eine gute Nachricht ist. Google hat außerdem vor kurzem das quantisierungsbewusste Training für GEMA Modelle eingeführt. Mit der neuen Quantisierungstechnik können Sie Modelle mit sehr ähnlicher Leistung ausführen, benötigen jedoch erheblich weniger VRAM. OK. Zurück zum Code. Um das Modell Quint 314 Billion auszuführen, geben wir einfach den Modellnamen an. Dieser wird auf Hugging Face gehostet. Dann müssen Sie die maximale Sequenzlänge definieren. Dies ist im Grunde das Kontextfenster des Modells, das Sie verwenden möchten. Quen unterstützt ein Kontextfenster von bis zu Token. Beachten Sie jedoch, dass Sie mehr VM benötigen, wenn Sie die Kontextlänge oder das Kontextfenster erweitern. In diesem Beispiel beschränken wir ES nur auf 248 Token. Sie können aber auch darüber hinausgehen. Das Modell wird nun in vier Bits geladen und wir werden keine vollständige Feinabstimmung vornehmen. Wir werden lediglich die LOA Adapter feinabstimmen und diese LOA Adapter dann wieder zum Modell hinzufügen. Ich werde nicht zu sehr auf diese Hyperparameter eingehen. In früheren Videos erklärte ich einige, doch es gibt diverse Hyperparameter du festlegen kannst. Der wichtigste ist der Rang. Er bestimmt im Grunde die Größe deiner LORA Adopter Matrizen. Wenn du also einen höheren Rang hast, hast du im Grunde mehr Gewichtungen in deinen Laura Adoptern, was wiederum einen höheren Speicherbedarf bedeutet. Dann hast du noch LORA Alpha. Das im Grunde bestimmt, wie viel Einfluss die LORA Adopter auf die ursprünglichen Gewichtungen haben. Wenn du die LURA Adopter wieder mit den ursprünglichen Gewichtungen des Modells zusammenführst, Ich habe diese in meinen vorherigen Videos viel ausführlicher behandelt, daher werde ich Links zu einigen dieser Videos einfügen. Der wichtigste Teil dieses Notizbuchs ist nun die Datenvorbereitung. Hier sollten Sie die meiste Zeit verbringen. Wie ich bereits zu Beginn sagte, unterstützen Quin Modelle das Schlussfolgern in einem hybriden Modell. Das Modell kann Schlussfolgern aktivieren oder deaktivieren. Abhängig von Ihren eigenen Daten muss Ihr Datensatz einige Beispiele mit Schlussfolgerungen oder Gedankenketten enthalten, wenn Sie das Schlussfolgern aktivieren möchten. Wie ich bereits zu Beginn des Videos erwähnt habe, unterstützen Quin Modelle hybride Schlussfolgerfunktionen, die je nach Bedarf aktiviert oder deaktiviert werden können. Wenn Sie also die Schlussfolgerfunktionen beibehalten möchten, empfiehlt es sich, einen Datensatz bereitzustellen, der sowohl Schlussfolgerungen aus einer Gedankenkette als auch einen Datensatz ohne Schlussfolgerfunktionen kombiniert. Sie können auch einen Datensatz ohne Schlussfolgerfunktionen verwenden. Das Modell kann weiterhin Gedankenketten erzeugen, aber das ist möglicherweise für Ihren speziellen Anwendungsfall nicht so gut geeignet. In diesem Beispiel kombinieren wir also zwei verschiedene Datensätze. Einer enthält Gedankenketten aus R und der zweite ist ein Anweisungsdatensatz mit Fragen und Antworten. OK, schauen wir uns zunächst den Datensatz zur Gedankenkette an. Er besteht aus zwei verschiedenen Komponenten. Das ist das ursprüngliche Problem des Benutzers. Das ist die Gedankenkette, die von R generiert wurde. Wir verwenden also Gedankenketten von deepseek R. Und dann gibt es noch eine weitere Spalte mit der endgültigen Antwort. Der zweite Datensatz, der sich nicht auf Argumente bezieht, ist viel einfacher. Hier hahaben wir nur zwei verschiedene Felder. Eines ist die menschliche Eingabe, die im Grunde genommen vom Benutzer stammt, und hier ist die Antwort des Modells. Diese basiert auf Share GPT, einem Datensatz, der menschliche Eingaben und Antworten von auf Chat GPT basierenden Modellen gesammelt hat. Wir laden also beide herunter. Hier ist der Datensatz zur Gedankenkette, wie er genau aussieht. Wir haben die erwartete Antwort, den Problemtyp, die Problemquelle. Diese interessieren uns nicht wirklich. Das Einzige, was uns interessiert, ist die erwartete Antwort, die Generierung des Modells und das ursprüngliche Problem. So sieht der Datensatz tatsächlich aus. Wir haben also die erwartete Antwort, aber wir sind wirklich an der durch die Problemstellung generierten Lösung und dann an der erwarteten Antwort interessiert. Für die Nichtargumentation haben wir nur die Konversationsquelle und die Bewertungen. Schauen wir uns nun eine einfache Ablaufverfolgung aus diesem Schlussfolgerungsdatensatz an. Hier haben wir also die erwartete Antwort. Hier ist das ursprüngliche Problem, das die Benutzereingabe ist und dann haben wir Gedankenkettenspuren von R und am Ende haben wir die endgültige Lösung. Im Grunde ist dies also eine Destillation von R in einen Schlussfolgerungsdatensatz, den wir zur Feinabstimmung unseres Modells verwenden werden. OK, so sieht die Gedankenkette aus. Wir haben diese speziellen Tags für Gedankenketten oder die Gedankenkette und am Ende haben wir die endgültige Antwort an den Benutzer. Jetzt werden wir unser Modell fein abstimmen, aber wir müssen diesen spezifischen Datensatz in ein Format konvertieren, das unser Modell verstehen kann. Hier kommen die Eingabeaufforderungsvorlagen ins Spiel und es ist sehr wichtig, die Eingabeaufforderungsvorlage von Quint zu verstehen. Dies ist nun die Prompt Vorlage der Fine Tuning oder Instruct Fine Tuning Version von quintry. Eigentlich sollten wir sie nicht Instruct Fine Tuning nennen, denn es handelt sich um das nachtrainierte Modell, nicht um das vortrainierte Modell. Das vortrainierte Modell oder Basismodell verfügt über keine spezifische Promptvorlage. Sie können Ihre eigene Promptvorlage erstellen und einfach das ursprüngliche Basismodell, also das vortrainierte Modell, optimieren. Nach dem Training folgt es nun jedoch diesem ganz bestimmten Befehlssatz. Um nun das Denken zu ermöglichen, benötigen wir diese Denktags. Für einen Prompt, der kein Denken oder keine Gedankenkette enthält, können Sie einfach diese Prompt Vorlage verwenden. Da es ein Hybridmodell ist, lassen sich Denktoken einfach aktivieren deaktivieren. Es ist sehr wichtig zu bedenken, dass wir, da wir die Post Trang Version von Quinty optimieren, einen Datensatz benötigen, der der Prompt Vorlage folgt, die das Quint Team verwendet hat. Außerdem optimieren wir nicht das gesamte Modell, wir nehmen nur eine Feinabstimmung mit Hilfe der Laura Adopter vor. Das ursprüngliche Verhalten des Modells ändert sich also nicht. Wenn wir dieses Flag im Tokenizer angeben, wird weiterhin eine Gedankenkette erzeugt. OK. Aus dem Schlussfolgerungsdatensatz oder den Traces von R, wählen wir einfach das Problem sowie die generierte Antwort aus und wandeln diese dann in die Prompt Vorlage von Quint um. Wir ordnen diesen Datensatz also diesem neuen Format zu und Sie können sich den resultierenden Datensatz tatsächlich ansehen. Lassen Sie mich Ihnen ein Beispiel zeigen. Ich habe dieses hier, das im Grunde diese speziellen Token am Anfang hinzufügt. Dies ist nun ein Beispiel für ein Sample, das hier Schlussfolgerungstoken enthält. Wir haben also unsere Schlussfolgerungstoken. Hier endet die Gedankenkette und dann haben wir die Antwort des Modells mit der endgültigen Antwort. Das Wichtigste, das Sie beachten müssen, ist, dass all dies in einen einzigen String umgewandelt wird. OK, es gibt mehrere Teile dieses Strings, basierend auf der bereitgestellten Promptvorlage, aber all dies befindet sich in einem einzigen String. Die Nicht Schlussfolgerungsdaten sind nun anders, wie wir gesehen haben. Sie bestehen also aus zwei Teilen. Eine ist die Eingabe des Nutzers und die Antwort vom Chat GPT oder einem LLM. OK, wir müssen dies also standardisieren und in genau dasselbe Format konvertieren. Dazu führen wir dies durch den Tokenizer, wenden die Chatvorlage an, die wir haben und so wird es aussehen. Wir haben also diese speziellen Token am Anfang hinzugefügt. Wir haben die Benutzereingabe und dann die Antwort vom Modell. Wenn Sie hier in diesem Fall nachsehen, sind die Token immer noch vorhanden, es gibt jedoch nichts in der Gedankenkette. Betrachten wir nun die Anzahl der Beispiele in beiden Datensätzen. Der Datensatz unreflektierter Daten ist sehr groß. Wir reduzieren ihn auf einen kleineren Datensatz. Im Grunde können Sie anhand Ihrer eigenen Anforderungen festlegen, wie viele Beispiele für denkende und nicht denkende Daten sie haben möchten. Wir erhalten also diesen Datensatz und der endgültige Datensatz enthält etwa Beispiele und. So sieht eines dieser Beispiele aus. Also befindet sich alles in einem einzigen String innerhalb eines Datenrahmens mit einem Textschlüssel. Das ist also der Schlüssel und hier ist der Wert. Wir haben unsere Eingabe auf Forderungsvorlage und hier auch unsere Denktoken. Für dieses Beispiel gibt es keine Gedankenkette, diese stammt also aus dem Datensatz ohne Argumentation. Aber wir müssen diese Denktoken trotzdem behalten und danach haben wir die Antwort vom Modell. Wir trainieren dieses Modell also sehr ähnlich, wie wir die Fine Tuning Version trainieren und anweisen würden. Aber das Modell wird lernen, Denk und Nicht Denktoken zu produzieren. Basierend auf der von uns bereitgestellten Eingabeaufforderungsvorlage, die der vom Quint Team eingeführten Eingabeaufforderungsvorlage folgt. OK, dann müssen wir nur noch unseren SFT Trainer einrichten. Wir geben den Modellnamen, den Tokenizer an. Dies ist der ursprüngliche Tokenizer, der kombinierte Datensatz. Dann weisen wir ihn an, das Textfeld zu betrachten. Jedes Beispiel ist also als einzelner String strukturiert, der sich in diesem Feld befindet. Dann legen wir einige andere Hyperparameter fest. Jetzt führen wir nicht einmal einen ganzen aus. Die Batchgrösse ist relativ klein, daher möchten wir dies nur für maximal 30 Schritte ausführen, eine relativ hohe Lernrate beibehalten. Ich habe diese Hyperparameter bereits in einigen meiner vorherigen Videos behandelt, daher werde ich einige davon verlinken. Sieh sie dir unbedingt an, wenn du daran interessiert bist, wie diese Hyperparameter festgelegt werden. Hier werden insgesamt ca. 12 GB verwendet. Das bedeutet, dass wir ein Milliarden Modell mit einer kostenlosen T GPU von Google Colab optimieren können. Wir führen das Modell nun für eine relativ geringe Anzahl von Schritten aus und du kannst sehen, dass der Trainingsverlust ziemlich gut abnimmt. Jetzt gibt es einen kleinen Anstieg, aber wenn wir die Batchgrösse und die Lernrate anpassen, werden wir das wahrscheinlich gar nicht sehen. Im Allgemeinen möchtest du das Modell für eine viel höhere Anzahl von Schritten mit wahrscheinlich viel mehr Daten ausführen. Dies ist jedoch nur ein kurzes Beispiel in Bezug auf den Speicherverbrauch. Es wurden ca. 36 Prozent des Speichers verwendet, was ziemlich erstaunlich ist. OK, um nun die Inferenz aus diesem Modell zu ziehen, müssen wir nur denselben Tokenizer verwenden. Wir erhalten also die Benutzereingabe, tokenisieren sie und wandeln sie in Token um. Dann führen wir das einfach durch das Modell. Wir verwenden also nur bestimmte Hyperparameter, wenn wir das Modell im Denk oder Nicht Denkmodus verwenden möchten. Hier sind also die Einstellungen. Wenn wir es im Nichtdenkmodus verwenden möchten, stellen sie die Temperatur auf 7 ein, was relativ höher ist. Dies scheint jedoch die optimale Konfiguration zu sein, die sie empfehlen. Und wenn wir diese Modelle lokal ausführen, erhalten sie wahrscheinlich keine optimale Leistung, wenn ihre Einstellungen nicht mit den Vorschlägen übereinstimmen. Ähnlich empfehle ich für den Denkmodus eine relativ niedrigere Temperatur zu verwenden, was sehr interessant ist. Die obere und obere K Temperatur sind in beiden Fällen ähnlich, aber die obere P Temperatur ist ziemlich unterschiedlich, was wiederum sehr interessant ist. Und Sie müssen sicherstellen, dass Sie den richtigen Hyperparameter festlegen, um die bestmögliche Inferenz aus Quin zu erhalten. OK, In diesem Beispiel deaktivieren wir absichtlich den Denkmodus. Dies ist also der Nicht Denkmodus desselben Modells und die Antwort, die Sie sehen, enthält keine Denktoken. Wenn Sie jedoch nur das Denken aktivieren, wenn Sie die Eingabe auf Forderungsvorlage auf den Tokenizer anwenden, sehen wir jetzt tatsächlich die Denktoken für genau dieselbe Eingabeaufforderung und erhalten die endgültige Antwort. Diese Inferenzmethode ähnelt nun sehr dem QWQ Modell von Quin, das die vorherige Generation von Argumentationsmodellen darstellte. Ich denke auch, dass der neue Gemini 2.5 Flash mit hybriden Argumentationsfunktionen einen sehr ähnlichen Mechanismus verwendet, um den Denk und Nicht Denkmodus zu steuern. OK. Nehmen wir an, Sie möchten diesen Ladevorgang speichern. Sie können ihn einfach speichern, indem Sie die Funktion retrain speichern aufrufen und einen Namen angeben. Sie müssen auch den Tokenizer speichern, um dann nur dieses Modell zu laden. Geben Sie den Namen des Lura an. Ich denke, dass er auch automatisch die Modellgewichtungen für Sie lädt, da er nur Ihre Lura Adopter speichert, nicht die vollständigen Modellgewichtungen. Es gibt andere Optionen wie Z, das Ausführen der Inferenz mit VLM, das ist sehr ähnlich. Sie können die Inferenz auch mit LAMA CPP unter Verwendung des quantisierten Modells ausführen. Richtig. Der Link zu diesem Google colab Notebook befindet sich in der Videobeschreibung. Ich empfehle dringend, sich das Notebook anzusehen und damit herumzuspielen. Das ist sehr spannend, da man diese Quin Modelle an die eigenen Bedürfnisse anpassen kann. Und da es sich um ein 6 Milliarden Modell handelt, kann man dieses kleine Modell tatsächlich nehmen, optimieren und dann auf einem Edge Gerät wie einem Smartphone oder sogar für einige IoT Anwendungen ausführen. Ich hoffe, dieses Video war hilfreich für Sie. Danke fürs Zuschauen und wie immer bis zum nächsten Mal.










