Training nibiru-coder
Wie Sie ein Nibiru-gesmacktes Chatmodell auf Ihrem eigenen Ollama registrieren. Eine Modelldatei, ein Shell-Skript, sechzig Sekunden.
Das Standard-Chatmodell des Frameworks ist nibiru-coder:1.0 — ein Nibiru-geschnittenes Qwen 2.5 Coder 14B, das Sie auf Ihrem Ollama-Server registrieren. Der Trainingspipeline befindet sich im Verzeichnis application/module/ai/training/.
Was nibiru-coder ist (und nicht ist)
Abschnitt betitelt „Was nibiru-coder ist (und nicht ist)“nibiru-coder:1.0 ist kein LoRA Fine-Tuning. Es sind die gleichen Gewichte von qwen2.5-coder:14b, verpackt mit einem eingebauten System-Prompt, der:
- erläutert MMVC, Module, den Dispatcher und die Singletons,
- erzwingt die Konventionen von Nibiru (
pageAction,navigationAction,View::assign,Form::create, die Schreibweise vonPageination), - fördert das Modell zu Nibiru-idiomatischen Antworten anstelle allgemeiner Laravel / Symfony-Ratschläge.
Die Anpassung des System-Prompts erfolgt unmittelbar — keine GPU-Training, keine Datensatz-Vorbereitung erforderlich. Es bietet ungefähr 80 % der Wertschöpfung einer echten LoRA bei null Trainingskosten. Wenn Sie ein Budget für eine echte Feinabstimmung haben, siehe unten Echte LoRA-Pfad.
Bauen Sie es
Abschnitt betitelt „Bauen Sie es“./application/module/ai/training/build.sh # builds nibiru-coder:1.0./application/module/ai/training/build.sh 1.1 # bump tag for iterationsDas Skript:
- Liest die Datei
Modelfileneben sich. - Sendet eine POST-Anfrage an
${OLLAMA_BASE_URL}/api/create(Standardwerthttps://your-ollama-host.example). - Führt einen Rauchtest-Chat-Aufruf durch, um zu bestätigen, dass der neue Tag antwortet.
Nachdem es erfolgreich ist, setzen Sie das Modell in application/module/ai/settings/ai.ini:
[AI]chat.model = "nibiru-coder:1.0"chat.fallback_model = "qwen2.5-coder:14b"…und jede Instanz von \Nibiru\Module\Ai\Ai in Ihrer Anwendung kommuniziert mit ihr. Der Fallback stellt sicher, dass nichts bricht, wenn Sie den Tag noch nicht erstellt haben.
Arbeiten Sie an dem System-Prompt weiter
Abschnitt betitelt „Arbeiten Sie an dem System-Prompt weiter“Der SYSTEM """ ... """-Block im Modelfile ist der Schlüssel. Verfestigen Sie die Konventionen, fügen Sie neue Beispiele hinzu und verweisen Sie auf spezifische Framework-Dateien. Führen Sie build.sh erneut mit einem neuen Tag (1.1, 1.2, …) aus und führen Sie eine A/B-Vergleichsphase im Vergleich zum vorherigen Tag in Ihrer Anwendung durch.
./application/module/ai/training/build.sh 1.1# Edit ai.ini → chat.model = "nibiru-coder:1.1"# Compare answers in the Oracle widget or via smoke-test.phpEchte LoRA-Pfad
Abschnitt betitelt „Echte LoRA-Pfad“Wenn Sie ein Modell benötigen, dessen Gewichte Nibiru kennen – nicht nur sein System-Prompt – bietet Ihnen der Korpus-Exporter die Lösung.
cd docsnpm run build:corpusGeneriert JSONL-Dateien unter dist/corpus/:
| Datei | Format | Verwendung |
|---|---|---|
chat.jsonl | sharegpt-stilige Nachrichten | Axolotl, LLaMA-Factory, Unsloth |
instructions.jsonl | Anweisung/Eingabe/Ausgabe | Alpaca-artige Trainer |
completion.jsonl | Aufforderung/Ergebnis | Legacy Textabschluss Feinabstimmungen |
chunks.jsonl | Chunk-Metadaten | RAG / Evaluierungsset-Konstruktion |
Ein praktisches Rezept für eine 8B-Basis auf einem einzelnen A100 / 4090:
base_model: meta-llama/Llama-3.1-8B-Instructadapter: loralora_r: 16lora_alpha: 32lora_dropout: 0.05lora_target_modules: [q_proj, k_proj, v_proj, o_proj]
datasets: - path: docs/dist/corpus/chat.jsonl type: sharegpt
sequence_len: 4096sample_packing: truegradient_accumulation_steps: 4micro_batch_size: 2num_epochs: 3optimizer: adamw_bnb_8bitlearning_rate: 0.0002warmup_ratio: 0.05bf16: trueNach dem Training:
- Konvertieren Sie das LoRA in GGUF (
llama.cpp’sconvert_hf_to_gguf.py). - Erstellen Sie eine Ollama Modelfile mit
FROM ./your-lora.gguf. - Führen Sie
./build.sh 2.0aus, um es alsnibiru-coder:2.0zu registrieren.
Der Framework-Code ändert sich nicht — ändern Sie chat.model in ai.ini, und Sie verwenden die neuen Gewichte.
Rauchtest
Abschnitt betitelt „Rauchtest“php application/module/ai/training/smoke-test.phpÜberprüft:
- Der Ollama-Server ist erreichbar.
- Das Modell reagiert auf eine Einzelschritt-Anfrage.
- Mehrschrittige Konversationskontexte funktionieren.
- Embeddings funktionieren (wenn
nomic-embed-textnicht gepullt wird, wird eine klare Nachricht ausgegeben).
Führen Sie nach jeder Änderung der Datei Modelfile aus, bevor Sie bereitstellen.
Häufige Fallen
Abschnitt betitelt „Häufige Fallen“ModelfileSystem-Prompt ist zu lang. Einige Ollama-Versionen begrenzen System-Prompts. Halten Sie es unter etwa 3000 Token.- Vergessen des FROM-Modells.
qwen2.5-coder:14bmuss bereits auf dem Server vorhanden sein. Überprüfen Sie mitcurl ${OLLAMA_BASE_URL}/api/tags. - Tag-Kollisionen. Das erneute Ausführen von
build.sh 1.0überschreibt das bestehendenibiru-coder:1.0. Verwenden Sie für Iteration neue Tags; fixieren Sie spezifische Tags inai.inifür die Produktion. - Verwirrung mit
--no-stream. Das Build-Skript verwendetstream: false, sodass die Antwort als ein JSON zurückkommt. Wenn Sie zu einem gestreamten Modus wechseln, analysieren Sie Zeile für Zeile.