Ir al contenido
Nibiru docsv0.9.2

Entrenamiento nibiru-coder

Cómo registrar un modelo de chat con sabor a Nibiru en tu propio Ollama. Un archivo Modelfile, un script de shell, sesenta segundos.

Stable Reading time ~ 3 min Edit on GitHub

El modelo de chat predeterminado del marco es nibiru-coder:1.0 — un Qwen 2.5 Coder 14B con sabor a Nibiru que registras en tu servidor Ollama. El pipeline de entrenamiento vive en application/module/ai/training/.

nibiru-coder:1.0 no es un ajuste fino de LoRA. Es el mismo peso qwen2.5-coder:14b envuelto con un sistema de solicitud integrado que:

  • explica MMVC, módulos, el despachador, los singletons,
  • impone las convenciones de Nibiru (pageAction, navigationAction, View::assign, Form::create, la ortografía de Pageination),
  • empuja el modelo hacia respuestas idiomáticas de Nibiru en lugar de consejos genéricos de Laravel / Symfony.

La personalización del sistema se ejecuta instantáneamente — sin entrenamiento de GPU, sin preparación de conjuntos de datos. Proporciona aproximadamente el 80 % del valor de un LoRA real a costo cero de entrenamiento. Cuando tengas presupuesto para un ajuste real, consulta la ruta Real LoRA a continuación.

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

El guion:

  1. Lee el archivo Modelfile que está al lado.
  2. Realiza una solicitud POST a ${OLLAMA_BASE_URL}/api/create (por defecto https://your-ollama-host.example).
  3. Ejecuta una prueba de humo para la llamada de chat para confirmar que la nueva etiqueta responde.

Después de que se complete con éxito, establezca el modelo en application/module/ai/settings/ai.ini:

[AI]
chat.model = "nibiru-coder:1.0"
chat.fallback_model = "qwen2.5-coder:14b"

…y cada instancia de \Nibiru\Module\Ai\Ai en tu aplicación habla con él. El fallback asegura que nada se rompa si aún no has construido la etiqueta.

El bloque SYSTEM """ ... """ del archivo Modelfile es el gatillo. Ajusta las convenciones, añade nuevos ejemplos y agrega citas a archivos específicos de marcos. Vuelve a ejecutar build.sh con una nueva etiqueta (1.1, 1.2, …) y realiza pruebas A/B contra la etiqueta anterior en tu aplicación.

Ventana de terminal
./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

Cuando deseas un modelo cuyos pesos conozcan Nibiru — no solo su sistema de solicitud —, el exportador de corpus te cubre.

Ventana de terminal
cd docs
npm run build:corpus

Genera archivos JSONL en dist/corpus/:

ArchivoFormatoUso
chat.jsonlmensajes estilo sharegptAxolotl, LLaMA-Factory, Unsloth
instructions.jsonlinstrucción/entrada/salidaentrenadores estilo Alpaca
completion.jsonlindicación/completadoajustes de texto por completo heredados
chunks.jsonlmetadatos de fragmentosRAG / construcción del conjunto de evaluación

Una receta pragmática para una base de 8B en un solo 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

Después del entrenamiento:

  1. Convierte el LoRA a GGUF (llama.cpp’s convert_hf_to_gguf.py).
  2. Crea un Ollama Modelfile con FROM ./your-lora.gguf.
  3. ./build.sh 2.0 lo registra como nibiru-coder:2.0.

El código del marco no cambia — intercambia chat.model en ai.ini y ya estás usando los nuevos pesos.

Ventana de terminal
php application/module/ai/training/smoke-test.php

Verifica:

  • El servidor de Ollama es accesible.
  • El modelo responde a una solicitud de un turno.
  • El contexto de conversación multiturno funciona.
  • Las incrustaciones funcionan (se omite con un mensaje claro si nomic-embed-text no se extrae).

Ejecuta después de cada cambio en el archivo Modelfile, antes de desplegar.

  • El sistema de Modelfile tiene un prompt demasiado largo. Algunas versiones de Ollama tienen límites para los prompts del sistema. Manténgalo por debajo de ~3000 tokens.
  • Olvidar extraer el modelo FROM. El modelo qwen2.5-coder:14b debe estar ya en el servidor. Utiliza curl ${OLLAMA_BASE_URL}/api/tags para verificarlo.
  • Colisiones de etiquetas. Ejecutar nuevamente build.sh 1.0 sobrescribirá la existente nibiru-coder:1.0. Usa nuevas etiquetas para iteraciones; fija etiquetas específicas en ai.ini para producción.
  • Confusión con --no-stream. El script de construcción usa stream: false, por lo que la respuesta regresa como un solo JSON. Si cambias a streamed, analiza línea por línea.