Instructions to use hotchpotch/saihai-v1-8b-gguf 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 hotchpotch/saihai-v1-8b-gguf 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 hotchpotch/saihai-v1-8b-gguf:Q4_K_M # Run inference directly in the terminal: llama cli -hf hotchpotch/saihai-v1-8b-gguf:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf hotchpotch/saihai-v1-8b-gguf:Q4_K_M # Run inference directly in the terminal: llama cli -hf hotchpotch/saihai-v1-8b-gguf:Q4_K_M
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 hotchpotch/saihai-v1-8b-gguf:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf hotchpotch/saihai-v1-8b-gguf:Q4_K_M
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 hotchpotch/saihai-v1-8b-gguf:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf hotchpotch/saihai-v1-8b-gguf:Q4_K_M
Use Docker
docker model run hf.co/hotchpotch/saihai-v1-8b-gguf:Q4_K_M
- LM Studio
- Jan
- Ollama
How to use hotchpotch/saihai-v1-8b-gguf with Ollama:
ollama run hf.co/hotchpotch/saihai-v1-8b-gguf:Q4_K_M
- Unsloth Desktop
- Pi
How to use hotchpotch/saihai-v1-8b-gguf with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf hotchpotch/saihai-v1-8b-gguf:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "hotchpotch/saihai-v1-8b-gguf:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use hotchpotch/saihai-v1-8b-gguf with Docker Model Runner:
docker model run hf.co/hotchpotch/saihai-v1-8b-gguf:Q4_K_M
- Lemonade
How to use hotchpotch/saihai-v1-8b-gguf with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull hotchpotch/saihai-v1-8b-gguf:Q4_K_M
Run and chat with the model
lemonade run user.saihai-v1-8b-gguf-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use hotchpotch/saihai-v1-8b-gguf with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf hotchpotch/saihai-v1-8b-gguf:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default hotchpotch/saihai-v1-8b-gguf:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use hotchpotch/saihai-v1-8b-gguf with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf hotchpotch/saihai-v1-8b-gguf:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "hotchpotch/saihai-v1-8b-gguf:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
saihai-v1-8b-gguf
日本語での紹介記事はこちら: 日本語 Decision モデル "saihai" (采配) と、日本語 Decision モデルベンチマークの公開
A Japanese text decision model that returns yes/no probabilities (Noul), a selection among candidates (Choice), and a rubric score (Score).
These GGUF variants of saihai-v1-8b run through llama.cpp's /v1/systemone endpoint. They read candidate logits without generating reasoning or free-form text.
日本語: saihai (采配) は、はい/いいえ・選択・段階評価の判断を確率として返す日本語の Decision モデルです。このリポジトリは llama.cpp 用の GGUF 版で、通常は Q8_0、メモリを抑えたい場合は Q4_K_M がおすすめです。
Other saihai models: saihai-v1-8b (Transformers) and saihai-v1-310m (small encoder).
Recommended variants
Choose Q8_0 for quality or Q4_K_M for lower memory use.
| Your priority | Recommended variant | Why choose it? |
|---|---|---|
| Preserve BF16 quality | Q8_0 | 9.13 GB, about 47% smaller than BF16. Japanese Task Avg decreases by only 0.03 points; the highest-probability candidate matches BF16 on 99.03% of judgments. |
| Reduce memory and download size | Q4_K_M | 5.30 GB, about 69% smaller than BF16. Task Avg decreases by 0.66 points; the highest-probability candidate matches BF16 on 92.10% of judgments. |
Start with Q8_0 when it fits your memory budget. Choose Q4_K_M when memory is tighter, and check its predictions on your own use case—similar aggregate scores do not imply identical probabilities or decisions. Both delivered about 1.25× BF16 throughput in the separate RTX 5090 measurement. Q4_K_M was only slightly faster than Q8_0, so its main advantage here is lower memory use.
The full comparison is below. Q3_K_M saves more space but loses 2.56 points. Q2_K loses 11.46 points and was slower than Q3_K_M in the measured run.
| Variant | Download size | Japanese evaluation score ↑ | Difference from BF16 (points) |
|---|---|---|---|
| BF16 | 17.19 GB | 49.53 | +0.00 |
| Q8_0 | 9.13 GB | 49.50 | -0.03 |
| Q6_K | 7.05 GB | 49.24 | -0.29 |
| Q4_K_M | 5.30 GB | 48.87 | -0.66 |
| Q3_K_M | 4.37 GB | 46.98 | -2.56 |
| Q2_K | 3.50 GB | 38.08 | -11.46 |
The score is S1MB japanese-v1 Task Avg across 27 benchmarks and 8,067 judgments: the equal-weight average of the Noul, Choice and Score task means. It is not raw accuracy. File sizes exclude KV cache and runtime buffers. See Inference speed for measured throughput and GPU memory.
Quick start
1. Download and start the server
You need the hf CLI and a llama-server build with correct LLM-jp tokenization. See Runtime compatibility for the tested build.
uv pip install 'huggingface-hub>=1.0,<2'
hf download hotchpotch/saihai-v1-8b-gguf saihai-v1-8b-Q8_0.gguf \
--local-dir ./saihai-v1-8b-gguf
llama-server -m ./saihai-v1-8b-gguf/saihai-v1-8b-Q8_0.gguf \
--alias saihai-v1-8b-gguf --host 127.0.0.1 --port 8080 \
-ngl 99 -c 8192 --parallel 1 --flash-attn on --no-context-shift
This example offloads all layers to an NVIDIA GPU and uses an 8K context with one server slot.
For the lower-memory recommendation, download saihai-v1-8b-Q4_K_M.gguf instead and replace Q8_0 with Q4_K_M in the server command.
The measured peak GPU memory was 12.39 GiB for Q8_0 and 9.21 GiB for Q4_K_M with four 8K slots. Your memory requirement depends on context length and concurrency; these are not minimum requirements.
2. Classify a customer request
This example uses only the Python standard library. It asks whether the customer wants a refund, which department should handle the request, and how urgent it is.
import json
from urllib.request import Request, urlopen
body = {
"state": "昨日購入した商品を返品したいです。返金をお願いします。",
"questions": {
"refund": {
"type": "noul",
"instructions": "顧客は返金を求めているか?"
},
"department": {
"type": "choice",
"instructions": "問い合わせを担当部署に振り分ける。",
"criteria": {
"refunds": "返品・返金の対応",
"delivery": "配送状況・配達の対応",
"technical": "ログイン・システム障害の対応"
}
},
"urgency": {
"type": "score",
"instructions": "問い合わせの緊急度を評価する。",
"criteria": [
"通常対応:一般的な問い合わせや依頼",
"優先対応:利用できず困っている",
"至急対応:不正利用や被害が進行している"
]
}
}
}
request = Request(
"http://127.0.0.1:8080/v1/systemone",
data=json.dumps(body, ensure_ascii=False).encode(),
headers={"Content-Type": "application/json"},
)
with urlopen(request) as response:
answers = json.load(response)["answers"]
print(f"返金要求あり:{answers['refund']['noul']:.2%}")
department = answers["department"]
names = {"refunds": "返品・返金", "delivery": "配送", "technical": "技術サポート"}
selected = department["choice"]
print(f"担当部署:{names[selected]}({department['probabilities'][selected]:.2%})")
urgency = answers["urgency"]
p = urgency["probabilities"]
print(
f"緊急度:通常対応 {p['0']:.2%}、優先対応 {p['1']:.2%}、"
f"至急対応 {p['2']:.2%}(スコア:{urgency['score']:.3f})"
)
The expected interpretation is a refund request, routed to the refunds department, with normal urgency. Actual probabilities vary with quantization and runtime conditions.
The urgency score is the probability-weighted average of normal 0, priority 1, and immediate 2.
Inference speed
Measured on an RTX 5090 with four concurrent requests, evaluating 8,067 judgments per variant.
| Variant | Judgments/second ↑ | Relative to BF16 | Observed peak GPU memory |
|---|---|---|---|
| BF16 | 24.28 | 1.00× | 19.22 GiB |
| Q8_0 | 30.44 | 1.25× | 12.39 GiB |
| Q6_K | 28.38 | 1.17× | 10.64 GiB |
| Q4_K_M | 30.58 | 1.26× | 9.21 GiB |
| Q3_K_M | 31.07 | 1.28× | 8.43 GiB |
| Q2_K | 26.56 | 1.09× | 7.70 GiB |
Q8_0, Q4_K_M and Q3_K_M delivered approximately 1.25–1.28× BF16 throughput in this run. Lower bit depth does not always mean faster inference.
Throughput uses the end-to-end evaluation time after model startup, including HTTP, scoring and result saving. It is neither generation tokens/second nor single-request latency. The run used an 8K context per slot, prompt-cache reuse and one measurement per variant. Different variants were evaluated concurrently on two GPUs. The memory figures apply to this setup, not to a 64K context.
Inputs, outputs and limits
- Noul:
noulis the probability of true. - Choice:
criteriamaps candidate names to descriptions.choiceis the selected name andprobabilitiescontains every candidate's probability. Supports 1–255 candidates. - Score:
criteriacontains 2–10 levels in the intended rubric order.scoreis the expected zero-based level index.
Questions are evaluated independently. Probabilities are not guaranteed correctness rates and have not been separately calibrated. Input JSON numbers use six significant digits; pass precise quantities as strings. For Score levels with explicit numeric values, compute the expected numeric value from the returned probabilities and your scale.
Longer inputs
The quick-start command uses an 8K context. For the maximum supported context, use -c 65536 --parallel 1.
The tested native server reserves one position, allowing up to 65,535 input tokens per slot, including instructions, state, candidates and delimiters.
Four slots with 64K capacity each require -c 262144 --parallel 4 and more KV-cache memory. Keep context shifting disabled.
Training used an 8,192-token input limit. Decision quality on longer inputs, including 64K inputs, has not been established by these short-input benchmarks.
Evaluation details
Japanese evaluation — October 13, 2026
All six variants were evaluated with the same S1MB standard llama-cpp input adapter: 27 benchmarks, 8,067 judgments and zero inference failures per variant.
Dataset revision: 59b66dd94c430c1ec6db1c948fa2cc0410400a27. Task Avg averages the three task means and differs from the older AVG27 metric, which averages all 27 benchmarks.
Scores by source task and synthetic generalization task
| Variant | Source Noul | Source Choice | Source Score | gen-noul | gen-choice | gen-score |
|---|---|---|---|---|---|---|
| BF16 | 45.17 | 60.02 | 55.89 | 52.67 | 69.02 | 21.13 |
| Q8_0 | 44.98 | 60.28 | 55.75 | 52.22 | 69.17 | 21.16 |
| Q6_K | 44.79 | 59.64 | 55.58 | 52.67 | 68.28 | 21.02 |
| Q4_K_M | 44.74 | 58.86 | 54.59 | 53.78 | 68.43 | 20.13 |
| Q3_K_M | 44.78 | 57.00 | 49.95 | 51.56 | 66.50 | 18.97 |
| Q2_K | 34.44 | 48.19 | 43.34 | 41.11 | 60.69 | 9.46 |
These columns separate 19 source benchmarks from eight synthetic generalization benchmarks. All values are baseline-adjusted scores ×100.
Training includes train examples from evaluation source families. Evaluation judgments themselves were excluded from training; these results do not establish generalization to unseen source families.
Speed measurement — October 11, 2026
The speed table comes from a separate full run over the same 27 Japanese benchmarks (under its earlier internal name, JDMB-v1), using the same trained tensors before the 64K metadata update. The S1MB quality and speed tables were not measured in the same run. Repeated-run averages and confidence intervals are unavailable. Detailed values, model hashes and evaluation revisions are in benchmark-results.json.
Runtime compatibility
The tested llama.cpp build uses revision 3d65c90d04d337e88f2b1f7f0061f40a5324e662 with the src/llama-vocab.cpp tokenizer fix from PR #28864, commit 7dd044d70a5791ff8205fa26c77074bc77cbe792.
This fix is needed for correct LLM-jp Unigram tokenization and byte fallback. No saihai-specific C++ changes or external tokenizer JSON are required.
See the source model card for training details, and gguf-export.json / release-manifest.json for conversion settings and artifact hashes. The training and GGUF conversion code is at hotchpotch/saihai.
- Downloads last month
- 355
2-bit
3-bit
4-bit
6-bit
8-bit
16-bit