PRISMA Voltar ao produto
Registros dos testes · 19/09/2026

O PRISMA rodando em modelo aberto, sem nenhuma API de terceiros.

O mesmo produto, as mesmas 17 perguntas com gabarito e o mesmo corretor, em quatro modelos. Nos três testes com pesos abertos, o processo do PRISMA estava impedido pelo sistema operacional de falar com qualquer endereço que não fosse a própria máquina. Esta página mostra os registros: o bloqueio, os pesos conferidos, os contadores dos dois lados, a máquina, e cada pergunta com a resposta e a nota.

O que isto prova e o que não prova. Prova que o PRISMA responde sem fornecedor de modelo, com pesos públicos conferidos byte a byte, em máquina que nós ligamos e desligamos. Não prova que já foi instalado dentro de uma empresa: o 27B e o Flash-Next rodaram em GPU alugada num datacenter; só o teste do 4B rodou num computador pessoal. São registros nossos, não auditoria de terceiros. Endereços IP, nomes de servidor e e-mails foram retirados desta versão pública.

Resultado

Quatro modelos, o mesmo gabarito.

Modelo e onde rodouGabaritoMediana por casoTokens/sIdas ao modelo
DeepSeek por API
API da DeepSeek (referência)
17/174,3 s22848
Qwen3.8-27B-FP8
1× RTX PRO 6000 96 GB alugada (RunPod, Islândia), vLLM 0.29
16/178,6 s4663
Qwen3.8-Flash-Next-FP8
2× RTX PRO 6000 96 GB, contexto cortado a 32k
14/1730,0 s2377
Qwen3.5-4B (Q4)
GPU de um notebook: RTX 4050 Laptop 6 GB, Ollama 0.32
13/1710,5 s4453

A barra combinada antes do teste era 15 de 17, turno mediano abaixo de 30 s e nenhuma chamada de ferramenta malformada. O 27B passou. O caso que ele perdeu é de notação: fundo certo e valor certo, escrito "R$ 3.424 bi" com ponto onde o português usa vírgula. As três perdas do Flash-Next são respostas vazias por estouro do contexto de 32 mil tokens, limite imposto pela memória das placas, não pelo modelo. O 4B errou conta: somou subclasses por cima do total.

Prova 1

Nenhuma API de terceiros estava ao alcance.

O serviço do PRISMA rodou sob um filtro de rede do kernel: só o endereço de laço é permitido. De dentro do próprio processo, tentamos falar com a DeepSeek, a OpenAI e o Hugging Face.

De dentro do processo

# 2026-09-19T01:31:30Z de DENTRO do cgroup da unidade prisma-qwen (filtro IPAddressDeny=any ativo):
https://api.deepseek.com -> 000 (Connection timed out after 8002 milliseconds)
https://api.openai.com -> 000 (Connection timed out after 8002 milliseconds)
https://huggingface.co -> 000 (Connection timed out after 8002 milliseconds)
http://127.0.0.1:8001/v1/models (tunel, com token) -> 200
# o mesmo curl FORA do cgroup, para comparar:
https://api.deepseek.com -> 401

A unidade do serviço

[Unit]
Description=PRISMA — instancia de teste com modelo aberto (vLLM por tunel)
[Service]
EnvironmentFile=/home/ubuntu/prisma-qwen.env
ExecStart=/home/ubuntu/app/prisma-app/backend/.venv/bin/python -m app.main
IPAddressDeny=any
IPAddressAllow=localhost
[Install]
IPAddressAllow=127.0.0.0/8 ::1/128
IPAddressDeny=0.0.0.0/0 ::/0
EnvironmentFiles=/home/ubuntu/prisma-qwen.env (ignore_errors=no)

Variáveis de ambiente do processo (só os nomes)

# nomes das variaveis do ambiente do processo (so nomes)
HOME
INVOCATION_ID
JOURNAL_STREAM
LANG
LOGNAME
MEMORY_PRESSURE_WATCH
MEMORY_PRESSURE_WRITE
PATH
PRISMA_ACERVO
PRISMA_BANCO
PRISMA_BASE_MODELO
PRISMA_CHAVE_MODELO
PRISMA_COOKIE_SEGURO
PRISMA_CORPO_EXTRA
PRISMA_HOST
PRISMA_MCP_PYTHON
PRISMA_MODELO
PRISMA_PORTA
PRISMA_TRACO
QWEN_API_KEY
SHELL
SYSTEMD_EXEC_PID
USER

Nenhuma variável DEEPSEEK ou OPENAI. A porta 8001 é um túnel SSH aberto pelo servidor do PRISMA até a máquina do modelo, onde o vLLM escutava só em 127.0.0.1.

Prova 2

Os pesos são os públicos, byte a byte.

Os dois modelos foram baixados do Hugging Face no commit fixado, e cada arquivo teve o sha256 conferido contra o que o Hugging Face publica. Qualquer pessoa refaz essa conferência sem depender de nós.

# Qwen/Qwen3.8-27B-FP8 @ 017b9c7af6b5689d5dd426a76e0bc077eb5ca20a: 81 entradas no Hugging Face
# Qwen/Qwen3.8-27B-FP8: 30.89 GB em disco
# Qwen/Qwen3.8-Flash-Next-FP8 @ 236dfdf285828023ca3bcd3f37366c58a3469b13: 144 entradas no Hugging Face
# Qwen/Qwen3.8-Flash-Next-FP8: 185.56 GB em disco
# arquivos com problema: 0

ok-sha256 layers-0.safetensors  07f700e293baeaf3cd4240c3df1a948c4403f16961ea7979e86c8d6a9f8fd466
ok-sha256 layers-1.safetensors  35840b5d452c6e438d000e5c1d8d1bc793d257394404689b8f9424749eee8edc
ok-sha256 layers-10.safetensors  ab5fbc076ccd6514aba3ab67a0ac1d6701ad395d40cccc0086cf0284ef5d68c9
ok-sha256 layers-11.safetensors  076b4ba44e9311c8fb8fdc0045f8ce9fd0c75584ade4e95510056b7db4b7ec61
ok-sha256 layers-12.safetensors  86d8ec0b8fc8e3ffbdfd667b97050533ddf5a4d273b4fe1190a4335542c52829
ok-sha256 layers-13.safetensors  71dd986134f4338a7b8290ed24993ad34a0f77b76a4cc060fe6403e36dcdda5b
...
Prova 3

Os números dos dois lados batem.

O PRISMA registra cada ida ao modelo. O vLLM, do outro lado do túnel, tem os próprios contadores. No teste do 27B:

517.501 + 15.633tokens de entrada e saída no registro do PRISMA, em 63 pedidos
+
1708 + 32teste de leitura de imagem, feito direto no vLLM, 1 pedido
=
519.209 + 15.665contadores do próprio vLLM, 64 pedidos concluídos, 0 erro
A máquina

O que rodou, e onde.

A placa (GPU alugada, teste do 27B)

Sat Sep 19 01:21:02 2026       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 595.91.07              Driver Version: 595.91.07      CUDA Version: 13.2     |
+-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA RTX PRO 6000 Blac...    On  |   00000000:77:00.0 Off |                    0 |
| N/A   30C    P8             35W /  600W |       0MiB /  97887MiB |      0%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+

Durante o teste: 267 amostras · uso até 100% · memória até 90.383 MiB. No Flash-Next: 932 amostras · memória até 94.587 MiB por placa.

A linha do servidor do modelo

vllm serve /workspace/prisma/modelos/Qwen3.8-27B-FP8 --host 127.0.0.1 --port 8000 --served-model-name qwen3.8-27b --tensor-parallel-size 1 --max-model-len 65536 --gpu-memory-utilization 0.92 --enable-auto-tool-choice --tool-call-parser qwen3_xml --reasoning-parser qwen3 --enable-log-requests --enable-log-outputs

Versões

vllm 0.29.0 | torch 2.13.0+cu130 | cuda 13.0
VLLM_USE_FLASHINFER_SAMPLER=0 TORCH_CUDA_ARCH_LIST=12.0 VLLM_CACHE_ROOT=/workspace/prisma/cache/vllm

Os pods alugados

PodGPUDatacenterPreço
30nges3iz2cj081× RTX PRO 6000 Blackwell Server EditionEUR-IS-1US$ 2,09/h
i425oxd4f0v7ry1× RTX PRO 6000 Blackwell Server EditionEUR-IS-1US$ 2,09/h
0jhhbqd2nb76oz2× RTX PRO 6000 Blackwell Server EditionEUR-IS-1US$ 4,18/h

A primeira subida do 27B morreu no aquecimento (o FlashInfer não reconheceu a placa dentro daquela imagem) e foi refeita. Fica registrada.

Na GPU de um notebook

O mesmo PRISMA, com o modelo numa placa de 6 GB.

O Qwen3.5-4B quantizado rodou inteiro na placa de vídeo de um computador pessoal, servido pelo Ollama só em 127.0.0.1. O PRISMA, na nuvem, chegou até ele por um túnel SSH aberto pelo próprio computador. Funcionou e chamou as 14 ferramentas sem errar o formato, mas o modelo é pequeno demais: fez 13 de 17 e errou conta em dois patrimônios.

Sat Sep 19 13:56:01 2026       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 591.94                 Driver Version: 591.94         CUDA Version: 13.1     |
+-----------------------------------------+------------------------+----------------------+
| GPU  Name                  Driver-Model | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4050 ...  WDDM  |   00000000:01:00.0  On |                  N/A |
| N/A   53C    P8              2W /   45W |    5781MiB /   6141MiB |     11%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

Durante o teste: 98 amostras · uso até 100% · memória até 5.837 MiB de 6.141.

O bloqueio de rede, de novo

# 2026-09-19T11:56:33Z de DENTRO do cgroup da unidade prisma-qwen (IPAddressDeny=any ativo):
https://api.deepseek.com -> 000 (Connection timed out after 6002 milliseconds)
https://api.openai.com -> 000 (Connection timed out after 6002 milliseconds)
http://127.0.0.1:8001/v1/models (tunel reverso ate o PC do David) -> 200
# quem escuta na 8001 da AWS:
LISTEN 0 128 127.0.0.1:8001 0.0.0.0:* users:(("sshd",pid=1185,fd=7))
Perguntas e respostas

Cada pergunta, a resposta inteira e a nota.

Escolha o modelo. As respostas são as que o PRISMA devolveu no teste, sem edição. A nota é do corretor automático, o mesmo para todos.

Registros crus

Para baixar e conferir.

ArquivoO que éTamanho
RELATORIO.mdRelatório do teste na GPU alugada (27B e Flash-Next)10 KB
RELATORIO-LOCAL.mdRelatório do teste na GPU do notebook (4B)5 KB
27b-bloqueio-de-rede.txtDe dentro do processo: DeepSeek, OpenAI e Hugging Face inalcançáveis; só o túnel responde0 KB
27b-unidade-systemd.txtA unidade do serviço, com IPAddressDeny=any e IPAddressAllow=localhost2 KB
27b-variaveis-de-ambiente.txtNomes das variáveis do processo: nenhuma chave DeepSeek ou OpenAI0 KB
27b-traco-por-pedido.jsonlUma linha por ida ao modelo: destino, tokens, tempo, ferramentas14 KB
27b-comando-vllm.txtA linha exata do vllm serve0 KB
27b-versoes.txtvLLM, torch e CUDA0 KB
27b-nvidia-smi.txtA placa, antes de carregar o modelo2 KB
27b-gpu-durante.csvUso e memória da GPU a cada 5 s durante o teste29 KB
27b-contadores-vllm.promContadores do próprio vLLM no fim da sessão55 KB
27b-arranque-do-pod.logArranque do pod: placa, sshd, modelo, comando3 KB
27b-nota-do-corretor.txtSaída do corretor, caso a caso2 KB
pesos-sha256.txtsha256 de cada arquivo de peso, conferido contra o Hugging Face (225 arquivos)22 KB
flash-comando-vllm.txtFlash-Next: a linha do vllm serve, com as concessões de memória0 KB
flash-contadores-vllm.promFlash-Next: contadores do vLLM58 KB
flash-nota-do-corretor.txtFlash-Next: saída do corretor2 KB
deepseek-nota-do-corretor.txtDeepSeek: saída do corretor2 KB
notebook-bloqueio-de-rede.txtNotebook: o mesmo bloqueio; a porta do modelo é o túnel até o PC0 KB
notebook-traco-por-pedido.jsonlNotebook: uma linha por ida ao modelo12 KB
notebook-nvidia-smi.txtNotebook: a placa (RTX 4050 Laptop)2 KB
notebook-gpu-durante.csvNotebook: uso e memória da GPU a cada 5 s9 KB
notebook-modelfile.txtNotebook: o modelo servido e o contexto12 KB
notebook-nota-do-corretor.txtNotebook: saída do corretor5 KB
27b-servidor-vllm-recorte.logRecorte do log do vLLM: arranque e as 64 linhas de pedido (o log inteiro tem 15.001 linhas e traz o prompt de sistema. por isso não é publicado)19 KB
Relatórios completos

O texto inteiro, como foi escrito no dia.

Relatório do teste na GPU alugada (27B e Flash-Next)

PRISMA com modelo aberto hospedado por nós — relatório do teste de 19/09/2026

Todas as horas são UTC. Cada afirmação abaixo aponta para o arquivo desta pasta que a sustenta. SHA256SUMS fecha o conjunto.

1. O que foi feito

O PRISMA (o mesmo backend, o mesmo MCP do acervo, o mesmo front React que está em prisma.davidariasfinance.com) respondeu às perguntas de teste usando, no lugar da API da DeepSeek, o Qwen3.8-27B-FP8: pesos abertos (Apache 2.0) baixados do Hugging Face, servidos por vLLM 0.29.0 numa GPU RTX PRO 6000 Blackwell 96 GB alugada na RunPod (Secure Cloud, datacenter EUR-IS-1, Islândia). O PRISMA ficou na AWS (Estocolmo) e falou com o modelo por um túnel SSH aberto pela AWS; o vLLM escutava só em 127.0.0.1 dentro do pod, sem porta pública.

No mesmo dia, com as mesmas perguntas, o mesmo código rodou contra a DeepSeek (braço de referência). A produção (porta 8787) não foi tocada.

2. O que isto prova, e o que não prova

Prova:

  1. Nenhuma API de modelo de terceiros foi usada no braço Qwen. O processo do backend e o subprocesso do acervo rodaram sob IPAddressDeny=any + IPAddressAllow=localhost (filtro de rede do kernel, por cgroup). De dentro desse cgroup, api.deepseek.com, api.openai.com e huggingface.co não conectam; 127.0.0.1:8001 (o túnel) responde 200 com o token e 401 sem ele. → aws/resultados/qwen27b-bloqueio.txt, qwen27b-unidade.txt. O ambiente do processo não tem nenhuma variável DEEPSEEK* nem OPENAI*. → qwen27b-ambiente-nomes.txt (só nomes, nunca valores). As 63 idas ao modelo foram todas para http://127.0.0.1:8001/v1/. → qwen27b-traco.jsonl. A única conexão de saída do servidor durante o braço foi o SSH para o pod ([ip]:10666); as outras linhas são o meu próprio SSH de controle, de entrada. → qwen27b-conexoes.txt.
  2. Os pesos são os públicos, byte a byte. Commit 017b9c7af6b5689d5dd426a76e0bc077eb5ca20a de Qwen/Qwen3.8-27B-FP8; os 81 arquivos conferidos contra o Hugging Face (sha256 dos safetensors, tamanho dos pequenos), 0 divergência. O mesmo para os 144 arquivos do Qwen3.8-Flash-Next-FP8. → 2026-09-19/fase1/sha256.txt. Qualquer pessoa refaz essa conferência sem depender de nós.
  3. Os números dos dois lados batem. O traço do PRISMA soma 517.501 tokens de entrada e 15.633 de saída em 63 pedidos; o teste de imagem, feito direto no vLLM, somou 1.708 + 32 em 1 pedido. Os contadores do próprio vLLM no fim da sessão: 519.209 de entrada, 15.665 de saída, 64 pedidos concluídos, 0 erro. É a mesma conta, até o último token. → pod-fase2-27b/fase2-27b/metrics-fim.prom, qwen27b-traco.jsonl, qwen27b-imagem.json.
  4. A máquina. nvidia-smi antes, depois e a cada 5 s durante (267 amostras, uso até 100%, memória até 90.383 MiB de 97.887), a linha exata do vllm serve, o log inteiro do servidor com cada pedido e cada resposta (14.842 linhas), versões de tudo. → pod-fase2-27b/fase2-27b/. Criação e término de cada pod, com id, GPU, datacenter e US$/h, nas respostas cruas da API da RunPod. → 2026-09-18/runpod/, 2026-09-19/runpod/.

Não prova, e ninguém deve ler isto aqui: que rodou dentro da empresa de um cliente. A GPU é de um datacenter da RunPod. O nome correto é auto-hospedado com pesos abertos: nada na receita depende da RunPod nem da AWS, então ela roda igual num servidor do cliente ou na conta de nuvem dele. Também é registro nosso, não auditoria de terceiros; o que terceiros atestam é a fatura da RunPod (exportável do painel) e os hashes do Hugging Face.

3. Resultado

DeepSeek (API, deepseek-chat) Qwen3.8-27B-FP8 (nosso, 1× RTX PRO 6000)
Fumaça (CNPJ do Cloudwalk Bela) certo, 3,2 s certo, 3,5 s
Gabarito de 17 casos (mesmo corretor) 17/17 16/17
— numéricos (PL, subordinação) 10/10 10/10
— extremos (mês de pico) 4/4 4/4
— armadilhas 2/2 2/2
— atribuição (fundo irmão) 1/1 0/1 (ver nota)
Tempo mediano por caso 4,3 s 8,6 s
Bateria de 5 turnos, total 17,8 s 87,7 s
Tempo até o 1º token (mediana por ida) 0,80 s 0,49 s
Velocidade de geração (mediana) ~217 tokens/s ~45 tokens/s
Idas ao modelo (fumaça + bateria + gabarito + front) 48 63
Chamadas de ferramenta malformadas 0 0
Leitura de imagem (página de regulamento → 2 taxas) não testado certo, 1,9 s
Busca no acervo só lexical só lexical

A barra combinada antes do teste era ≥ 15/17, turno mediano < 30 s e zero chamada malformada. O 27B passou.

Nota sobre o caso perdido. A pergunta era o PL do SOLIS CAPITAL CORE, e a armadilha é citar o número do fundo irmão. O Qwen pegou o fundo certo e o valor certo, mas escreveu "R$ 3.424 bi", com ponto onde o português usa vírgula ("3,424 bi"). O corretor lê isso como outro número e reprova, com razão: é erro de notação, não de dado nem de atribuição. Mantive a nota estrita. É o tipo de coisa que uma linha no prompt de sistema resolve, e vale medir de novo depois. → aws/resultados/qwen27b-nota.txt, qwen27b-gabarito.json.

Sobre a velocidade. O Qwen responde mais rápido no primeiro token e gera ~5× mais devagar: um modelo denso de 27B numa placa só é limitado pela banda de memória. Na bateria a diferença cresce porque ele escreve respostas mais longas e chama ferramenta em turnos em que a DeepSeek respondeu de memória da conversa (fidc_buscar, fidc_comparar, fidc_indicadores). Não foi usada decodificação especulativa (o repositório traz os pesos MTP para isso), que é o primeiro ajuste a tentar.

Front. O React de produção, em Chromium headless, 5 turnos: login em 76 ms, 1º texto entre 1,5 e 6,5 s, turnos de 14,7 a 40,9 s. Os 2 erros de console são o 401 da checagem de sessão antes do login, que a produção também mostra. → 2026-09-19/fase2-27b/front/ (capturas por turno + app-resultado.json).

3b. Segundo modelo: Qwen3.8-Flash-Next-FP8 (rodou, mas em condição apertada)

MoE de 125B com ~6B ativos, 185,6 GB de pesos (licença Qwen Community 1.0, não Apache). Rodou em 2× RTX PRO 6000 96 GB (US$ 4,18/h), --tensor-parallel-size 2, pela mesma instância travada e pelo mesmo túnel. Carregou 86,5 GiB por placa em 14 min 22 s e sobrou 2,96 GiB para cache. Para caber, três concessões que mudam o resultado e por isso ficam à vista: contexto limitado a 32.768 tokens, sem CUDA graphs (--enforce-eager) e no máximo 4 sequências. → aws/resultados/pod-fase3-flash/fase3-flash/ (comando.txt, servidor.log, nvidia-smi-durante.csv com 932 amostras, pico de 94.587 MiB por placa).

Qwen3.8-Flash-Next-FP8 (2× RTX PRO 6000, modo apertado)
Fumaça certo, 8,6 s
Gabarito de 17 casos 14/17: as 3 perdas são respostas vazias por estouro de contexto; os 14 casos respondidos estão todos certos
Tempo mediano por caso 30 s
Bateria de 5 turnos 267 s, com o 1º turno vazio pelo mesmo estouro
Velocidade de geração ~22 tokens/s (sem CUDA graphs; não é o que o modelo entrega)
Chamadas de ferramenta por caso (mediana) 2, com casos de 9 e 11 (DeepSeek e 27B: 1)
Leitura de imagem certo, 3,5 s
Bloqueio de rede, túnel, contadores iguais ao 27B: traço 875.152 + 16.223 tokens em 77 pedidos, mais a imagem (1.708 + 32), contra 876.860 / 16.255 / 78 do vLLM

Leitura honesta: este braço prova que o Flash-Next roda no PRISMA por esta arquitetura e acerta o que consegue responder. Não mede o modelo de forma justa. Ele abre e lê mais documentos por pergunta que os outros dois, e com o teto de 32k (imposto pela memória, não pelo modelo, que aceita 262k) cinco pedidos passaram do limite e o vLLM recusou (400 maximum context length). A velocidade também é a do modo de economia de memória. Para julgar o Flash-Next é preciso 2×H200 ou 4× RTX PRO 6000 (US$ 8–9/h, em outro datacenter). → flash-nota.txt, flash-gabarito.json, flash-journal-prisma.txt, flash-bloqueio.txt.

Conclusão dos dois: para "roda no seu ambiente", o 27B é o candidato: cabe numa placa só, passou na barra (16/17, zero chamada malformada, lê imagem) e o custo de hospedar é o de uma GPU de 48–96 GB. O que falta nele é velocidade (decodificação especulativa, ou duas placas) e uma linha de prompt sobre notação numérica em português.

4. O que quebrou no caminho (fica registrado)

  • O volume de 220 GB estourou a cota: o Flash-Next tem 185,6 GB, não os ~157 GB que eu tinha. Volume aumentado para 260 GB, download retomado. → 2026-09-18/fase1-tentativa1/.
  • Primeira subida do 27B morreu no aquecimento: o FlashInfer não reconheceu a Blackwell dentro da imagem runpod/pytorch ("requires sm75 or higher"), com o modelo já carregado. Resolvido com o amostrador nativo do vLLM e TORCH_CUDA_ARCH_LIST=12.0. Custou US$ 0,31. → 2026-09-19/fase2-27b-tentativa1/.
  • A primeira rodada do braço DeepSeek foi descartada por dois erros meus (o campo da resposta inteira não estava sendo gravado; a primeira pergunta do gabarito bateu no limite de 6/min). Refeita inteira. → aws/resultados/descartado-0100/.
  • O pod do 27B marcou FECHADO mas não se apagou sozinho; terminei pela API. No Flash-Next terminei pela API logo após copiar os logs.
  • No braço Flash-Next o teste de imagem rodou às 02:22, enquanto o gabarito ainda corria (um laço de espera meu venceu antes da hora); pode ter somado alguns segundos a um caso.

5. Custos (RunPod)

Saldo no começo US$ 6,39. Fase 1 (download, 3 pods de US$ 0,24/h): ~US$ 0,25. 27B: tentativa morta US$ 0,31 + sessão boa de ~24 min a US$ 2,09/h ≈ US$ 0,85. Flash-Next: sessão de ~40 min a US$ 4,18/h ≈ US$ 2,75 (14 min só carregando os pesos do volume de rede). Saldo no fim US$ 2,29; gasto total do teste ≈ US$ 4,10. Volume de 260 GB: US$ 0,61/dia enquanto existir.

Relatório do teste na GPU do notebook (4B)

PRISMA com o modelo rodando na GPU do notebook do David — 19/09/2026

Continuação de ../evidencias/RELATORIO.md (mesmo dia, mesmas perguntas, mesmo corretor). Aqui o modelo não está num datacenter: está na placa de vídeo do computador do David. Horas do servidor em UTC; as do PC em hora local (UTC+2).

1. O que rodou, e onde

peça onde prova
Modelo Qwen3.5-4B (4,7B parâmetros, Q4_K_M, 3,39 GB, Apache 2.0, visão + ferramentas) NVIDIA GeForce RTX 4050 Laptop, 6 GB, no PC do David nvidia-smi-antes.txt, nvidia-smi-durante.csv (98 amostras, uso até 100%, até 5.837 MiB), ollama-ps.json (3,6 GB de 3,6 GB na GPU, contexto 24.576), ollama-servidor.log (offloaded 34/34 layers to GPU, flash_attn = enabled)
Servidor do modelo: Ollama 0.32.1, escutando só em 127.0.0.1:11434 PC do David ollama-servidor.log, ollama-modelos.json (digest 2a654d98e6fb… do qwen3.5:4b), ollama-modelfile.txt, ollama-pull.log
PRISMA (backend, MCP do acervo, login, cota) AWS, Estocolmo, instância de teste na 8788 aws/resultados/local4b-unidade.txt
Ligação túnel SSH reverso aberto pelo PC: a porta 127.0.0.1:8001 da AWS é o sshd, que entrega no Ollama do PC. Nada do PC fica exposto à internet local4b-bloqueio.txt (LISTEN 127.0.0.1:8001 … sshd), tunel-reverso.log

Por que 4B e não 8B: a placa tem 6 GB e o PRISMA manda de 4 a 16 mil tokens por pedido (só o prompt de sistema com as 14 ferramentas são 4,3 mil). Um 8B/9B quantizado ocupa 5 a 6,6 GB e não deixa espaço para esse contexto; derramaria para a CPU. O 4B com contexto de 24.576, atenção flash e cache em 8 bits ficou 100% na GPU. (Na primeira tentativa, sem esses dois ajustes, ficou 18% na CPU.) O Qwen3.8 não tem tamanho pequeno; o Qwen3.5 é a geração anterior da mesma família.

2. Prova de que nenhuma API de terceiros foi usada

Igual aos outros braços: a unidade prisma-qwen roda sob IPAddressDeny=any + IPAddressAllow=localhost. De dentro do cgroup dela, api.deepseek.com e api.openai.com não conectam; 127.0.0.1:8001 responde 200. O ambiente do processo não tem variável DEEPSEEK* nem OPENAI*. As 53 idas ao modelo foram todas para http://127.0.0.1:8001/v1/. → local4b-bloqueio.txt, local4b-ambiente-nomes.txt, local4b-traco.jsonl.

Conta cruzada: o log do Ollama no PC registra 56 pedidos de /v1/chat/completions; são as 53 idas do traço do PRISMA, 1 do teste de imagem e 2 de aquecimento que eu fiz localmente antes de abrir o túnel.

3. Resultado

DeepSeek (API) Qwen3.8-27B (RunPod, 1 GPU 96 GB) Qwen3.5-4B (GPU do notebook)
Fumaça (CNPJ do Cloudwalk Bela) certo certo errou: chamou a ferramenta certa e desistiu ("não foi possível identificar")
Gabarito de 17 casos 17/17 16/17 13/17
— numéricos 10/10 10/10 7/10
— extremos 4/4 4/4 4/4
— armadilhas 2/2 2/2 1/2
— atribuição 1/1 0/1 (notação) 1/1
Tempo mediano por caso 4,3 s 8,6 s 10,5 s
Bateria de 5 turnos 17,8 s 87,7 s 52,1 s
1º token (mediana por ida) 0,80 s 0,49 s 2,35 s
Geração ~217 tok/s ~45 tok/s ~43 tok/s
Chamadas de ferramenta malformadas 0 0 0
Leitura de imagem (página de regulamento) — certo, 1,9 s certo, 15,7 s

O que os erros são. Não é encanamento, é o modelo:

  • num-pl-4: a ficha traz o PL total e o PL por subclasse. O 4B somou a sênior e a subordinada por cima do total e afirmou R$ 13,27 bi onde o certo é R$ 8,46 bi, com linha de fonte e tudo. num-pl-20: o mesmo erro (R$ 6,15 bi onde é R$ 3,47 bi).
  • num-pl-0 e a fumaça: a ferramenta devolveu "termo ambíguo" com candidatos, e ele ficou tentando variações do nome até desistir, em vez de escolher o candidato.
  • arm-inad-zero: a conclusão está certa ("não é risco zero"), mas ele inventou números de apoio.

Número errado dito com confiança é o pior erro possível neste domínio. O 4B não serve para o PRISMA como está. O que ele prova é outra coisa: a arquitetura aceita um modelo em qualquer lugar, inclusive na mesa de quem usa, e até um 4B quantizado chama as 14 ferramentas sem errar o formato e lê imagem. A qualidade da resposta é função do tamanho do modelo, e o 27B é onde ela chega perto da DeepSeek.

4. O que mexi no PC

  • Parei o deskapp serve (porta 8765, trading_agents/desk), a pedido.
  • Baixei qwen3.5:4b (3,4 GB) e criei prisma-local-4b (o mesmo modelo com num_ctx 24576). Ficam em ~/.ollama; ollama rm apaga.
  • Reiniciei o Ollama com OLLAMA_FLASH_ATTENTION=1, OLLAMA_KV_CACHE_TYPE=q8_0, preso a 127.0.0.1; no fim devolvi o Ollama normal.