MNN-Pocket-0.3B-RU / bench /bench_cpu.sh
Rahspide's picture
docs: designed card — cover, charts, tests, releases
b8f7f82 verified
Raw History Blame Contribute Delete
1.32 kB
#!/usr/bin/env bash
# Пропускная способность GGUF на CPU: prompt processing и генерация.
# bash bench/bench_cpu.sh gguf/MNN-Pocket-0.3B-RU-Q4_K_M.gguf [--chat]
# Нужен llama.cpp: LLAMA_CLI (по умолчанию llama-cli из PATH).
set -euo pipefail
MODEL="${1:?usage: bench_cpu.sh <model.gguf> [--chat]}"
shift || true
CHAT=0
for a in "$@"; do [ "$a" = "--chat" ] && CHAT=1; done
LLAMA_CLI="${LLAMA_CLI:-llama-cli}"
PROMPT="Объясни в двух предложениях, что такое инфляция."
EXTRA=()
if [ "$CHAT" = 1 ]; then EXTRA+=(--jinja); fi
raw="$("$LLAMA_CLI" -m "$MODEL" -p "$PROMPT" -n 64 --temp 0 -st --no-display-prompt \
"${EXTRA[@]}" 2>&1 || true)"
# llama.cpp печатает тайминги в своей локали: "237,7 t/s"
echo "$raw" | tr ',' '.' | sed -n 's/.*Prompt: *\([0-9.]*\) *t\/s.*Generation: *\([0-9.]*\) *t\/s.*/prompt \1 tok\/s\ngeneration \2 tok\/s/p' | tail -2
# ответ — строки после эха промпта ("> ...") и до строки с таймингами
answer="$(echo "$raw" | awk '/^> /{p=1; next} /Prompt:/{p=0} p' | sed '/^\[/d' | sed '/^$/d')"
if [ -z "$answer" ]; then
echo "FAIL: empty answer" >&2
exit 1
fi
echo "--- sample ---"
echo "$answer" | head -4