Zum Inhalt springen
Nibiru docsv0.9.2

Training nibiru-coder

Wie Sie ein Nibiru-gesmacktes Chatmodell auf Ihrem eigenen Ollama registrieren. Eine Modelldatei, ein Shell-Skript, sechzig Sekunden.

Stable Reading time ~ 3 min Edit on GitHub

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/.

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 von Pageination),
  • 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.

Terminal-Fenster
./application/module/ai/training/build.sh # builds nibiru-coder:1.0
./application/module/ai/training/build.sh 1.1 # bump tag for iterations

Das Skript:

  1. Liest die Datei Modelfile neben sich.
  2. Sendet eine POST-Anfrage an ${OLLAMA_BASE_URL}/api/create (Standardwert https://your-ollama-host.example).
  3. 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.

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.

Terminal-Fenster
./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.php

Wenn Sie ein Modell benötigen, dessen Gewichte Nibiru kennen – nicht nur sein System-Prompt – bietet Ihnen der Korpus-Exporter die Lösung.

Terminal-Fenster
cd docs
npm run build:corpus

Generiert JSONL-Dateien unter dist/corpus/:

DateiFormatVerwendung
chat.jsonlsharegpt-stilige NachrichtenAxolotl, LLaMA-Factory, Unsloth
instructions.jsonlAnweisung/Eingabe/AusgabeAlpaca-artige Trainer
completion.jsonlAufforderung/ErgebnisLegacy Textabschluss Feinabstimmungen
chunks.jsonlChunk-MetadatenRAG / Evaluierungsset-Konstruktion

Ein praktisches Rezept für eine 8B-Basis auf einem einzelnen A100 / 4090:

axolotl.yml
base_model: meta-llama/Llama-3.1-8B-Instruct
adapter: lora
lora_r: 16
lora_alpha: 32
lora_dropout: 0.05
lora_target_modules: [q_proj, k_proj, v_proj, o_proj]
datasets:
- path: docs/dist/corpus/chat.jsonl
type: sharegpt
sequence_len: 4096
sample_packing: true
gradient_accumulation_steps: 4
micro_batch_size: 2
num_epochs: 3
optimizer: adamw_bnb_8bit
learning_rate: 0.0002
warmup_ratio: 0.05
bf16: true

Nach dem Training:

  1. Konvertieren Sie das LoRA in GGUF (llama.cpp’s convert_hf_to_gguf.py).
  2. Erstellen Sie eine Ollama Modelfile mit FROM ./your-lora.gguf.
  3. Führen Sie ./build.sh 2.0 aus, um es als nibiru-coder:2.0 zu registrieren.

Der Framework-Code ändert sich nicht — ändern Sie chat.model in ai.ini, und Sie verwenden die neuen Gewichte.

Terminal-Fenster
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-text nicht gepullt wird, wird eine klare Nachricht ausgegeben).

Führen Sie nach jeder Änderung der Datei Modelfile aus, bevor Sie bereitstellen.

  • Modelfile System-Prompt ist zu lang. Einige Ollama-Versionen begrenzen System-Prompts. Halten Sie es unter etwa 3000 Token.
  • Vergessen des FROM-Modells. qwen2.5-coder:14b muss bereits auf dem Server vorhanden sein. Überprüfen Sie mit curl ${OLLAMA_BASE_URL}/api/tags.
  • Tag-Kollisionen. Das erneute Ausführen von build.sh 1.0 überschreibt das bestehende nibiru-coder:1.0. Verwenden Sie für Iteration neue Tags; fixieren Sie spezifische Tags in ai.ini für die Produktion.
  • Verwirrung mit --no-stream. Das Build-Skript verwendet stream: false, sodass die Antwort als ein JSON zurückkommt. Wenn Sie zu einem gestreamten Modus wechseln, analysieren Sie Zeile für Zeile.