12. Juni 2026
Nach langer Zeit beschlossen, das Entwickler‑Retrospektive erneut zu schreiben
- In der Zwischenzeit habe ich mich zu sehr darauf konzentriert, nur perfekte Aufzeichnungen zu hinterlassen, und habe dadurch das Schreiben immer wieder aufgeschoben
- Um die Versuche und Überlegungen der letzten etwa 10 Tage sinnvoll festzuhalten, habe ich die Recherche und den Architektur‑Entwurfsprozess für ein Godot‑spezifisches Codierungsmodell dokumentiert
Ein Experiment durchgeführt, um die RunPod‑Kosten zu senken, indem ein Qwen‑Modell auf dem lokalen PC bereitgestellt wird
- Versucht, ein 9B‑Modell unter WSL auf einer RTX 3060‑Umgebung zu betreiben
- Allerdings waren Netzwerk‑Durchsatz und Latenz problematisch; bereits die Vorverarbeitungsphase dauerte über 5 Minuten, sodass das lokale Experiment abgebrochen wurde
Untersuchung der Datensatzerfassungsmethode für das Training eines Godot‑spezifischen Modells
- Das Dataset
wallstoneai/godot-gdscript-datasetauf Hugging Face als Referenz‑Datensatz geprüft - Mit Gemini analysiert, wie dieses Dataset erstellt wurde
- Kern war, GitHub‑Repository‑Einheiten – README.md,
.gd‑Dateien, Projektstruktur – zu einem einzigen Text zusammenzuführen und anhand vonproject.godot‑Konfigurationsdateien sowie GDScript‑Syntax‑Unterschieden Godot 3/4 zu klassifizieren - Insbesondere zeigte sich, dass Version‑spezifische Hinweise wie
config_version,config/features,onready var,@onready,KinematicBody,CharacterBody3Des ermöglichen, selbst bei nicht‑mainstream‑Sprachen ohne JSON‑Abhängigkeitsdateien eine Versionsfilterung vorzunehmen
- Das Dataset
Um den Fine‑Tuning‑Ablauf zu verstehen, ein Video zum Fine‑Tuning der klassischen Programmiersprache OPL angesehen
- Quelle: https://www.youtube.com/watch?v=5wGD92ktQL4
- Dabei wurde klar, dass das Sammeln von Datasets und das Aufbereiten für das eigentliche Training getrennte Aufgaben sind
Den Coach von SSAFY nach effektiven Methoden gefragt, um Daten von weniger verbreiteten Sprachen einer bestimmten Version zu sammeln
- Die aktuelle Godot‑Datensammlung ist eher ein Roh‑Code‑Datensatz als ein Q&A‑Datensatz für das Training von Assistenten
- Für ein Chat‑Bot‑Produkt sollte man Rohdaten nicht unverändert verwenden, sondern mit einem LLM Frage‑Antwort‑Paare generieren und in ein Instruction‑Dataset umwandeln
- Ohne diesen Schritt würde das Modell bei Anfragen wie „Entwirf eine Karte“ wahrscheinlich stark python‑zentrierte Antworten liefern, die es bereits gut gelernt hat
Als Kandidat für ein Instruction‑Dataset wurde
ise-uiuc/Magicoder-Evol-Instruct-110Kgeprüft- Da es überwiegend Python‑basiert ist, ist es nicht direkt für reines Godot‑4‑Training geeignet
- Die Frage, ob man das Modell dazu bringen kann, Godot‑Antworten zu geben, ohne Godot explizit zu erwähnen, blieb offen; jedoch erhöht das klare Einbringen des Kontexts „Godot“ die Wahrscheinlichkeit einer korrekten Antwort, weil das Ausgangs‑Modell stark auf Python gewichtet ist
Einen Senior‑Studenten zu RAG‑ und Prompt‑Strategien befragt
- Statt alle Daten dem Modell zuzuführen, könnte ein Vektor‑Such‑System auf Basis von Markdown‑Dokumenten aufgebaut werden, das gezielt die benötigten Informationen abruft – ein pragmatischer Ansatz
- Da das erneute Indizieren großer Dokumentmengen kosten- und zeitintensiv ist, erscheint in der aktuellen Phase ein Such‑/Prompt‑basiertes System geeigneter als reines Training
Erste Architektur für ein Godot‑spezifisches Codierungsmodell entworfen
Anfangs dachte ich an eine einfache Struktur wie
Datensatzsammlung -> Frage/Antwort-Datensatz erstellen -> Modelltraining- Es stellte sich jedoch das Problem, dass man die Änderungen von Godot 3 zu 4 gut kennen muss, um eine genaue Filterung und Erstellung von Antwortdaten zu ermöglichen
- Da bei falscher Handhabung Godot‑3‑Code, Python‑Code und veraltete APIs in den Antwortdaten vermischt werden könnten, wurde die Architektur neu überdacht
Für die Klassifizierung und Konvertierung von Godot‑3/4‑Versionen wurde ein RAG‑Chatbot auf Basis offizieller Dokumentation an der Front platziert
- Man stellte sich vor, die offiziellen Godot‑Migrationsdokumente und die Godot‑4‑Dokumentation zu crawlen, einen RAG‑Chatbot zu erstellen und diesen zu nutzen, um gesammelte Daten als Godot 3 oder 4 zu klassifizieren
- Anschließend wurde ein Workflow entworfen, bei dem nur als Godot 4 erkannte Daten zu einem Instruction‑Datensatz verarbeitet werden
Durch ChatGPT wurden zusätzliche Einblicke in SFT/DPO‑Lernansätze gewonnen
- Bei SFT können Aufgaben wie Godot 3/4‑Klassifizierung, Godot 3 → 4‑Konvertierung, Godot 4‑Code‑Generierung, Godot 4‑Fehlerbehebung und Godot‑3‑API‑Ablehnung/Korrektur erstellt werden
- Bei DPO/Preference kann man Präferenzdaten zusammenstellen, indem man
schlechte Antwort = Antwort mit gemischtem Godot 3‑Codeundgute Antwort = reine Godot 4‑Code‑Antwortdefiniert
Mit
unclecode/crawl4aiwurde das Crawlen der offiziellen Godot‑Dokumentation durchgeführt- Startdokument: https://docs.godotengine.org/en/stable/tutorials/migrating/upgrading_to_godot_4.html
- Es wurden etwa 1 500 Seiten inklusive der offiziellen Godot 4‑Dokumentation, der Godot 3 → 4‑Migrationsdokumente, der Godot 4‑Klassenreferenz und der Godot‑4‑Tutorials gecrawlt und dokumentiert
- Obwohl das Volumen größer erschien, wurde es im Kontext des gesamten Modell‑Kontexts auf etwa 3 % geschätzt
Zur Disk‑I/O‑Flaschenhals‑Problematik in Speicher‑ und Lern‑Pipelines wurde ein Senior‑Kollege um Rat gefragt
- Statt das Fine‑Tuning in Echtzeit laufen zu lassen, wurde empfohlen, Datenerfassung und Vor‑/Nachverarbeitung fast in Echtzeit zu erledigen und das Training batch‑weise durchzuführen
- Man entschied, bei Erreichen einer bestimmten Datenmenge Reinforcement‑Learning oder Fine‑Tuning batch‑weise nach Metriken auszuführen
- Da die Kosten für Re‑Indexierung strukturell nicht vollständig eliminiert werden können, wurde festgehalten, dass die Stabilität der Daten‑Erfassungs‑ und Verarbeitungs‑Pipeline wichtiger ist als Echtzeit‑Training
Aktuell zusammengefasste Gesamtstrategie
- Offizielle Dokumente crawlen, um eine RAG‑Wissensbasis für Godot 4 aufzubauen
- GitHub‑Godot‑Projekte sammeln und pro Repository README, Projektstruktur und GDScript‑Dateien zusammenführen
project.godot‑Einstellungen und Godot‑3/4‑Syntaxunterschiede für die erste Filterung nutzen- Mit dem RAG‑Chatbot Godot‑3/4‑Status, Nutzung veralteter APIs und Godot 4‑Kompatibilität zusätzlich bestimmen
- Aus den bereinigten Godot‑4‑Daten Instruction/Response‑Paare erzeugen
- Godot‑4‑Coding‑Modell mit SFT‑ und DPO/Preference‑Daten trainieren
Rückblick
- In den letzten zehn Tagen wollte ich nur die fertigen Ergebnisse festhalten, wodurch ich den Prozess nicht dokumentierte
- Doch gescheiterte Experimente, blockierte Punkte und geänderte Entscheidungen sind genau die Aufzeichnungen, die für die nächste Richtung wichtig sind
- Künftig will ich nicht nur perfekte Ergebnisse festhalten, sondern kontinuierlich den Verlauf von Versuchen und Entscheidungen dokumentieren und weiterentwickeln
Entwicklungsrückblick: docs/retrospectives/2026-06-12.md