Compare commits

...

1 Commits

Author SHA1 Message Date
2f37890f65 fix: use PYTHON variable in training Makefile (#660)
Some checks failed
Architecture Lint / Linter Tests (pull_request) Successful in 26s
Smoke Test / smoke (pull_request) Failing after 31s
Validate Config / YAML Lint (pull_request) Failing after 22s
Validate Config / JSON Validate (pull_request) Successful in 23s
Validate Config / Python Syntax & Import Check (pull_request) Failing after 1m12s
Validate Config / Shell Script Lint (pull_request) Failing after 40s
Validate Config / Cron Syntax Check (pull_request) Successful in 16s
Validate Config / Deploy Script Dry Run (pull_request) Successful in 15s
Validate Config / Playbook Schema Validation (pull_request) Successful in 22s
PR Checklist / pr-checklist (pull_request) Failing after 7m37s
Architecture Lint / Lint Repository (pull_request) Has been cancelled
Validate Config / Python Test Suite (pull_request) Has been cancelled
Bare 'python' fails on macOS where only 'python3' is installed.
Add PYTHON ?= python3 variable and use $(PYTHON) in all targets.

Fixes: train-local, vibes, ingest, curated, convert

Closes #660
2026-04-15 01:18:57 +00:00

View File

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