Zum Inhalt springen
Nibiru docsv0.9.2

Trainingskorpus

Wie die Dokumente als LoRA-fähige Trainingsmenge exportiert werden und wie sie neu generiert werden können.

Stable Reading time ~ 3 min Edit on GitHub

Jede Seite in dieser Dokumentation ist auch ein Trainingsdatenpunkt. Nibiru bietet ein Skript, das einen sauberen JSONL-Korpus extrahiert, der für die LoRA-Fine-Tuning eines offenen Modells – wie Llama, Mistral, Qwen oder Gemma – auf spezifische Kenntnisse von Nibiru geeignet ist.

Terminal-Fenster
cd docs
npm run build:corpus

Dies schreibt:

docs/dist/corpus/
├── instructions.jsonl # instruction → response pairs
├── chat.jsonl # OpenAI/Anthropic chat-message format
├── completion.jsonl # plain prompt → completion (legacy)
└── chunks.jsonl # raw Markdown chunks (one per H2/H3 section)

LoRA-freundliche Anweisungsoptimierung:

{
"instruction": "How do I scaffold a new module in Nibiru?",
"input": "",
"output": "Run `./nibiru -m <name>`, optionally with `-g` for Graylog hooks. This creates `application/module/<name>/` with traits/, plugins/, interfaces/, settings/<name>.ini and the main `<name>.php` class implementing `IModule`."
}

Jede Eintragung wird aus einem Dokumentationsabschnitt generiert, der eine klare Frage (abgeleitet vom H2/H3-Titel) und den Abschnittstext als Antwort enthält.

OpenAI Chat / Anthropic Nachrichtenformat:

{
"messages": [
{"role": "system", "content": "You are an expert on the Nibiru PHP framework."},
{"role": "user", "content": "How do I scaffold a new module?"},
{"role": "assistant", "content": "Run `./nibiru -m <name>`. …"}
]
}

Kompatibel mit OpenAI Fine-Tunes, der API von Anthropic zur Bewertung und den meisten LoRA-Tools, die Eingaben im Chat-Format erwarten (Vorlage sharegpt von Axolotl, Unsloth, LLaMA-Factory).

Rohdaten für die Verwendung als RAG-Retrieval-Daten:

{
"id": "core/modules#observer-pattern",
"title": "The observer pattern",
"url": "/core/modules/#the-observer-pattern",
"section": "core/modules",
"language": "en",
"tokens": 412,
"content": "Modules implementing `SplSubject` can broadcast events…"
}

Dies ist genau die Datei, die intern von Oracle verwendet wird.

Der Korpus-Bauer durchläuft jede .md / .mdx-Datei unter src/content/docs/, analysiert sie in einen AST und teilt sie an den Grenzen von H2/H3 auf. Er erfordert:

  • Ein Abschnitt pro H2-Kapitel (oder H3, wenn das H2 leer ist).
  • ~200–800 Token pro Abschnitt (teilen Sie es auf, wenn es länger ist, zusammenführen Sie es, wenn es kürzer ist).
  • Codeblöcke bleiben unverändert — teilen Sie sie niemals in der Mitte.
  • Jeder Abschnitt trägt seinen Quellpfad, seine Anker-URL und den Sprachcode bei.

Das Skript befindet sich in scripts/build-corpus.mjs und ist vollständig konfigurierbar.

Ein pragmatischer Ausgangspunkt für ein 8-Billionen-Parameter-Grundmodell auf einer einzelnen A100 / 4090:

axolotl.yaml
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

Trainen Sie dann die LoRA-Gewichte zusammen und stellen Sie sie über Ollama, vLLM oder text-generation-inference bereit. Ändern Sie den MODEL-Eintrag des Orakels auf Ihren lokalen Endpunkt, und Sie haben eine vollständig Nibiru-native Chat-Benutzererfahrung.

Verbinden Sie es in Ihre CI ein:

- name: Build corpus
run: cd docs && npm run build:corpus
- name: Upload corpus artifact
uses: actions/upload-artifact@v4
with:
name: nibiru-corpus
path: docs/dist/corpus/

Wenn die Dokumentationen sich ändern, wird das Korpus neu erstellt; Consumer (Trainingspipelines, RAG-Indizes) haben immer die neuesten Daten.

Der Korpus beachtet die Lokalisation. Seiten unter en/ sind mit language: en markiert, deutsche Seiten mit language: de und so weiter. Trainieren Sie monolinguale oder mehrsprachige LoRAs, indem Sie das JSONL nach dem Feld language filtern.

Die Dokumentation ist unter der gleichen BSD-4-Klausel lizenziert wie das Framework selbst. Der exportierte Korpus erbt diese Lizenz – Sie sind freigestellt, Modelle auf ihm für den kommerziellen Gebrauch zu feinabzustimmen, wobei eine Zitierung erforderlich ist.