Araras-HPO-Brasil-INT8 (ONNX)

Versão quantizada (int8 dinâmica via ONNX Runtime) do encoder Raras-AI/araras-hpo-brasil. Pensada para ambientes com restrição de memória, CPU sem GPU, deploy serverless (Cloud Run, Lambda) e dispositivos edge — incluindo cenários SUS rurais.

O que muda

fp32 (original) int8 (este modelo)
Tamanho em disco ~440 MB ~110 MB (4× menor)
Latência (Cloud Run x86 AVX512) baseline ~2× mais rápido
Latência (CPU genérica) baseline ~1,2× mais rápida
Acurácia HPO BR-PT formal (n=500) — R@1 61,0% 59,2% (−1,8pp)
Acurácia HPO BR-PT formal — R@5 61,6% 60,8% (−0,8pp)
Acurácia HPO BR-PT formal — R@10 61,8% 61,6% (−0,2pp)

A queda de R@1 é pequena e R@10 é praticamente idêntico — tradeoff razoável para 4× menos espaço.

Arquivos

  • onnx/model.onnx — versão fp32 (435,8 MB), também incluída para comparação
  • onnx/model_quantized.onnx — versão int8 dinâmica otimizada para AVX512-VNNI (110 MB)
  • Configs do sentence-transformers (modules.json, 1_Pooling/, etc.)

Como usar

Via sentence-transformers (recomendado)

from sentence_transformers import SentenceTransformer

model = SentenceTransformer(
    "Raras-AI/araras-hpo-brasil-int8",
    backend="onnx",
    model_kwargs={"file_name": "model_quantized.onnx"},
)

embeddings = model.encode([
    "água na cabeça",     # Hydrocephalus
    "corcunda",           # Kyphosis
    "fígado inchado",     # Hepatomegaly
])
# shape: (3, 768)

Via ONNX Runtime puro (sem PyTorch)

import onnxruntime as ort
from transformers import AutoTokenizer

tok = AutoTokenizer.from_pretrained("Raras-AI/araras-hpo-brasil-int8")
sess = ort.InferenceSession(
    "onnx/model_quantized.onnx",
    providers=["CPUExecutionProvider"],
)

inputs = tok(["água na cabeça"], return_tensors="np", padding=True, truncation=True, max_length=128)
outputs = sess.run(None, {k: v for k, v in inputs.items() if k in {i.name for i in sess.get_inputs()}})
# Aplicar mean pooling sobre last_hidden_state com a attention mask

Padrão de uso recomendado em produção

Modo híbrido: pré-computar offline as embeddings dos ~17 mil termos HPO usando o modelo fp32 (qualidade máxima do corpus), e usar este modelo int8 apenas no tempo de inferência (encoding das queries do usuário). O gargalo de tempo está sempre no lado da query, e a perda de acurácia fica concentrada em ~1pp R@1.

Quando usar cada versão

Cenário Recomendação
Servidor com GPU disponível fp32 (Raras-AI/araras-hpo-brasil)
Cloud Run / Lambda / serverless int8 (cold start mais rápido)
Aplicação mobile / edge int8
Benchmark de paper / reprodutibilidade fp32
Pipeline de produção que exige <1pp de variação fp32

Método de quantização

Quantização int8 dinâmica via Optimum + ONNX Runtime, com configuração avx512_vnni (per-tensor). Apenas as camadas lineares (MatMul) são quantizadas; embeddings e LayerNorm permanecem em fp32 para preservar precisão.

Limitações

  • A quantização é estática no peso, dinâmica na ativação: não requer dataset de calibração, mas não atinge ganhos máximos de aceleração de quantização estática.
  • O speedup é arquitetura-dependente: CPUs com AVX512-VNNI (Intel Cascade Lake+, AMD Zen 4+) ganham mais. Apple Silicon e ARM64 ganham menos (use arm64 config se quantizar localmente para esse target).
  • A perda de R@1 (~1,8pp) é pequena mas mensurável; para retrieval crítico, prefira o modelo fp32.

Citação

Mesma do modelo base — ver Raras-AI/araras-hpo-brasil.

Downloads last month
42
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Raras-AI/araras-hpo-brasil-int8

Quantized
(1)
this model

Space using Raras-AI/araras-hpo-brasil-int8 1