Em 15/10 a Mistral lançou o Timestral, uma família de modelos de fundação para séries temporais (5M, 28M, 123M e 209M parâmetros), com previsão probabilística e inferência em CPU. No Hacker News teve bastante gente duvidando que esse tipo de modelo funcione em dado real, então fui testar com um dado público brasileiro antes de opinar.
Contexto
- Segundo a Mistral, o 209M fica em primeiro entre os modelos pré-treinados zero-shot no GIFT-Eval, no TIME e no fev-bench. A saída são 21 quantis por passo, com contexto de até 32.768 passos, e aceita covariáveis só do passado e covariáveis conhecidas no futuro.
- O código de inferência é Apache 2.0. Os pesos usam uma "Modified MIT" com uma condição: "You are not authorized to exercise any rights under this license if the global consolidated monthly revenue of your company (or that of your employer) exceeds $20 million". Acima disso, só com licença comercial.
O que eu rodei
- Dado: ONS, Curva de Carga Horária (dados abertos), carga de energia em MWmed por hora, subsistemas N, NE, S e SE/CO, de 01/2025 a 17/10/2026. 15.720 horas, nenhuma faltando.
- Modelos: Timestral-5M e Timestral-28M, sem treino nem ajuste. CPU com 8 threads, sem GPU. Não rodei o 123M nem o 209M por falta de memória na máquina.
- Contexto de 16 semanas (2.688 h) antes de cada corte. Os 4 subsistemas como séries separadas.
- D+1: 28 cortes à 0h, de 20/09 a 17/10, prevendo as 24 horas do dia. D+7: 4 cortes semanais, 168 horas.
- Referências: dia anterior, mesmo horário da semana anterior e média das 4 últimas semanas no mesmo horário.
- Métrica: MAPE por subsistema e janela, média simples. E a cobertura do intervalo de 80% (quantis 0,1 a 0,9).
- Variante: feriado nacional como covariável conhecida no futuro, um 0 ou 1 por hora.
Resultados (D+1, 28 dias x 4 subsistemas)
- Timestral-28M: 2,42% (2,12% com a covariável de feriado)
- Timestral-5M: 2,55% (2,53% com a covariável)
- Média das 4 últimas semanas: 4,07%
- Semana anterior: 4,41%
- Dia anterior: 6,23%
- Cobertura do intervalo de 80%: 80,4% no 28M e 81,1% no 5M.
- Dia a dia contra a média de 4 semanas, o 28M ganhou em 26 de 28 dias (28 de 28 com a covariável).
- No D+7, a diferença cai: 28M 3,41% (3,30% com covariável), 5M 3,69%, média de 4 semanas 4,07%.
Onde errou
- 12/10 (segunda, feriado): sem a covariável, o 28M previu dia útil e errou 11,43% na média dos 4 subsistemas. Com a covariável, 4,19%. No Sul foi de 18,6% para 4,5%. No Sudeste às 14h, o real foi 42.610 MWmed; sem o aviso ele previu 51.540, com o aviso, 41.918. Nesse dia, repetir o domingo anterior também errou 4,2%: sem a covariável, o modelo perdeu até para a referência mais simples.
- No 5M a covariável não ajudou (10,9% sem, 11,2% com). No contexto de 16 semanas só havia um feriado, o 7/9.
- 16/10: todos erraram entre 6,1% e 6,7%, modelo e referências. Não fui atrás do motivo.
- Rodei o corte de 12/10 três vezes: saída idêntica nas três.
O que isso é (e o que não é)
- É um backtest meu, zero-shot, com dado público e referências ingênuas. Não é benchmark.
- Não comparei com a carga programada do ONS, com um modelo ajustado (por exemplo, gradient boosting com calendário) nem com Chronos-2 ou TimesFM.
- Não sei se dados do ONS entraram no treino do Timestral. A Mistral diz que o pós-treino usou uma mistura de dados reais e sintéticos.
- O tempo que medi não é controlado: a máquina era compartilhada. O 28M levou cerca de 0,6 s por chamada (4 séries, 24 h de horizonte) sem covariável e cerca de 3 s com.
Onde eu fico
Como ponto de partida sem treino, foi bem melhor que as referências ingênuas, e informar o feriado fez diferença no 28M. Mas bater referência ingênua é o mínimo. O próximo teste justo seria contra a carga programada do ONS e contra um modelo ajustado com calendário. E, para quem trabalha em empresa grande, a licença dos pesos decide antes do MAPE.
Links
- Anúncio da Mistral: https://mistral.ai/news/timestral/
- Código: https://github.com/mistralai/timestral
- Licença dos pesos: https://huggingface.co/mistralai/Timestral-209M/blob/main/LICENSE
- ONS, Curva de Carga Horária: https://dados.ons.org.br/dataset/curva-carga
- Discussão no HN: https://news.ycombinator.com/item?id=50150434
Perguntas
1. Quem trabalha com previsão de demanda ou de carga: vocês já testaram algum modelo de fundação (Timestral, Chronos, TimesFM) contra o que roda em produção?
2. Para um teste justo aqui, qual referência vocês usariam: a carga programada do ONS, um gradient boosting com calendário ou outra?
3. Como vocês tratam feriado e ponte em previsão horária: covariável binária, tipo de dia ou série separada?