|
|
|
|
@@ -15,6 +15,7 @@
|
|
|
|
|
MODEL ?= timmy:v0.1-q4
|
|
|
|
|
BASELINE ?= hermes3:latest
|
|
|
|
|
OLLAMA_URL ?= http://localhost:11434
|
|
|
|
|
PYTHON ?= python3
|
|
|
|
|
OUTPUT ?= output
|
|
|
|
|
|
|
|
|
|
# ── Training ──────────────────────────────────────────────────────────
|
|
|
|
|
@@ -23,7 +24,7 @@ train-cloud: ## QLoRA fine-tune on cloud GPU (Axolotl)
|
|
|
|
|
axolotl train axolotl.yaml
|
|
|
|
|
|
|
|
|
|
train-local: ## LoRA fine-tune on Apple Silicon (MLX)
|
|
|
|
|
python -m mlx_lm.lora --config mlx-lora.yaml
|
|
|
|
|
$(PYTHON) -m mlx_lm.lora --config mlx-lora.yaml
|
|
|
|
|
|
|
|
|
|
# ── Evaluation ────────────────────────────────────────────────────────
|
|
|
|
|
|
|
|
|
|
@@ -45,7 +46,7 @@ vibes: ## Run vibes check — hand-picked prompts, human review
|
|
|
|
|
@echo "Date: $$(date '+%Y-%m-%d %H:%M')" > $(OUTPUT)/vibes-$(MODEL).md
|
|
|
|
|
@echo "Model: $(MODEL)" >> $(OUTPUT)/vibes-$(MODEL).md
|
|
|
|
|
@echo "" >> $(OUTPUT)/vibes-$(MODEL).md
|
|
|
|
|
@python -c "\
|
|
|
|
|
@$(PYTHON) -c "\
|
|
|
|
|
import yaml, subprocess, sys; \
|
|
|
|
|
prompts = yaml.safe_load(open('data/prompts_vibes.yaml'))['prompts']; \
|
|
|
|
|
f = open('$(OUTPUT)/vibes-$(MODEL).md', 'a'); \
|
|
|
|
|
@@ -69,19 +70,19 @@ vibes: ## Run vibes check — hand-picked prompts, human review
|
|
|
|
|
# ── Data Pipeline ─────────────────────────────────────────────────────
|
|
|
|
|
|
|
|
|
|
ingest: ## Pull heartbeat trajectories into training data
|
|
|
|
|
python ingest_trajectories.py \
|
|
|
|
|
$(PYTHON) ingest_trajectories.py \
|
|
|
|
|
--trajectories ~/.nexus/trajectories/ \
|
|
|
|
|
--curated data/curated_dataset.jsonl \
|
|
|
|
|
--output data/merged_training_data.jsonl
|
|
|
|
|
@echo "Merged dataset ready. Convert for MLX with: make convert"
|
|
|
|
|
|
|
|
|
|
curated: ## Regenerate curated exemplar dataset
|
|
|
|
|
python build_curated.py
|
|
|
|
|
$(PYTHON) build_curated.py
|
|
|
|
|
@echo "Curated dataset regenerated."
|
|
|
|
|
|
|
|
|
|
convert: ## Convert merged dataset to MLX format (train/valid split)
|
|
|
|
|
@mkdir -p data/mlx_curated
|
|
|
|
|
python -c "\
|
|
|
|
|
$(PYTHON) -c "\
|
|
|
|
|
import json; \
|
|
|
|
|
lines = open('data/merged_training_data.jsonl').readlines(); \
|
|
|
|
|
sessions = [json.loads(l) for l in lines]; \
|
|
|
|
|
|