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.
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/.
¿Qué es (y no es) nibiru-coder?
Sección titulada «¿Qué es (y no es) nibiru-coder?»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 dePageination), - 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.
Construilo
Sección titulada «Construilo»./application/module/ai/training/build.sh # builds nibiru-coder:1.0./application/module/ai/training/build.sh 1.1 # bump tag for iterationsEl guion:
- Lee el archivo Modelfile que está al lado.
- Realiza una solicitud POST a
${OLLAMA_BASE_URL}/api/create(por defectohttps://your-ollama-host.example). - 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.
Iterar en el sistema de solicitud
Sección titulada «Iterar en el sistema de solicitud»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.
./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.phpRuta real de LoRA
Sección titulada «Ruta real de LoRA»Cuando deseas un modelo cuyos pesos conozcan Nibiru — no solo su sistema de solicitud —, el exportador de corpus te cubre.
cd docsnpm run build:corpusGenera archivos JSONL en dist/corpus/:
| Archivo | Formato | Uso |
|---|---|---|
chat.jsonl | mensajes estilo sharegpt | Axolotl, LLaMA-Factory, Unsloth |
instructions.jsonl | instrucción/entrada/salida | entrenadores estilo Alpaca |
completion.jsonl | indicación/completado | ajustes de texto por completo heredados |
chunks.jsonl | metadatos de fragmentos | RAG / construcción del conjunto de evaluación |
Una receta pragmática para una base de 8B en un solo 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: trueDespués del entrenamiento:
- Convierte el LoRA a GGUF (
llama.cpp’sconvert_hf_to_gguf.py). - Crea un Ollama Modelfile con
FROM ./your-lora.gguf. ./build.sh 2.0lo registra comonibiru-coder:2.0.
El código del marco no cambia — intercambia chat.model en ai.ini y ya estás usando los nuevos pesos.
Prueba de humo
Sección titulada «Prueba de humo»php application/module/ai/training/smoke-test.phpVerifica:
- 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-textno se extrae).
Ejecuta después de cada cambio en el archivo Modelfile, antes de desplegar.
Trucos comunes
Sección titulada «Trucos comunes»- El sistema de
Modelfiletiene 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:14bdebe estar ya en el servidor. Utilizacurl ${OLLAMA_BASE_URL}/api/tagspara verificarlo. - Colisiones de etiquetas. Ejecutar nuevamente
build.sh 1.0sobrescribirá la existentenibiru-coder:1.0. Usa nuevas etiquetas para iteraciones; fija etiquetas específicas enai.inipara producción. - Confusión con
--no-stream. El script de construcción usastream: false, por lo que la respuesta regresa como un solo JSON. Si cambias a streamed, analiza línea por línea.