Instructions to use FerrellSyntheticIntelligence/fsi-anomaly with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use FerrellSyntheticIntelligence/fsi-anomaly with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf FerrellSyntheticIntelligence/fsi-anomaly # Run inference directly in the terminal: llama cli -hf FerrellSyntheticIntelligence/fsi-anomaly
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf FerrellSyntheticIntelligence/fsi-anomaly # Run inference directly in the terminal: llama cli -hf FerrellSyntheticIntelligence/fsi-anomaly
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf FerrellSyntheticIntelligence/fsi-anomaly # Run inference directly in the terminal: ./llama-cli -hf FerrellSyntheticIntelligence/fsi-anomaly
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf FerrellSyntheticIntelligence/fsi-anomaly # Run inference directly in the terminal: ./build/bin/llama-cli -hf FerrellSyntheticIntelligence/fsi-anomaly
Use Docker
docker model run hf.co/FerrellSyntheticIntelligence/fsi-anomaly
- LM Studio
- Jan
- Ollama
How to use FerrellSyntheticIntelligence/fsi-anomaly with Ollama:
ollama run hf.co/FerrellSyntheticIntelligence/fsi-anomaly
- Unsloth Desktop
- Docker Model Runner
How to use FerrellSyntheticIntelligence/fsi-anomaly with Docker Model Runner:
docker model run hf.co/FerrellSyntheticIntelligence/fsi-anomaly
- Lemonade
How to use FerrellSyntheticIntelligence/fsi-anomaly with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull FerrellSyntheticIntelligence/fsi-anomaly
Run and chat with the model
lemonade run user.fsi-anomaly-{{QUANT_TAG}}List all available models
lemonade list
- Atomic Chat
| """Recompute the honest battery scorecard from a per-battery eval log. | |
| Scores are taken from the persisted per-probe lines so a device kill that | |
| restarts eval.py mid-battery never loses or re-aggregates completed probes. | |
| Exact-match on eval_labels.CANON, same protocol as research/eval.py. | |
| Usage: | |
| .venv/bin/python research/eval_summary.py logs/eval_cand_sft_best_main.log | |
| """ | |
| import argparse | |
| import re | |
| from pathlib import Path | |
| from research import eval_labels as EL | |
| LINE = re.compile(r"^\[(\S+)\] ([\d.]+|qual) \| verdict: (.+?) \| conf: (\S+)$") | |
| def scored_ids(log_path): | |
| """Probe ids already scored in ANY section of a battery log (for resume).""" | |
| ids = set() | |
| if not Path(log_path).exists(): | |
| return ids | |
| for ln in Path(log_path).read_text().splitlines(): | |
| m = LINE.match(ln.strip()) | |
| if m: | |
| ids.add(m.group(1)) | |
| return ids | |
| def cat_of(pid): | |
| if pid.startswith("p") or pid.startswith("rt"): | |
| return "generic" | |
| return pid.rsplit("-", 1)[0] | |
| def summarize(log_path): | |
| scores, quals, formats = [], 0, 0 | |
| cat_acc = {} | |
| seen = set() | |
| for ln in Path(log_path).read_text().splitlines(): | |
| m = LINE.match(ln.strip()) | |
| if not m: | |
| continue | |
| pid, raw_sc, verdict, conf = m.groups() | |
| if pid in seen: | |
| continue # dedupe across resume sections; first occurrence wins | |
| seen.add(pid) | |
| canon = EL.CANON.get(pid) | |
| ok_format = bool(verdict) and bool(conf) | |
| formats += int(ok_format) | |
| if canon is None: | |
| quals += 1 | |
| else: | |
| sc = 1.0 if verdict.strip().lower() == canon else 0.0 | |
| scores.append(sc) | |
| cat_acc.setdefault(cat_of(pid), []).append(sc) | |
| n = len(scores) | |
| acc = sum(scores) / n if n else float("nan") | |
| total = n + quals | |
| fmt = formats / total if total else float("nan") | |
| print(f"canonical verdict accuracy (exact): {acc:.3f} " | |
| f"(n={n}, qualitative={quals}) format rate: {fmt:.2f}") | |
| for cat, v in sorted(cat_acc.items()): | |
| print(f" {cat:12s} acc {sum(v)/len(v):.3f} n={len(v)}") | |
| return {"accuracy": acc, "n": n, "qualitative": quals, | |
| "format_rate": fmt, | |
| "by_category": {k: sum(v) / len(v) for k, v in cat_acc.items()}} | |
| if __name__ == "__main__": | |
| ap = argparse.ArgumentParser() | |
| ap.add_argument("log") | |
| args = ap.parse_args() | |
| summarize(args.log) | |