meshscale-worker-template / MODEL_TEST_CHECKLIST.md
tostido's picture
Build MeshScale CPU worker template
96ef23c verified
|
Raw
History Blame Contribute Delete
9.14 kB
# Ouroboros Model Architecture Test Checklist
## Supported ModelTypes (from brain.py)
| ModelType | Interface | Test Method | Status |
|-----------|-----------|-------------|--------|
| `LLM` | `generate()` | Text completion/chat | ✅ |
| `EMBEDDING` | `encode()` | Semantic vectors | ✅ |
| `RL` | `act()` / `step()` | Action selection | ⬜ (needs SB3 loader) |
| `VISION` | `detect()` | Object detection | ⬜ |
| `PLANNER` | `plan()` | Trajectory generation | ⬜ |
| `SLAM` | `update()` + `get_pose()` | Localization | ⬜ |
| `CONTROL` | `control()` | Motor commands | ⬜ |
| `SENSOR` | `fuse()` | Sensor fusion | ⬜ |
| `COMMS` | `send()` / `recv()` | Message passing | ⬜ |
| `STATE_MACHINE` | `tick()` | FSM transitions | ⬜ |
| `INFINITY_EMBED` | infinity-emb async | High-throughput embed | ⬜ |
| `INFINITY_RERANK` | infinity-emb async | Document reranking | ✅ |
| `INFINITY_CLASSIFY` | infinity-emb async | Zero-shot classify | ⬜ |
| `INFINITY_CLIP` | infinity-emb async | Image embedding | ⬜ |
| `INFINITY_CLAP` | infinity-emb async | Audio embedding | ⬜ |
| `GENERIC` | callable fallback | Direct invocation | ✅ |
---
## Available Pre-Downloaded Models (D:\huggingface\hub)
### 🔤 Text Generation (LLM)
| Model | Size | Test Command |
|-------|------|--------------|
| `HuggingFaceTB/SmolLM2-1.7B-Instruct` | 1.7B | `plug_model("HuggingFaceTB/SmolLM2-1.7B-Instruct"); generate("Hello")` |
| `HuggingFaceTB/SmolLM2-135M-Instruct` | 135M | `plug_model("HuggingFaceTB/SmolLM2-135M-Instruct"); generate("Hello")` |
| `LiquidAI/LFM2.5-1.2B-Thinking` | 1.2B | Thinking/reasoning model |
| `Qwen/Qwen2.5-0.5B-Instruct` | 0.5B | `generate("Explain quantum computing")` |
| `Qwen/Qwen2.5-1.5B-Instruct` | 1.5B | `generate("Write a haiku")` |
| `TinyLlama/TinyLlama-1.1B-Chat-v1.0` | 1.1B | Chat completion |
| `google/flan-t5-small` | 77M | Seq2seq generation |
| `google/gemma-3-1b-it` | 1B | Instruction-tuned |
| `google/gemma-3-270m` | 270M | Small Gemma |
| `google/gemma-3-270m-it` | 270M | Instruction-tuned |
| `gpt2` / `openai-community/gpt2` | 124M | Causal LM baseline |
| `openai-community/gpt2-medium` | 355M | Medium GPT-2 |
| `ibm-granite/granite-4.0-micro` | micro | IBM Granite |
| `unsloth/granite-4.0-350m` | 350M | Unsloth optimized |
| `tiiuae/falcon-rw-1b` | 1B | Falcon base |
| `aloobun/falcon-1b-cot-t2` | 1B | Chain-of-thought |
| `microsoft/phi-2` | 2.7B | Phi-2 reasoning |
| `mistralai/Mistral-7B-Instruct-v0.3` | 7B | Mistral instruct |
| `meta-llama/Llama-3.2-1B` | 1B | Llama 3.2 |
| `sshleifer/tiny-gpt2` | tiny | Unit test model |
### 🧮 Embedding Models
| Model | Dims | Test Command |
|-------|------|--------------|
| `BAAI/bge-small-en-v1.5` | 384 | `plug_model("BAAI/bge-small-en-v1.5"); embed_text("test")` |
| `BAAI/bge-base-en-v1.5` | 768 | Larger BGE |
| `BAAI/bge-large-en-v1.5` | 1024 | Largest BGE |
| `sentence-transformers/all-MiniLM-L6-v2` | 384 | Fast SBERT |
| `sentence-transformers/all-MiniLM-L12-v2` | 384 | Deeper MiniLM |
| `sentence-transformers/all-mpnet-base-v2` | 768 | MPNet base |
| `sentence-transformers/distiluse-base-multilingual-cased` | 512 | Multilingual |
| `intfloat/e5-small-v2` | 384 | E5 small |
| `intfloat/e5-base-v2` | 768 | E5 base |
| `thenlper/gte-small` | 384 | GTE small |
| `thenlper/gte-large` | 1024 | GTE large |
| `TaylorAI/gte-tiny` | 384 | Tiny GTE |
| `nomic-ai/nomic-embed-text-v1.5` | 768 | Nomic embed |
| `jinaai/jina-embeddings-v2-small-en` | 512 | Jina v2 |
| `jinaai/jina-embeddings-v3` | 1024 | Jina v3 |
| `Snowflake/snowflake-arctic-embed-xs` | 384 | Arctic embed |
| `ibm-granite/granite-embedding-small-english-r2` | 384 | Granite embed |
| `google/embeddinggemma-300m` | varies | Gemma embed |
| `Qwen/Qwen3-Embedding-0.6B` | 1024 | Qwen embed |
### 🔁 Reranking Models
| Model | Test Command |
|-------|--------------|
| `BAAI/bge-reranker-base` | `rerank(query, documents)` |
### 🖼️ Vision-Language Models (VLM)
| Model | Size | Capabilities |
|-------|------|--------------|
| `Qwen/Qwen2-VL-2B-Instruct` | 2B | Vision + text |
| `Qwen/Qwen2.5-VL-3B-Instruct` | 3B | Improved VL |
| `Qwen/Qwen2.5-VL-7B-Instruct` | 7B | Large VL |
| `vikhyatk/moondream2` | 1.6B | Tiny VLM |
| `moondream/starmie-v1` | varies | Moondream variant |
| `h2oai/h2ovl-mississippi-800m` | 800M | H2O VL |
| `TIGER-Lab/VLM2Vec-Qwen2VL-2B` | 2B | VLM to vectors |
| `owl10/ReCogDrive-VLM-2B` | 2B | Driving VLM |
### 🎮 Reinforcement Learning (RL)
| Model | Environment | Test Command |
|-------|-------------|--------------|
| `sb3/ppo-CartPole-v1` | CartPole | `model.act(obs)` |
| `sb3/ppo-LunarLander-v2` | LunarLander | `model.act(obs)` |
| `sb3/ppo-Acrobot-v1` | Acrobot | `model.act(obs)` |
| `sb3/ppo-BreakoutNoFrameskip-v4` | Breakout | Atari |
| `sb3/ppo-PongNoFrameskip-v4` | Pong | Atari |
| `sb3/ppo-SpaceInvadersNoFrameskip-v4` | Space Invaders | Atari |
| `sb3/ppo-MsPacmanNoFrameskip-v4` | Ms. Pacman | Atari |
| `sb3/ppo-QbertNoFrameskip-v4` | Q*bert | Atari |
| `sb3/ppo-BeamRiderNoFrameskip-v4` | Beam Rider | Atari |
| `sb3/ppo-EnduroNoFrameskip-v4` | Enduro | Atari |
| `sb3/ppo-AsteroidsNoFrameskip-v4` | Asteroids | Atari |
| `sb3/ppo-RoadRunnerNoFrameskip-v4` | Road Runner | Atari |
| `sb3/ppo-SeaquestNoFrameskip-v4` | Seaquest | Atari |
| `sb3/ppo-MiniGrid-*` | MiniGrid | Grid world |
| `sb3/dqn-*` | Various | DQN variants |
| `sb3/qrdqn-*` | Various | QR-DQN variants |
| `qgallouedec/ppo-MiniGrid-FourRooms-v0` | MiniGrid | Four rooms |
### ♟️ Game AI
| Model | Game | Test |
|-------|------|------|
| `Maxlegrec/ChessBot` | Chess | `model.act(board_state)` |
| `notjing/chessai` | Chess | Chess AI |
### 💻 Code Models
| Model | Task | Test |
|-------|------|------|
| `Salesforce/codet5-small` | Code generation | `generate("def fibonacci")` |
| `microsoft/codebert-base` | Code understanding | Embeddings |
### 🎨 Image Generation
| Model | Type | Test |
|-------|------|------|
| `CompVis/stable-diffusion-v1-4` | Diffusion | `generate_image("a cat")` |
### 📄 Document Processing
| Model | Task | Test |
|-------|------|------|
| `ibm-granite/granite-docling-258M` | Document understanding | OCR/layout |
---
## Test Execution Plan
### Phase 1: Embedding Models (fastest, most reliable)
```python
# Test all embedding models
for model in ["BAAI/bge-small-en-v1.5", "sentence-transformers/all-MiniLM-L6-v2", ...]:
plug_model(model)
result = embed_text("The quick brown fox")
assert len(result.embedding) > 0
```
### Phase 2: Text Generation (LLMs)
```python
# Test text generation
for model in ["HuggingFaceTB/SmolLM2-135M-Instruct", "Qwen/Qwen2.5-0.5B-Instruct", ...]:
plug_model(model)
result = generate("Hello, my name is", max_tokens=50)
assert len(result.output) > 0
```
### Phase 3: Vision-Language Models
```python
# Test VLMs with image input
plug_model("vikhyatk/moondream2")
result = forward({"image": "path/to/image.jpg", "text": "What is in this image?"})
```
### Phase 4: RL Models
```python
# Test RL action selection
from huggingface_sb3 import load_from_hub
model = load_from_hub("sb3/ppo-CartPole-v1")
plug_model(model)
action = invoke_slot(0, obs, mode="forward")
```
### Phase 5: Reranking
```python
plug_model("BAAI/bge-reranker-base")
result = rerank("What is AI?", ["AI is...", "Machine learning...", "Deep learning..."])
```
### Phase 6: Image Generation
```python
plug_model("CompVis/stable-diffusion-v1-4")
result = generate_image("a beautiful sunset over mountains")
# Returns base64 image or file path
```
---
## Rerun Visualization Verification
| Path | What to Check | Status |
|------|---------------|--------|
| `mcp/tool` | Tool names appear | ⬜ |
| `mcp/duration_ms` | Latency timeseries | ⬜ |
| `inference/timing/*` | Per-stage latency | ⬜ |
| `inference/embedding` | Tensor view | ⬜ |
| `inference/dreamer/*` | Latent state norms | ⬜ |
| `inference/council/*` | Per-councilor confidence | ⬜ |
| `bag/size` | Item count | ⬜ |
| `bag/ops` | Stash/summon activity | ⬜ |
| `state/slots/activity` | Slot invocation bar chart | ⬜ |
| `evolution/fitness/*` | Fitness curves (if compiling) | ⬜ |
---
## Quick Start Commands
```bash
# Start MCP server (auto-inits Rerun)
python your_capsule.py --mcp
# Or in Python:
from your_capsule import run_mcp_server
run_mcp_server()
```
Then use MCP tools:
- `plug_model("BAAI/bge-small-en-v1.5")` - Plug embedding model
- `list_slots()` - See what's plugged
- `embed_text("test query")` - Generate embeddings
- `generate("Hello")` - Generate text
- `forward({"text": "test"})` - Full inference path
---
## Notes
- **Local models**: Set `HF_HOME=D:\huggingface` to use cached models
- **GPU**: Most models benefit from CUDA; check `torch.cuda.is_available()`
- **Memory**: 7B+ models need 16GB+ RAM or GPU offloading
- **infinity-emb**: For high-throughput, use `infinity_server` with async embedding