step-zero / README.md
TONG
Change colorFrom from black to gray
61af1de unverified
|
Raw
History Blame Contribute Delete
3.75 kB
---
title: Step-Zero
emoji: 🧭
colorFrom: gray
colorTo: green
sdk: docker
app_port: 7860
---
# Step-Zero
Step-Zero is a local-first hackathon demo for a "Cognitive Pacemaker": it shows only one next action at a time, lets the user mark it done or too hard, and trips a circuit breaker when friction stays too high.
It leverages a custom dual-model architecture:
1. **Nemotron-Mini-4B-Instruct (Fine-Tuned)**: SFT fine-tuned specifically on daily goal breakdown datasets to produce extremely strict 8-word physical atomic actions without "assistant" conversational filler.
2. **MiniCPM-3-4B**: Acts as a robust fallback and history-aware router for rejected step breakdown and stylistic rewriting (Encouraging vs Calm tones).
## Hugging Face Assets
The resulting fine-tuned model and synthetic dataset from this project have been published to Hugging Face:
- **Model:** [tc043/step-zero-nemotron](https://huggingface.co/tc043/step-zero-nemotron)
- **Dataset:** [tc043/step-zero-dataset](https://huggingface.co/datasets/tc043/step-zero-dataset)
## Quick Start (Mock Mode)
```bash
python -m pip install -r requirements.txt
python app.py
```
Open `http://localhost:7860`.
The app starts in mock mode by default if the GGUF models are not found, so the custom UI and Gradio event handlers work out-of-the-box.
Choose Direct, Calm, or Encouraging before starting a session.
## Full Local Model Mode (Production)
To run the full LLM backend, you can let the app automatically download the models from Hugging Face on startup (when running with `STEP_ZERO_MOCK=0`), or you can download them manually beforehand:
You can download them using a quick Python script (since `huggingface-hub` is installed):
```bash
mkdir -p models
# Download the fine-tuned Nemotron model
python3 -c "from huggingface_hub import hf_hub_download; hf_hub_download(repo_id='tc043/step-zero-nemotron', filename='step-zero-nemotron-finetuned.gguf', local_dir='models')"
# Download the MiniCPM fallback model (Q4_K_M recommended for 4GB VRAM)
python3 -c "from huggingface_hub import hf_hub_download; hf_hub_download(repo_id='mradermacher/MiniCPM3-4B-GGUF', filename='MiniCPM3-4B.Q4_K_M.gguf', local_dir='models')"
# Rename fallback model to match path config
mv models/MiniCPM3-4B.Q4_K_M.gguf models/minicpm-3-4b.gguf
```
Then run:
```bash
STEP_ZERO_MOCK=0 \
NEMOTRON_MODEL_PATH=./models/step-zero-nemotron-finetuned.gguf \
MINICPM_MODEL_PATH=./models/minicpm-3-4b.gguf \
python app.py
```
> **Note on "Sharing is Caring" Badge:** If you wish to use the "Push to Hub" button to export your trace to Hugging Face, ensure you have exported your `HF_TOKEN` environment variable before running the app.
## Modal Fine-Tuning Pipeline
If you want to reproduce the Nemotron fine-tuning run:
1. Generate the synthetic dataset:
```bash
python generate_dataset.py
```
2. Authenticate and launch the Modal training job:
```bash
modal setup
modal run modal_train.py
```
`modal_train.py` handles the Unsloth LoRA SFT training on `verbs.jsonl` and merges the weights into a single GGUF artifact on Modal volumes.
## System Architecture Fixes
During development, we successfully mitigated several core "Small LLM Alignment Taxes":
* **The "Paragraph" Tax:** MiniCPM stylistic rewrites are strictly constrained to exactly one sentence under 12 words via robust system prompting.
* **The "Cognitive Planning" Bug:** Fallback breakdowns explicitly ban cognitive verbs (think, plan, remember) to force strictly physical next steps.
* **The Syntactic Rut & Repetition Loops:** Implemented a short-memory sliding window (`history[-3:]`) and a semantic word overlap check (>70%) that detects repeated semantic tasks and bounces them to the fallback model to generate a fresh step.