Compare commits

...

1 Commits

Author SHA1 Message Date
1bc9b1e7f8 fix: Standardize training Makefile on python3
Some checks failed
Architecture Lint / Linter Tests (pull_request) Successful in 38s
Smoke Test / smoke (pull_request) Failing after 33s
Validate Config / YAML Lint (pull_request) Failing after 25s
Validate Config / JSON Validate (pull_request) Successful in 23s
Validate Config / Python Syntax & Import Check (pull_request) Failing after 1m25s
Validate Config / Shell Script Lint (pull_request) Failing after 39s
Validate Config / Cron Syntax Check (pull_request) Successful in 18s
Validate Config / Deploy Script Dry Run (pull_request) Successful in 19s
Validate Config / Playbook Schema Validation (pull_request) Successful in 34s
PR Checklist / pr-checklist (pull_request) Failing after 11m17s
Architecture Lint / Lint Repository (pull_request) Has been cancelled
Validate Config / Python Test Suite (pull_request) Has been cancelled
- Add PYTHON ?= python3 variable for portability
- Replace all bare 'python' calls with $(PYTHON)
- Fixes 'make: python: No such file or directory' on systems without python shim
- Addresses issue #660
2026-04-15 02:31:48 +00:00

View File

@@ -16,6 +16,7 @@ MODEL ?= timmy:v0.1-q4
BASELINE ?= hermes3:latest BASELINE ?= hermes3:latest
OLLAMA_URL ?= http://localhost:11434 OLLAMA_URL ?= http://localhost:11434
OUTPUT ?= output OUTPUT ?= output
PYTHON ?= python3
# ── 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]; \