Instructions to use bdougie/smollm3-forest-lora with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use bdougie/smollm3-forest-lora with MLX:
# Make sure mlx-lm is installed # pip install --upgrade mlx-lm # if on a CUDA device, also pip install mlx[cuda] # Generate text with mlx-lm from mlx_lm import load, generate model, tokenizer = load("bdougie/smollm3-forest-lora") prompt = "Once upon a time in" text = generate(model, tokenizer, prompt=prompt, verbose=True) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- MLX LM
How to use bdougie/smollm3-forest-lora with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Generate some text mlx_lm.generate --model "bdougie/smollm3-forest-lora" --prompt "Once upon a time"
smollm3-forest-lora
A small experimental LoRA adapter that fine-tunes SmolLM3-3B to act as the genome proposer for a Pokémon Red agent trying to cross Viridian Forest to Pewter City.
Given a rollout situation (current position, sub-beats reached, catchers beaten, and the current
genome), the model is trained to respond with only a JSON genome — the battle/survival
parameters (hp_run_threshold, hp_heal_threshold, move-pick weights, etc.) that decide whether
the agent flees or fights wild encounters and when it heals. Navigation along the route is
hand-driven; the genome controls survival.
It was produced by the autotune Try → Check → Reward → Nudge loop in
pcc-labs/empirical-evidence as the only step where
weights are updated.
⚠️ Scope: this is a proof-of-concept adapter trained on a tiny rejection-sampled set (4 train / 1 validation example, 8 iterations). It demonstrates the pipeline; it is not a general-purpose or heavily-tuned model.
Details
| Base model | EricFillion/smollm3-3b-mlx (MLX build of HuggingFaceTB/SmolLM3-3B) |
| Method | LoRA (fine_tune_type: lora) |
| Trainer | mlx_lm lora (Apple-Silicon backend) |
| LoRA rank / scale / dropout | 16 / 16.0 / 0.05 |
| Layers adapted | 16 |
| Learning rate | 2e-5 |
| Max sequence length | 4096 |
| Optimizer | adam |
| Iterations | 8 |
| Data | rejection-sampled chat SFT (system/user/assistant JSONL) |
Files: adapter_config.json + adapters.safetensors (~54 MB).
Usage (MLX)
pip install mlx-lm huggingface_hub
hf download bdougie/smollm3-forest-lora --local-dir ./smollm3-forest-lora
from mlx_lm import load, generate
# Side-load the adapter against the base model
model, tokenizer = load(
"EricFillion/smollm3-3b-mlx",
adapter_path="./smollm3-forest-lora",
)
prompt = tokenizer.apply_chat_template(
[
{"role": "system", "content": "You tune a Pokemon Red agent's battle/survival genome to cross Viridian Forest to Pewter City. Respond with ONLY the JSON genome."},
{"role": "user", "content": "This rollout reached forest beat 1 'Enter Viridian Forest' (reward 2.0 sub-beats, 1 catchers beaten, crossed=False). Current genome: {\"hp_run_threshold\": 0.2, \"hp_heal_threshold\": 0.3}"},
],
add_generation_prompt=True,
)
print(generate(model, tokenizer, prompt=prompt, max_tokens=256))
To fuse the adapter into a standalone model instead of side-loading:
python -m mlx_lm fuse \
--model EricFillion/smollm3-3b-mlx \
--adapter-path ./smollm3-forest-lora \
--save-path ./smollm3-forest-fused
Related
- Project: pcc-labs/empirical-evidence — the training loop that produced this adapter — and pcc-labs/pokemon-kafka, the agent it drives.
- Dataset: bdougie/pokemon-red-telemetry-sft — a broader multi-domain SFT corpus from the same project (battle-outcome, move-choice, narrator, …). Note: this adapter was trained on a separate, tiny forest-crossing genome corpus — not on that dataset, which trained a different multi-task model.
License
Inherits the base model's license (Apache-2.0).
Quantized
Model tree for bdougie/smollm3-forest-lora
Base model
HuggingFaceTB/SmolLM3-3B-Base