Instructions to use AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5") model = AutoModelForCausalLM.from_pretrained("AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5
- SGLang
How to use AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5 with Docker Model Runner:
docker model run hf.co/AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5
Parable-Granite-4.1-3B-Claude-Fable-5
Granite 4.1 3B trained on real Claude Fable 5 and GPT-5.5 agent traces: 87% lower held-out test loss than its base. A compact chat model trained on the prose side of real agent sessions: strongest at explanations, idioms, and one-liners.
Parable-Granite-4.1-3B is an ibm-granite/granite-4.1-3b fine-tune trained on real multi-step agent sessions: planning, tool use, and <think> reasoning captured from actual Claude Fable 5 and GPT-5.5 agent work, not synthetic Q&A. Smallest and newest release in the Parable series, alongside Parable-Qwen3-4B.
Usage
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="auto", device_map="auto")
messages = [{"role": "user", "content": "Write a bash one-liner to find the 10 largest files in a directory tree."}]
inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
output = model.generate(inputs, max_new_tokens=3000, temperature=0.7, top_p=0.95, do_sample=True)
print(tokenizer.decode(output[0][inputs.shape[1]:], skip_special_tokens=True))
Output opens with a <think>...</think> reasoning block before the final answer. Strip it before showing responses to end users.
Sampling: temperature 0.7, top_p 0.95. Budget max_new_tokens generously (at least 2500): trace-trained reasoning models think at length before answering.
GGUF quants for llama.cpp, Ollama, and LM Studio: Parable-Granite-4.1-3B-Claude-Fable-5-GGUF.
Training data
- Glint-Research/Fable-5-traces: 4.4k real Claude Fable 5 coding-agent session traces with
<think>reasoning and tool calls (AGPL-3.0) - Roman1111111/gpt5.5-terminal: terminal-agent task solutions (MIT)
Every example passed a quality gate (schema validation, secrets scrub, length filtering) before training. QLoRA fine-tune (NF4, sequence length 2048) trained on a single 16 GB GPU, quantized with llama.cpp.
Evaluation
Held-out test split, identical evaluation code and context length for base and fine-tune:
| Metric | Base Granite-4.1-3B | Parable | Δ |
|---|---|---|---|
| Test loss | 2.824 | 0.376 | −87% |
Qualitative review (34 coding/terminal/debugging prompts, strictly graded by mentally executing every answer): 14 of 34 fully correct, 26 of 34 correct or partially correct. The pattern is consistent: reliable on explanations, one-liners, idiomatic refactors, and debugging advice; unreliable on multi-part script and config generation, where we recommend the 8B instead. We publish these numbers because strict qualitative grading is rare in this niche; judge accordingly.
For reference, the strongest published fine-tune on this data family (a 9B) reports 0.71 validation loss. Cross-repo numbers are indicative only: splits, tokenizers, and context lengths differ (ours is measured at 1,024 tokens).
Limitations
- Best in its lane: explanations, one-liners, and idiomatic fixes. For multi-step script or config generation, use the 8B; this model can hallucinate agent-transcript formatting on those prompts (3 of 34 in our eval).
- Fine-tuned at 2,048-token sequences; the base model's native 128K-token context remains fully available, so long sessions work, with the fine-tuned behavior strongest in the opening turns.
As a fine-tune it inherits Granite-4.1-3B's base behaviors and knowledge cutoff. As with any local model, treat generated commands and code as drafts to review.
Provenance & licensing
Model weights: Apache-2.0 (inherited from Granite-4.1-3B). Training data licenses: Fable-5-traces AGPL-3.0, gpt5.5-terminal MIT. Because those traces originate from third-party assistants, the providers' terms may apply to downstream training and distillation. If you plan to build on this model commercially, confirm your use aligns with those terms.
Get Parable
| Platform | Command / Link |
|---|---|
| Ollama | ollama run parable/fable (parable namespace) |
| Hugging Face | GGUF quants, full weights, eval reports |
| LM Studio | search "parable" in-app, or any HF GGUF repo URL |
Acknowledgements
- Glint-Research and Roman1111111 for the open trace datasets
- IBM Granite for the base model
- empero-ai, whose Qwable recipe the Parable series follows
- llama.cpp
- Downloads last month
- 173
Model tree for AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5
Base model
ibm-granite/granite-4.1-3b