Apresentando Julia 1

Nosso modelo de decisão que roda em quase tudo.

Arte geométrica monocromática do Julia 1

Julia 1 abre nossa pesquisa em modelos compactos de decisão. Ele parte do mmBERT-small, um encoder multilíngue, e escolhe entre respostas oferecidas a uma pergunta. São 144,3 milhões de parâmetros, com execução em CPU.

Nossa pergunta: um único modelo consegue classificar, ordenar níveis e responder sim ou não quando as opções mudam? Julia 1 é o primeiro resultado dessa investigação. Aqui estão os acertos, as falhas e os métodos usados para medi-los. Em breve, esta página terá mais exemplos, testes e informações úteis sobre a Julia 1.

A pergunta por trás de Julia

Uma interface, várias formas de decidir.

O modelo recebe um contexto, uma pergunta e de 2 a 20 respostas possíveis. Ele escolhe uma delas e devolve pontuações na ordem das opções recebidas. Esse formato nos permite estudar tarefas diferentes com o mesmo modelo e uma medida direta: quantas escolhas ele acertou?

Pense na mensagem “Fui cobrado duas vezes pelo mesmo pedido”. Entre Cobrança, Entrega e Acesso à conta, Julia escolhe o destino. A pergunta seguinte pode ser “Qual é a prioridade?”, com baixa, média e alta como opções. O exemplo mostra a interface; os resultados abaixo mostram como ela se saiu em testes definidos.

Os primeiros resultados

Acertos em quatro tarefas, com uma falha importante.

Na avaliação de 24 de setembro de 2026, Julia 1 ficou acima das referências Jev fornecidas em três das quatro tarefas abaixo. Acertou 1.463 de 2.000 decisões tipadas (73,15%), uma diferença de 0,45 ponto percentual sobre a referência. Nos pilotos de 100 exemplos, classificou corretamente 94 notícias e 86 emoções. Em emoções, a diferença foi de 38 pontos percentuais sobre a referência.

O piloto bancário foi mais difícil. Com 72 categorias e uma etapa que reduz a lista antes da decisão final, Julia acertou 64 de 100 exemplos; a referência Jev é 87%. Listas extensas e categorias parecidas são uma frente concreta para melhorar.

Julia 1 em quatro tarefasAcurácia em 2.000 decisões tipadas e três pilotos de 100 exemplos. A série Jev reproduz os valores de referência do protocolo.
100%75%50%25%0%Decisões tipadas · Julia 1: 73,2%Decisões tipadas · Referência Jev: 72,7%Decisões tipadasAG News · Julia 1: 94%AG News · Referência Jev: 91%AG NewsDAIR Emotion · Julia 1: 86%DAIR Emotion · Referência Jev: 48%DAIR EmotionBanking77 · Julia 1: 64%Banking77 · Referência Jev: 87%Banking77
  • Julia 1
  • Referência Jev

Avaliação do Julia 1, 24 de setembro de 2026; referências Jev do protocolo de comparação

4 linhas
Decisões tipadas1.463 / 2.00073,15%72,70%
AG News, 4 classes94 / 10094%91%
DAIR Emotion, 6 classes86 / 10086%48%
Banking77, lista reduzida de 72 classes64 / 10064%87%

O mesmo modelo em 52 localidades.

Também avaliamos Julia no MASSIVE, escolhendo um entre 18 cenários para cada exemplo. Foram 110.573 acertos em 154.648 casos (71,50%) distribuídos por 52 localidades. O teste inclui português de Portugal e inglês dos Estados Unidos.

3 linhas
Todas as 52 localidades110.573 / 154.64871,50%
Português (pt-PT)2.565 / 2.97486,25%
Inglês (en-US)2.580 / 2.97486,75%

O teste mede a escolha de um entre 18 cenários. Português brasileiro, classificação de intenção e preenchimento de campos ficam para avaliações futuras.

Uma nova medição em CPU.

Em uma execução em CPU registrada em 25 de setembro de 2026, Julia 1 acertou 1.451 de 2.000 decisões tipadas (72,55%). Nos pilotos de 100 exemplos, foram 94 acertos em AG News e 86 em DAIR Emotion. No piloto bancário de 72 categorias, foram 60 acertos e três abstenções. As abstenções entram no total de 100 casos.

4 linhas
Decisões tipadas1.451 / 2.00072,55%100%
AG News, 4 classes94 / 10094%100%
DAIR Emotion, 6 classes86 / 10086%100%
Banking77, lista reduzida de 72 classes60 / 10060%97%

Esta execução usou PyTorch 2.14.0+cpu, codificação estrita e limite de 1.024 tokens. O registro identifica os pesos pelo SHA-256 iniciado em df853bf7fe42 e traz as contagens completas e a identificação dos dados. O pacote registra o dispositivo como CPU.

Julia 1 em diferentes dispositivos.

Há medições em um Mac com Apple M4, em um computador com Intel Core i5-1235U e no tablet Samsung SM-X510. As entradas e os caminhos de execução estão descritos logo abaixo da tabela.

7 linhas
Apple M4, uma por chamada12833,15 ms44,23 ms28,01
Apple M4, lotes de 16128312,11 ms por lote313,44 ms por lote51,20
Samsung SM-X510, ONNX Runtime40203 ms205 ms5,0
Intel Core i5-1235U, decisões tipadas2.000294,81 ms428,49 ms—
Intel Core i5-1235U, AG News100107,83 ms142,89 ms—
Intel Core i5-1235U, DAIR Emotion10089,83 ms118,95 ms—
Intel Core i5-1235U, Banking771003.713,54 ms5.125,10 ms—

No Mac, cada pedido tinha 100 palavras de contexto e quatro opções. Usamos o checkpoint df853bf7fe42, o runtime Python local, o tokenizer público do mmBERT-small e quatro threads de CPU. No teste de 16, cada tempo representa um lote completo; o processo ocupava 370,6 MiB de RAM ao fim dessa rodada.

No Samsung SM-X510, a execução informada processou 40 decisões em 8 segundos (5 por segundo, ou 300 por minuto), com 3.693 tokens ao todo, cerca de 92 por decisão e uma taxa efetiva de 462 tokens/s. A latência variou de 193 a 205 ms por decisão. O tablet usou Android 16, Python 3.13.13, ONNX Runtime 1.27.0 e tokenização nativa em Rust. O ONNX Runtime listou NNAPI e CPU; o driver recorreu à CPU por operador nessa execução. O pico de memória residente do processo foi 393,1 MB. O arquivo de pesos de 550,1 MB foi mapeado em memória. XNNPACK compila incorretamente um Reshape nesse grafo e ficou fora da execução.

No i5, os tempos vêm dos 2.300 registros de predictions.jsonl no pacote da avaliação de 25 de setembro. Essa execução usou PyTorch 2.14.0+cpu, codificação estrita e o runtime identificado no pacote. O teste Banking77 inclui a redução de 72 categorias antes da escolha. O pacote registra o dispositivo como CPU; a identificação do processador foi informada junto à avaliação. As cargas variam entre os dispositivos; veja os dados e condições de cada medição.

O que construímos

Do encoder multilíngue a um modelo de decisão.

O mmBERT-small fornece a base de linguagem e o tokenizer. Julia 1 adapta essa base para pontuar alternativas apresentadas junto do contexto e da pergunta. O checkpoint, com 144,3 milhões de parâmetros, produz uma escolha para tarefas de classificação, roteamento, escalas ordenadas e respostas de sim ou não. Os pesos ocupam 550,5 MiB.

50%79%100%10%6%?
Ilustração de comparação de formas. Os percentuais variam com a forma, os cantos e a cor.

O runtime Python 3.11+ executa o modelo em CPU. A configuração avaliada aceita até 1.024 tokens para contexto, pergunta e opções. Listas maiores podem passar por um Router que reduz candidatos em grupos; o teste Banking77 mostra que essa redução pode perder a resposta correta. Para planejar uma integração, meça latência e memória com as entradas e o equipamento que pretende usar.

Por que usamos mmBERT-small

Nosso time inicial trabalha com orçamento e capacidade computacional limitados. Treinar um modelo multilíngue desde o início exigiria muito mais dados, infraestrutura, tempo e dinheiro do que tínhamos para esta primeira versão. O mmBERT-small já oferecia um encoder e um tokenizer multilíngues. Partimos desses pesos, desenvolvemos os componentes de decisão e treinamos Julia 1 para escolher entre respostas fornecidas com a pergunta. Julia 1 não é um fine-tuning de Qwen.

Essa escolha nos permitiu testar o modelo, o treinamento e a avaliação com um orçamento pequeno. Julia 1 é nossa primeira validação pública dessa abordagem. Os resultados mostram onde ela funciona e onde precisamos avançar, especialmente em listas longas de opções e tarefas que exigem conhecimento externo ou raciocínio em várias etapas.

O desafio de construir com poucos recursos

O gasto total com GPUs na nuvem para o treinamento e os experimentos da Julia 1 ficou em cerca de R$ 540 (US$ 104,08). Esse orçamento permitiu colocar a abordagem à prova, medir os resultados e encontrar falhas concretas. Treinar uma base multilíngue do zero exigiria um investimento muito maior.

Para Julia 2, planejamos desenvolver uma arquitetura fundacional própria, sem mmBERT. O trabalho parte do que aprendemos com Julia 1 e das limitações que os testes já revelaram. Julia 2 ainda está em desenvolvimento.

A Supersonic Labs está totalmente aberta a investimentos e financiamento para avançar essa pesquisa. Para conversar, envie uma DM para @supersonicai no X.

Como medimos

O teste Typed Decisions reúne 400 casos, com cinco decisões por caso: escolha, pontuação ordenada e sim ou não. Julia acertou 428/600 em Choice, 484/600 em Noul e 551/800 em Score. Os três pilotos de classificação seguem esta versão do protocolo Jev. Avaliamos Julia com inferência H200 BF16 e codificação estrita; a coluna Jev usa os resultados de referência do protocolo. Abstenções entram como erro. O repositório do modelo inclui os resultados completos e a proveniência do checkpoint.

Os resultados cobrem decisões entre respostas fornecidas junto da pergunta. Conhecimento externo e cálculos em várias etapas pedem outros testes. Para aplicar Julia a um domínio novo, avalie perguntas e opções reais desse domínio. Decisões de maior consequência precisam de revisão humana.

Explore o modelo

O Julia 1 no Hugging Face reúne os pesos, a interface Python, as métricas, a proveniência e as instruções para baixar e executar o modelo. Os artefatos têm licença Apache 2.0.

Também estamos construindo uma API própria para Julia 1. Vamos abrir o acesso em breve para quem quiser integrar o modelo. O preço de lançamento será US$ 0,025 por milhão de tokens de entrada e US$ 0,00 por milhão de tokens de saída.

Voltar ao laboratório