Nous Research lança NousCoder modelo competitivo de programação olímpica pós treinado em Qwen por reforço e com alto desempenho em LiveCodeBench

1 semana ago · Updated 1 semana ago

nous-research-lanca-nouscoder-modelo-competitivo-de-programacao-olimpica-pos-treinado-em-qwen-por-re
Table
  1. Ouça este artigo
  2. Nous Research lança NousCoder-14B post‑treinado por RL e libera pesos
  3. Resultado principal e significado de Pass@1
  4. Dados de treino e infraestrutura
  5. Como funcionou o treino por reforço (visão geral)
  6. Ambiente de verificação e pipeline
  7. Objetivos de otimização: GRPO, DAPO, GSPO e GSPO
  8. Resultados por objetivo e janela de contexto
  9. Estratégia contra programas longos (overlong filtering)
  10. Conclusão
  11. Perguntas frequentes

Ouça este artigo


Você vai ler sobre como o NousCoder foi criado ao pós-treinar o modelo base Qwen com aprendizado por reforço e recompensas verificáveis para resolver problemas de programação competitiva. O artigo descreve execução segura de código com Modal dentro do ambiente Atropos, os objetivos de treino GRPO, DAPO, GSPO e GSPO, e por que a extensão iterativa de contexto combinada com filtragem de programas muito longos (overlong filtering) fez a diferença. Também mostra como o pipeline que separa inferência e verificação aumentou a taxa de acertos do primeiro programa gerado e os principais aprendizados do trabalho.

  • NousCoder melhora acertos em programação competitiva via pós‑treino por RL com recompensas verificáveis
  • Treinado em 24.000 problemas verificáveis; pesos liberados sob licença Apache‑2.0
  • Execução segura em sandbox com Modal e verificação com Atropos
  • Usa GRPO com variações DAPO, GSPO e GSPO (diferenças modestas)
  • Extensão iterativa de contexto e filtro para programas muito longos que evita viés por soluções curtas

Nous Research lança NousCoder-14B post‑treinado por RL e libera pesos

Você precisa saber: a Nous Research publicou o modelo NousCoder-14B, pós‑treinado sobre Qwen3-14B usando aprendizagem por reforço com recompensas verificáveis. No benchmark de programação competitiva LiveCodeBench v6, o modelo alcançou Pass@1 de 67,87%, superando em 7,08 pontos percentuais o ponto de partida Qwen3-14B (60,79%). O treino usou 24.000 problemas verificáveis em 48 GPUs Nvidia B200 por 4 dias. Os pesos foram disponibilizados no Hugging Face sob licença Apache‑2.0.

Resultado principal e significado de Pass@1

  • Benchmark: LiveCodeBench v6
  • Tamanho do teste: 454 problemas
  • Métrica principal: Pass@1 — fração de problemas em que a primeira solução gerada passa todos os testes ocultos (inclui limites de tempo e memória)
  • Desempenho: 67,87% para NousCoder-14B vs 60,79% para Qwen3-14B

O benchmark exige soluções que respeitem limites rígidos de tempo e memória e um grande conjunto de testes ocultos.

Dados de treino e infraestrutura

Fontes de dados:

  • TACO Verified
  • PrimeIntellect SYNTHETIC‑1
  • LiveCodeBench (criado antes de 31/07/2024)

Recursos e tempo de treino:

  • 24.000 problemas verificáveis
  • 48 GPUs Nvidia B200 por 4 dias
  • Pesos publicados sob Apache‑2.0 no Hugging Face

Como funcionou o treino por reforço (visão geral)

A equipe usou execução real de código como sinal de recompensa:

  • Cada geração produz código Python.
  • O código é executado e verificado contra casos de teste.
  • Recompensas: 1 se todos os testes passarem; -1 se o código falhar, exceder 15 segundos de execução ou ultrapassar 4 GB de RAM.
  • Verificação feita em sandboxes autoscalados para segurança e isolamento.

Ambiente de verificação e pipeline

  • Ambiente RL implementado com Atropos.
  • Para rodar código não confiável em escala, usaram sandboxes autoscalados e containers isolados para reduzir latência e risco.
  • Pipeline:
  • Worker de inferência gera código e envia ao verificador Modal.
  • O worker inicia nova geração sem esperar pela verificação, mantendo o loop limitado pela inferência, não pela verificação.

Avaliaram três formas de paralelizar verificação (container por problema, por rollout e por caso de teste). Optaram por containers que rodem vários testes e priorizem casos mais difíceis, permitindo interrupção precoce quando um teste falha.

Objetivos de otimização: GRPO, DAPO, GSPO e GSPO

A otimização usou Group Relative Policy Optimization (GRPO), que dispensa um modelo de valor separado. Variantes testadas:

  • DAPO (Dynamic sAmpling Policy Optimization): aplica importância e clipping ao nível de token, com correções de amostragem.
  • GSPO (Group Sequence Policy Optimization): aplica ponderação de importância ao nível da sequência (programa inteiro).
  • GSPO: correção por sequência e reescalonamento de gradientes para equalizar o peso dos tokens, independentemente do comprimento.

Para contexto sobre algoritmos e práticas de otimização em agentes treinados por reforço, a equipe se apoiou em técnicas comuns ao treinamento de agentes com RL. Todas usam a mesma definição de vantagem: recompensa do rollout normalizada pela média e desvio dentro do grupo.

Resultados por objetivo e janela de contexto

Treino seguiu cronograma de extensão de contexto: inicial 32k tokens → continuação 40k tokens (máximo do Qwen3-14B no treino); avaliação com extensão via YaRN até 81.920 tokens — aproveitando técnicas recentes para lidar com contexto extremamente longo.

Objetivo Contexto (tokens) Pass@1
DAPO 81.920 67,87%
GSPO 81.920 66,26%
GSPO 81.920 66,52%
Todos 40.960 63%

Diferenças entre objetivos são moderadas; DAPO tem vantagem leve em janelas muito longas.

Estratégia contra programas longos (overlong filtering)

Para evitar viés por comprimento:

  • Se uma geração excede a janela máxima de contexto, a vantagem daquele rollout é zerada.
  • Isso remove o rollout do sinal de gradiente em vez de penaliz‑á‑lo.
  • Segundo o relatório, a técnica evita forçar o modelo a produzir soluções mais curtas por otimização e preserva qualidade quando o contexto é estendido na avaliação.

A concepção das recompensas e a escolha de não punir diretamente gerações overlong se alinha a práticas de desenho de sinal encontradas em métodos que usam preferências e modelos de recompensa para guiar agentes (aprendizado por preferência).

Conclusão

O NousCoder-14B mostrou ganho prático na programação competitiva: pós‑treinado por RL com recompensas verificáveis, alcançou 67,87% Pass@1 — cerca de 7,08 pontos sobre o ponto de partida. Dois pilares se destacaram: execução segura e isolada do código (Modal Atropos) permitindo usar resultados reais como sinal de treino; e o pipeline que separa inferência e verificação, acelerando o loop e aumentando acertos no primeiro programa gerado.

No nível algorítmico, GRPO e suas variantes (DAPO, GSPO, GSPO) apresentaram diferenças modestas, com DAPO ligeiramente à frente em contextos muito longos. A combinação de extensão iterativa de contexto e overlong filtering evitou viés por soluções curtas sem reduzir qualidade em avaliações estendidas.

Resumo prático: treinaram em 24.000 problemas verificáveis, com 48 GPUs B200 por 4 dias, e liberaram os pesos sob Apache‑2.0. É um avanço promissor para soluções confiáveis e escaláveis em código gerado por IA.

Para acompanhar desdobramentos, veja mais artigos em https://blog.aidirectory.com.br.

Perguntas frequentes

  • O que é o NousCoder-14B e qual foi seu desempenho no LiveCodeBench v6?
    NousCoder-14B é um modelo de programação competitiva pós‑treinado em Qwen3-14B com RL e recompensas verificáveis. No LiveCodeBench v6 alcançou Pass@1 = 67,87%, 7,08 pontos sobre Qwen3-14B (60,79%). Treinado em 24k problemas, 48 GPUs B200 por 4 dias. Pesos liberados sob Apache‑2.0.
  • O que significa Pass@1 neste contexto?
    Pass@1 é a fração de problemas em que o primeiro programa gerado passa todos os testes ocultos, incluindo restrições de tempo (15s) e memória (4GB). É uma medida rígida e prática para programação competitiva.
  • De onde vieram os dados de treino e como foi feita a verificação?
    Dados: TACO Verified, PrimeIntellect SYNTHETIC‑1 e LiveCodeBench (antes de 31/07/2024). Conjunto de treino: 24k problemas; teste: 454 problemas. Verificação usa Atropos e containers Modal por rollout; cada container executa vários testes e falha rápido ao detectar erro.
  • O que são DAPO, GSPO e GSPO e como se comparam?
    Todos são variantes sobre GRPO (sem modelo de valor separado). DAPO aplica correções ao nível de token; GSPO ao nível de sequência; GSPO reescalona gradientes para equalizar peso de tokens. Em 81.920 tokens: DAPO 67,87%, GSPO 66,26%, GSPO 66,52%; em 40.960 tokens todos ≈63%.
  • Como lidam com contexto longo e programas que excedem o limite (overlong)?
    Treinaram com janela iterativa (32k → 40k) e avaliaram até 81.920 tokens com YaRN. Se um programa excede o limite, sua vantagem é zerada, removendo o rollout do sinal de gradiente em vez de puni‑lo — o que evita viés por soluções curtas e mantém qualidade ao escalar contexto.

Se você quiser conhecer outros artigos semelhantes a Nous Research lança NousCoder modelo competitivo de programação olímpica pós treinado em Qwen por reforço e com alto desempenho em LiveCodeBench, você pode visitar a categoria Notícias e Tendências.

Go up