Instructions to use ariacompute/afm-dd with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use ariacompute/afm-dd with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("openbmb/MiniCPM5-2B") model = PeftModel.from_pretrained(base_model, "ariacompute/afm-dd") - Notebooks
- Google Colab
- Kaggle
AFM-D Decoder (afm_dd)
Causal System 1 decisions over a typed answer space (option-letter logits).
Site: ariacompute.com · Org: ariacompute · Hub: ariacompute/afm-dd
AFM-D Decoder is the causal track of AFM-D: SemIf direct option-letter scoring on openbmb/MiniCPM5-2B with an optional PEFT LoRA (product recipe afm-d-decoder-v2.1). It scores a text/JSON state against user-supplied options and returns a distribution — not open-ended chat, not TypeSafe Jev.
| Primitive | Answer space | Result |
|---|---|---|
| Choice | 2–16 options (A–P) | choice, probabilities, confidence |
| Score | 2–10 ordered levels | expected score, distribution, confidence |
| Noul | false / true |
noul = P(true) |
Companion Encoder (Laya ModernBERT DecisionModel): ariacompute/afm-de.
Model details
| Subject id | afm_dd |
| Base | openbmb/MiniCPM5-2B @ 12a3808a956f869c767195e9266b59c4d21d92e2 |
| Method | SemIf direct — read option-letter logits at the first generation position |
| Adapter | PEFT LoRA (attention), recipe afm-d-decoder-v2.1: r=16, 3 epochs, LR 5e-5, micro-batch 1 |
| Options | 2–16 letters A–P (wider Choice rows skipped at convert/train) |
| Training | Hard-label CE on AFM-D product corpus; shuffles option order each step (shuffle_semif_options) to avoid letter collapse |
| Export | PEFT adapter (this repo) + optional merged Q8_0 GGUF at gguf/afm-dd-2b-Q8_0.gguf for Ollaya / llama.cpp |
Checkpoint layout
adapter_config.json
adapter_model.safetensors # or adapter_model.bin
dd_config.json
tokenizer/
gguf/afm-dd-2b-Q8_0.gguf # optional; merged MiniCPM5 + LoRA for Ollaya
Load the adapter on the pinned MiniCPM5-2B revision with peft + SemIf / AFM-D Decoder code — not as a standalone chat GGUF unless you use the merged file under gguf/.
Intended use
- Local typed decision scoring (Choice / Score / Noul) over a supplied state via System One HTTP or in-process subjects.
- Offline eval and JevBench comparison via the AFM-D harness.
- Ollaya / llama.cpp inference from the merged Q8_0 GGUF when published in this repo.
How to use
Load through Aria Engine (native AFM runtime) or Ollaya (Ollama-style local decision daemon).
Aria Engine
Native AFM runtime: CLI, POST /v1/systemone, FFI, and language SDKs. Docs: engine README. Decoder System One default port 8011.
aria-engine setup
aria-engine download afm-dd # → ~/.ariacompute/models/afm-dd
aria-engine decide --track decoder --model-name afm-dd --file record.json
aria-engine serve --track decoder --model-name afm-dd --bind 127.0.0.1:8011
System One body (POST /v1/systemone or decide):
curl -s http://127.0.0.1:8011/v1/systemone \
-H 'content-type: application/json' \
-d '{
"state": "user wants a refund",
"questions": {
"q1": {
"type": "choice",
"instructions": "Pick the best action",
"criteria": {
"refund": "issue a full refund",
"deny": "deny the request"
}
}
}
}'
type |
criteria |
|---|---|
choice |
object: option name → description |
score |
array of 2–10 ordered level strings |
noul |
object with true / false (optional) |
Python SDK (pip install aria-engine; needs libaria-engine_ffi or ARIA_FFI_LIB):
from aria_engine import AriaEngine
eng = AriaEngine("/path/to/afm-dd", "decoder") # or ~/.ariacompute/models/afm-dd
out = eng.systemone({
"state": "user wants a refund",
"questions": {
"q1": {
"type": "choice",
"instructions": "Pick the best action",
"criteria": {
"refund": "issue a full refund",
"deny": "deny the request",
},
}
},
})
print(out["answers"]["q1"])
eng.destroy()
Also: TypeScript @ariacompute/engine-ts, Rust ariacompute-engine, Go / Flutter / Swift / Kotlin — see engine bindings/.
Ollaya
Ollaya pulls AFM-D by name and serves TypeSafe-compatible /v1/systemone. Use the AFM-D-enabled builds from ariacompute/ollaya releases (not the default ollaya-dev/ollaya channel). Weights stay on Hugging Face / ModelScope (Ollaya does not re-host).
# install from https://github.com/ariacompute/ollaya/releases (latest AFM-D build)
curl -fsSL https://raw.githubusercontent.com/ariacompute/ollaya/main/scripts/install.sh \
| OLLAYA_REPO=ariacompute/ollaya sh
# pin a release: OLLAYA_REPO=ariacompute/ollaya OLLAYA_VERSION=0.7.5+afm-d.1.0.0
# Windows (PowerShell):
# $env:OLLAYA_REPO='ariacompute/ollaya'; irm https://raw.githubusercontent.com/ariacompute/ollaya/main/scripts/install.ps1 | iex
# weights: HF (ariacompute/afm-dd) or ModelScope (AriaCompute/afm-dd)
# OLLAYA_HUB=huggingface|modelscope|auto (auto → ModelScope when LANG looks Chinese)
ollaya pull afm-dd
ollaya run afm-dd --preset triage \
"Third time this year you've double-charged me. Refund it today or I'm cancelling."
Or download a platform asset from the releases page (e.g. ollaya-linux-amd64.tar.zst, ollaya-darwin-arm64.tgz, ollaya-windows-amd64.zip), unpack, put ollaya on PATH, then pull / run as above.
HTTP (daemon default http://localhost:11435):
curl http://localhost:11435/v1/systemone \
-H "Content-Type: application/json" \
-d '{
"model": "afm-dd",
"state": "user wants a refund",
"questions": {
"q1": {
"type": "choice",
"instructions": "Pick the best action",
"criteria": {
"refund": "issue a full refund",
"deny": "deny the request"
}
}
}
}'
Family notes: Ollaya repo docs/families/afm-dd.md.
Eval
Product LoRA (afm-d-decoder-v2.1) on data/eval.jsonl, n=5513 (--skip-errors); vs base MiniCPM5-2B. letter_collapse.collapsed=false (top letter B ≈35.8%).
| AFM-D Decoder | Base MiniCPM | |
|---|---|---|
| Agreement | 77.5% | 59.5% |
| ECE | 0.029 | 0.261 |
| Brier | 0.299 | 0.613 |
| Task | n | Agree | ECE |
|---|---|---|---|
| choice | 2459 | 79.2% | 0.039 |
| noul | 1706 | 85.9% | 0.014 |
| score | 1348 | 64.0% | 0.048 |
Score is the weakest task bucket. Agree / ECE / Brier are local release diagnostics; product gate = JevBench public-proxy below.
JevBench
Public-proxy board (n=231, gate Score ≥ 50.0). Not an official sealed JevBench claim.
| # | System | Score | Intel. | Calib. | Speed | Acc. | Hard |
|---|---|---|---|---|---|---|---|
| 1 | SemIf | 84.0 | 74.9 | 87.1 | 90.7 | 81.0% | 61.3% |
| 2 | Bespoke Nimble-9B | 79.2 | 72.5 | 76.2 | 89.8 | 79.7% | 61.3% |
| 3 | NeoHorse-Jev-4B | 78.3 | 63.1 | 84.6 | 89.7 | 72.3% | 45.0% |
| 4 | Kev-4B | 76.9 | 67.2 | 76.7 | 88.3 | 75.8% | 54.1% |
| 5 | AFM-D Decoder | 76.3 | 57.1 | 84.9 | 91.7 | 68.4% | 40.5% |
| 6 | AgentJev-0.6B | 42.0 | 40.0 | 79.8 | 89.1 | 58.0% | 36.0% |
| 7 | Laya | 30.9 | 36.4 | 57.7 | 93.9 | 53.2% | 27.9% |
AFM-D Decoder tiers: easy 100%, standard 90.3%, hard 40.5% — beats the public-proxy gate. Near Kev on composite Score; main gap vs SemIf / Nimble is Intelligence / hard.
License
MIT
Citation / links
- Org: huggingface.co/ariacompute
- Companion Encoder: ariacompute/afm-de
- Aria Engine: github.com/ariacompute/engine
- Ollaya (AFM-D builds): github.com/ariacompute/ollaya/releases
- Base MiniCPM5-2B: openbmb/MiniCPM5-2B
- SemIf: github.com/TheoLeeCJ/SemIf-OpenJev
- JevBench: github.com/fstandhartinger/jevbench
- Downloads last month
- 1
Model tree for ariacompute/afm-dd
Base model
openbmb/MiniCPM5-2B