File size: 6,874 Bytes
9fa5ab2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#!/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!"