CROM-IA-V4.2 / scripts /benchmark_codebooks.sh
mrj-crom's picture
sync: scripts/benchmark_codebooks.sh
9fa5ab2 verified
#!/bin/bash
# ╔══════════════════════════════════════════════════════════════╗
# β•‘ 🧬 CROM-IA V2: Benchmark Comparativo de Codebooks DNA β•‘
# β•‘ β•‘
# β•‘ Executa todas as combinaΓ§Γ΅es (4 taxas Γ— 2 modos) β•‘
# β•‘ e gera relatΓ³rio comparativo β•‘
# β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
set -euo pipefail
BASE_DIR="$(cd "$(dirname "$0")/.." && pwd)"
MODELS_DIR="$BASE_DIR/models"
CODEBOOKS_DIR="$BASE_DIR/codebooks"
SCRIPTS_DIR="$BASE_DIR/scripts"
LLAMA_CLI="/home/j/Área de trabalho/crompressor/pesquisa/ia_llm/102-native_llm_humble_pc/bin/llama-cli"
DECODER="$SCRIPTS_DIR/dna_decoder.py"
# Perguntas de benchmark (10 simples, 10 mΓ©dias, 10 complexas)
PERGUNTAS_SIMPLES=(
"O que Γ© o sol?"
"Qual Γ© a capital do Brasil?"
"Quanto Γ© 2+2?"
"O que Γ© Γ‘gua?"
"Qual Γ© a cor do cΓ©u?"
"Quantos dias tem uma semana?"
"O que Γ© um gato?"
"Qual Γ© o maior planeta?"
"O que Γ© uma Γ‘rvore?"
"Quem inventou o telefone?"
)
PERGUNTAS_MEDIAS=(
"Explique gravidade em 3 frases."
"Como funciona a internet?"
"O que Γ© fotossΓ­ntese?"
"Explique o que Γ© DNA."
"Como funciona um motor a combustΓ£o?"
"O que causa terremotos?"
"Explique o ciclo da Γ‘gua."
"O que Γ© a teoria da evoluΓ§Γ£o?"
"Como funciona uma vacina?"
"O que Γ© inteligΓͺncia artificial?"
)
PERGUNTAS_COMPLEXAS=(
"Compare democracia e autocracia."
"Explique a teoria das cordas."
"Qual a relaΓ§Γ£o entre entropia e informaΓ§Γ£o?"
"Explique o problema da consciΓͺncia na filosofia."
"Compare capitalismo e socialismo."
"O que Γ© computaΓ§Γ£o quΓ’ntica?"
"Explique a teoria da relatividade."
"Compare energia nuclear e solar."
"Explique o paradoxo de Fermi."
"O que Γ© a singularidade tecnolΓ³gica?"
)
echo "╔══════════════════════════════════════════════════════════╗"
echo "β•‘ CROM-IA V2: BENCHMARK COMPLETO DNA COMPRESSION β•‘"
echo "╠══════════════════════════════════════════════════════════╣"
echo "β•‘ Motor : $LLAMA_CLI"
echo "β•‘ Decoder : $DECODER"
echo "β•‘ Codebooks : $CODEBOOKS_DIR"
echo "β•‘ Models : $MODELS_DIR"
echo "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•"
echo ""
# Verificar requisitos
if [ ! -f "$LLAMA_CLI" ]; then
echo "❌ llama-cli não encontrado: $LLAMA_CLI"
exit 1
fi
TAXAS=("1x3" "1x5" "1x10" "1x20")
MODOS=("fixo" "dinamico")
RESULTS_FILE="$BASE_DIR/benchmark_results_$(date +%Y%m%d_%H%M%S).txt"
echo "╔══════════════════════════════════════════════════════════╗" | tee "$RESULTS_FILE"
echo "β•‘ CROM-IA V2: BENCHMARK DNA COMPRESSION β•‘" | tee -a "$RESULTS_FILE"
echo "╠══════════════════════════════════════════════════════════╣" | tee -a "$RESULTS_FILE"
echo "β•‘ Taxa β”‚ Modo β”‚ Palavras/s β”‚ Hit Rate β”‚ Veredicto β•‘" | tee -a "$RESULTS_FILE"
echo "║────────┼──────────┼────────────┼──────────┼─────────────║" | tee -a "$RESULTS_FILE"
for taxa in "${TAXAS[@]}"; do
for modo in "${MODOS[@]}"; do
MODEL="$MODELS_DIR/crom-dna-${taxa}-${modo}.gguf"
CODEBOOK="$CODEBOOKS_DIR/codebook_${taxa}_${modo}.json"
if [ ! -f "$MODEL" ]; then
echo "β•‘ ${taxa} β”‚ ${modo} β”‚ N/A β”‚ N/A β”‚ ⬜ Sem modeloβ•‘" | tee -a "$RESULTS_FILE"
continue
fi
if [ ! -f "$CODEBOOK" ]; then
echo "β•‘ ${taxa} β”‚ ${modo} β”‚ N/A β”‚ N/A β”‚ ⬜ Sem codebookβ•‘" | tee -a "$RESULTS_FILE"
continue
fi
echo "[>] Testando ${taxa} / ${modo}..."
# Teste com 3 perguntas (1 de cada nΓ­vel)
TOTAL_PALAVRAS=0
TOTAL_TEMPO=0
TOTAL_HITS=0
TOTAL_TOKENS=0
for PERGUNTA in "${PERGUNTAS_SIMPLES[0]}" "${PERGUNTAS_MEDIAS[0]}" "${PERGUNTAS_COMPLEXAS[0]}"; do
PROMPT="<|im_start|>system\nVocΓͺ Γ© um compressor CROM DNA (taxa ${taxa/x/:}). Comprima a resposta usando cΓ³digos do codebook semΓ’ntico DNA.<|im_end|>\n<|im_start|>user\n${PERGUNTA}<|im_end|>\n<|im_start|>assistant\n"
T_START=$(date +%s%N)
RESULTADO=$("$LLAMA_CLI" \
-m "$MODEL" \
--threads 2 \
-c 1024 \
-n 64 \
--temp 0.2 \
-p "$PROMPT" \
--log-disable 2>/dev/null | \
python3 "$DECODER" --codebook "$CODEBOOK" --quiet 2>/dev/null)
T_END=$(date +%s%N)
ELAPSED=$(( (T_END - T_START) / 1000000 )) # ms
PALAVRAS=$(echo "$RESULTADO" | wc -w)
TOTAL_PALAVRAS=$((TOTAL_PALAVRAS + PALAVRAS))
TOTAL_TEMPO=$((TOTAL_TEMPO + ELAPSED))
done
# Calcular mΓ©dias
if [ $TOTAL_TEMPO -gt 0 ]; then
PALAVRAS_POR_S=$((TOTAL_PALAVRAS * 1000 / TOTAL_TEMPO))
else
PALAVRAS_POR_S=0
fi
# Determinar veredicto
if [ $PALAVRAS_POR_S -gt 40 ]; then
VEREDICTO="βœ… ViΓ‘vel"
elif [ $PALAVRAS_POR_S -gt 20 ]; then
VEREDICTO="⚠️ Parcial"
else
VEREDICTO="❌ Lento"
fi
printf "β•‘ %-5s β”‚ %-8s β”‚ %8d/s β”‚ --- β”‚ %-12sβ•‘\n" \
"$taxa" "$modo" "$PALAVRAS_POR_S" "$VEREDICTO" | tee -a "$RESULTS_FILE"
done
done
echo "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•" | tee -a "$RESULTS_FILE"
echo "" | tee -a "$RESULTS_FILE"
echo "πŸ“„ Resultados salvos em: $RESULTS_FILE" | tee -a "$RESULTS_FILE"
echo "πŸš€ Benchmark concluΓ­do!"