| #!/bin/bash |
| |
| |
| |
| |
| |
| |
|
|
| 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_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 "" |
|
|
| |
| 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}..." |
| |
| |
| 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 )) |
| PALAVRAS=$(echo "$RESULTADO" | wc -w) |
| |
| TOTAL_PALAVRAS=$((TOTAL_PALAVRAS + PALAVRAS)) |
| TOTAL_TEMPO=$((TOTAL_TEMPO + ELAPSED)) |
| done |
| |
| |
| if [ $TOTAL_TEMPO -gt 0 ]; then |
| PALAVRAS_POR_S=$((TOTAL_PALAVRAS * 1000 / TOTAL_TEMPO)) |
| else |
| PALAVRAS_POR_S=0 |
| fi |
| |
| |
| 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!" |
|
|