sync: scripts/benchmark_codebooks.sh
Browse files- scripts/benchmark_codebooks.sh +154 -0
scripts/benchmark_codebooks.sh
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 3 |
+
# β 𧬠CROM-IA V2: Benchmark Comparativo de Codebooks DNA β
|
| 4 |
+
# β β
|
| 5 |
+
# β Executa todas as combinaΓ§Γ΅es (4 taxas Γ 2 modos) β
|
| 6 |
+
# β e gera relatΓ³rio comparativo β
|
| 7 |
+
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 8 |
+
|
| 9 |
+
set -euo pipefail
|
| 10 |
+
|
| 11 |
+
BASE_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
| 12 |
+
MODELS_DIR="$BASE_DIR/models"
|
| 13 |
+
CODEBOOKS_DIR="$BASE_DIR/codebooks"
|
| 14 |
+
SCRIPTS_DIR="$BASE_DIR/scripts"
|
| 15 |
+
LLAMA_CLI="/home/j/Γrea de trabalho/crompressor/pesquisa/ia_llm/102-native_llm_humble_pc/bin/llama-cli"
|
| 16 |
+
DECODER="$SCRIPTS_DIR/dna_decoder.py"
|
| 17 |
+
|
| 18 |
+
# Perguntas de benchmark (10 simples, 10 mΓ©dias, 10 complexas)
|
| 19 |
+
PERGUNTAS_SIMPLES=(
|
| 20 |
+
"O que Γ© o sol?"
|
| 21 |
+
"Qual Γ© a capital do Brasil?"
|
| 22 |
+
"Quanto Γ© 2+2?"
|
| 23 |
+
"O que Γ© Γ‘gua?"
|
| 24 |
+
"Qual Γ© a cor do cΓ©u?"
|
| 25 |
+
"Quantos dias tem uma semana?"
|
| 26 |
+
"O que Γ© um gato?"
|
| 27 |
+
"Qual Γ© o maior planeta?"
|
| 28 |
+
"O que Γ© uma Γ‘rvore?"
|
| 29 |
+
"Quem inventou o telefone?"
|
| 30 |
+
)
|
| 31 |
+
|
| 32 |
+
PERGUNTAS_MEDIAS=(
|
| 33 |
+
"Explique gravidade em 3 frases."
|
| 34 |
+
"Como funciona a internet?"
|
| 35 |
+
"O que Γ© fotossΓntese?"
|
| 36 |
+
"Explique o que Γ© DNA."
|
| 37 |
+
"Como funciona um motor a combustΓ£o?"
|
| 38 |
+
"O que causa terremotos?"
|
| 39 |
+
"Explique o ciclo da Γ‘gua."
|
| 40 |
+
"O que Γ© a teoria da evoluΓ§Γ£o?"
|
| 41 |
+
"Como funciona uma vacina?"
|
| 42 |
+
"O que Γ© inteligΓͺncia artificial?"
|
| 43 |
+
)
|
| 44 |
+
|
| 45 |
+
PERGUNTAS_COMPLEXAS=(
|
| 46 |
+
"Compare democracia e autocracia."
|
| 47 |
+
"Explique a teoria das cordas."
|
| 48 |
+
"Qual a relaΓ§Γ£o entre entropia e informaΓ§Γ£o?"
|
| 49 |
+
"Explique o problema da consciΓͺncia na filosofia."
|
| 50 |
+
"Compare capitalismo e socialismo."
|
| 51 |
+
"O que Γ© computaΓ§Γ£o quΓ’ntica?"
|
| 52 |
+
"Explique a teoria da relatividade."
|
| 53 |
+
"Compare energia nuclear e solar."
|
| 54 |
+
"Explique o paradoxo de Fermi."
|
| 55 |
+
"O que Γ© a singularidade tecnolΓ³gica?"
|
| 56 |
+
)
|
| 57 |
+
|
| 58 |
+
echo "ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"
|
| 59 |
+
echo "β CROM-IA V2: BENCHMARK COMPLETO DNA COMPRESSION β"
|
| 60 |
+
echo "β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£"
|
| 61 |
+
echo "β Motor : $LLAMA_CLI"
|
| 62 |
+
echo "β Decoder : $DECODER"
|
| 63 |
+
echo "β Codebooks : $CODEBOOKS_DIR"
|
| 64 |
+
echo "β Models : $MODELS_DIR"
|
| 65 |
+
echo "ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"
|
| 66 |
+
echo ""
|
| 67 |
+
|
| 68 |
+
# Verificar requisitos
|
| 69 |
+
if [ ! -f "$LLAMA_CLI" ]; then
|
| 70 |
+
echo "β llama-cli nΓ£o encontrado: $LLAMA_CLI"
|
| 71 |
+
exit 1
|
| 72 |
+
fi
|
| 73 |
+
|
| 74 |
+
TAXAS=("1x3" "1x5" "1x10" "1x20")
|
| 75 |
+
MODOS=("fixo" "dinamico")
|
| 76 |
+
|
| 77 |
+
RESULTS_FILE="$BASE_DIR/benchmark_results_$(date +%Y%m%d_%H%M%S).txt"
|
| 78 |
+
|
| 79 |
+
echo "ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ" | tee "$RESULTS_FILE"
|
| 80 |
+
echo "β CROM-IA V2: BENCHMARK DNA COMPRESSION β" | tee -a "$RESULTS_FILE"
|
| 81 |
+
echo "β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£" | tee -a "$RESULTS_FILE"
|
| 82 |
+
echo "β Taxa β Modo β Palavras/s β Hit Rate β Veredicto β" | tee -a "$RESULTS_FILE"
|
| 83 |
+
echo "ββββββββββΌβββββββββββΌβββββββββββββΌβββββββββββΌββββββββββββββ" | tee -a "$RESULTS_FILE"
|
| 84 |
+
|
| 85 |
+
for taxa in "${TAXAS[@]}"; do
|
| 86 |
+
for modo in "${MODOS[@]}"; do
|
| 87 |
+
MODEL="$MODELS_DIR/crom-dna-${taxa}-${modo}.gguf"
|
| 88 |
+
CODEBOOK="$CODEBOOKS_DIR/codebook_${taxa}_${modo}.json"
|
| 89 |
+
|
| 90 |
+
if [ ! -f "$MODEL" ]; then
|
| 91 |
+
echo "β ${taxa} β ${modo} β N/A β N/A β β¬ Sem modeloβ" | tee -a "$RESULTS_FILE"
|
| 92 |
+
continue
|
| 93 |
+
fi
|
| 94 |
+
|
| 95 |
+
if [ ! -f "$CODEBOOK" ]; then
|
| 96 |
+
echo "β ${taxa} β ${modo} β N/A β N/A β β¬ Sem codebookβ" | tee -a "$RESULTS_FILE"
|
| 97 |
+
continue
|
| 98 |
+
fi
|
| 99 |
+
|
| 100 |
+
echo "[>] Testando ${taxa} / ${modo}..."
|
| 101 |
+
|
| 102 |
+
# Teste com 3 perguntas (1 de cada nΓvel)
|
| 103 |
+
TOTAL_PALAVRAS=0
|
| 104 |
+
TOTAL_TEMPO=0
|
| 105 |
+
TOTAL_HITS=0
|
| 106 |
+
TOTAL_TOKENS=0
|
| 107 |
+
|
| 108 |
+
for PERGUNTA in "${PERGUNTAS_SIMPLES[0]}" "${PERGUNTAS_MEDIAS[0]}" "${PERGUNTAS_COMPLEXAS[0]}"; do
|
| 109 |
+
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"
|
| 110 |
+
|
| 111 |
+
T_START=$(date +%s%N)
|
| 112 |
+
RESULTADO=$("$LLAMA_CLI" \
|
| 113 |
+
-m "$MODEL" \
|
| 114 |
+
--threads 2 \
|
| 115 |
+
-c 1024 \
|
| 116 |
+
-n 64 \
|
| 117 |
+
--temp 0.2 \
|
| 118 |
+
-p "$PROMPT" \
|
| 119 |
+
--log-disable 2>/dev/null | \
|
| 120 |
+
python3 "$DECODER" --codebook "$CODEBOOK" --quiet 2>/dev/null)
|
| 121 |
+
T_END=$(date +%s%N)
|
| 122 |
+
|
| 123 |
+
ELAPSED=$(( (T_END - T_START) / 1000000 )) # ms
|
| 124 |
+
PALAVRAS=$(echo "$RESULTADO" | wc -w)
|
| 125 |
+
|
| 126 |
+
TOTAL_PALAVRAS=$((TOTAL_PALAVRAS + PALAVRAS))
|
| 127 |
+
TOTAL_TEMPO=$((TOTAL_TEMPO + ELAPSED))
|
| 128 |
+
done
|
| 129 |
+
|
| 130 |
+
# Calcular mΓ©dias
|
| 131 |
+
if [ $TOTAL_TEMPO -gt 0 ]; then
|
| 132 |
+
PALAVRAS_POR_S=$((TOTAL_PALAVRAS * 1000 / TOTAL_TEMPO))
|
| 133 |
+
else
|
| 134 |
+
PALAVRAS_POR_S=0
|
| 135 |
+
fi
|
| 136 |
+
|
| 137 |
+
# Determinar veredicto
|
| 138 |
+
if [ $PALAVRAS_POR_S -gt 40 ]; then
|
| 139 |
+
VEREDICTO="β
ViΓ‘vel"
|
| 140 |
+
elif [ $PALAVRAS_POR_S -gt 20 ]; then
|
| 141 |
+
VEREDICTO="β οΈ Parcial"
|
| 142 |
+
else
|
| 143 |
+
VEREDICTO="β Lento"
|
| 144 |
+
fi
|
| 145 |
+
|
| 146 |
+
printf "β %-5s β %-8s β %8d/s β --- β %-12sβ\n" \
|
| 147 |
+
"$taxa" "$modo" "$PALAVRAS_POR_S" "$VEREDICTO" | tee -a "$RESULTS_FILE"
|
| 148 |
+
done
|
| 149 |
+
done
|
| 150 |
+
|
| 151 |
+
echo "ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ" | tee -a "$RESULTS_FILE"
|
| 152 |
+
echo "" | tee -a "$RESULTS_FILE"
|
| 153 |
+
echo "π Resultados salvos em: $RESULTS_FILE" | tee -a "$RESULTS_FILE"
|
| 154 |
+
echo "π Benchmark concluΓdo!"
|