Editorial Dados & Embeddings

Stack v3: 114 TB de código aberto e a pergunta de quem foi consultado

O maior conjunto de dados de código-fonte já publicado abertamente: 224 milhões de repositórios, 770 linguagens, cerca de 5 trilhões de tokens depois da filtragem. É quase dez vezes o Stack v2 — e o ponto não é o tamanho, é que agora qualquer laboratório pode treinar com a mesma base que os grandes.

Ponto Zero ·

Um modelo de código é, em larga medida, o que ele leu. E o que os bons modelos de código leram sempre foi um segredo comercial — descrito em papers com frases como "um corpus proprietário de código de alta qualidade", que é a maneira educada de dizer "não vamos contar".

O Stack v3, publicado esta semana pela equipe de código do Hugging Face, é o contrário disso. São 113,7 TB de código-fonte bruto, vindos de 224 milhões de repositórios do GitHub em 770 linguagens, com um subconjunto de treino já filtrado de 15,9 TB — cerca de 4,9 trilhões de tokens em 713 linguagens. Tudo sob licença ODC-By 1.0, tudo baixável.

O salto em relação ao v2

A comparação com a versão anterior explica por que isso é notícia. O Stack v2, de 2024, tinha 68 TB brutos que viravam cerca de 550 bilhões de tokens filtrados em 618 linguagens. O v3 chega a 4,9 trilhões — quase nove vezes mais material treinável.

Mas o ganho de tamanho não é a mudança mais útil. Duas decisões de engenharia importam mais no dia a dia de quem vai usar. A primeira: o v3 é autocontido. No v2, o dataset guardava identificadores de arquivo e você precisava buscar o conteúdo em outro lugar — um passo a mais que quebrava com frequência e tornava a reprodução de experimentos frágil. No v3, o conteúdo do arquivo vem embutido.

A segunda: o corte temporal. O v2 refletia o GitHub de 2023. O v3 captura o estado de agosto de 2025. Dois anos de diferença, num ecossistema em que frameworks inteiros nascem e morrem nesse intervalo, é a diferença entre um modelo que conhece as bibliotecas atuais e um que insiste em APIs aposentadas.

  • Corpus completo: 113,7 TB, 224 milhões de repositórios, 770 linguagens (bucket compatível com S3).
  • Subconjunto de treino: 15,9 TB, 173 milhões de repositórios, 713 linguagens, ~4,9 trilhões de tokens.
  • Contra o v2: 68 TB → 114 TB brutos; ~550 bi → ~4,9 tri de tokens filtrados.
  • Detecção de linguagem: go-enry; licenças identificadas com ScanCode Toolkit.
  • Deduplicação: MinHash-LSH com verificação Jaccard (limiar ≥ 0,7) após clusterização por componentes conexos.
  • Filtros: arquivos acima de 5 MB e binários removidos; PII redigida com o modelo StarPII; heurísticas de qualidade por comprimento de linha e proporção de caracteres.
  • Licença: ODC-By 1.0 no conjunto; cada arquivo mantém a licença original, e só permissivas entram na versão publicada.

Por que a deduplicação mudou de método

Código-fonte é o tipo de dado mais duplicado que existe. O mesmo arquivo de licença, o mesmo utils.py copiado entre projetos, o mesmo boilerplate de framework aparecem milhões de vezes. Treinar com duplicatas desperdiça computação e faz o modelo memorizar em vez de generalizar.

O método padrão é o MinHash-LSH, que agrupa arquivos parecidos sem comparar todos contra todos. O problema conhecido é que ele produz falsos positivos: dois arquivos caem no mesmo balde de hash sem serem realmente similares. O v3 acrescenta uma verificação Jaccard explícita depois da clusterização — mede a sobreposição real entre os conjuntos e descarta os pares que não passam do limiar de 0,7.

De cada cluster de duplicatas sobrevive um representante, escolhido por número de estrelas do repositório e permissividade da licença. É uma regra que privilegia a versão mais mantida e mais legalmente segura de cada trecho — razoável, ainda que introduza um viés silencioso a favor de projetos populares.

O que o dataset não contém

Vale ser explícito, porque a ausência é uma escolha: o Stack v3 traz código-fonte e notebooks Jupyter, e nada mais. Sem issues, sem pull requests, sem documentação, sem histórico de commits. Forks só entram se tiverem ao menos 5 estrelas.

Isso significa que ele treina o modelo a escrever código, não a participar do processo de desenvolvimento — que é onde o trabalho agêntico de engenharia acontece de fato. A discussão de um bug numa issue, o vaivém de revisão num PR, a mensagem de commit que explica por quê: esse material continua fora. Quem quiser um modelo que entenda um repositório como artefato social, e não só como texto, ainda precisa montar o próprio corpus.

A questão que não se resolve com filtro

O Stack v3 mantém o processo de opt-out herdado das versões anteriores: quem não quer o próprio código no dataset pode pedir a remoção. É o mesmo mecanismo de sempre, e carrega o mesmo problema de sempre — ele é retroativo e depende da pessoa descobrir que precisa agir.

A equipe fez o que dá para fazer tecnicamente: excluiu código sob licenças restritivas, identificou licenças com ScanCode, redigiu dados pessoais com um modelo dedicado. Isso resolve o risco jurídico da redistribuição. Não resolve a pergunta anterior — se o consentimento para publicar código sob MIT no GitHub em 2014 é consentimento para treinar um modelo comercial em 2026. Essa pergunta continua aberta, e nenhum pipeline de deduplicação vai fechá-la.

O que fica

Publicar 114 TB de dados é caro e não gera manchete. É infraestrutura — o tipo de trabalho que só aparece quando falta. O efeito prático do Stack v3 é reduzir a vantagem que os grandes laboratórios tinham por acesso a dados, deslocando a competição para onde ela é mais interessante: o que cada um faz com o mesmo material. Depois do DeepSeek-V4-Flash mostrar que 40 pontos de benchmark estavam parados no pós-treino, saber que a base de dados é a mesma para todos torna a comparação entre laboratórios um pouco mais honesta.

Perguntas Frequentes

O que é deduplicação MinHash-LSH?

É uma técnica para achar documentos parecidos sem comparar cada par. Cada arquivo vira uma assinatura compacta (MinHash) que preserva similaridade, e o LSH agrupa assinaturas próximas em baldes. É rápido o bastante para rodar em bilhões de arquivos, mas produz falsos positivos — daí a verificação Jaccard adicional do Stack v3.

O que significa a licença ODC-By 1.0?

É a Open Data Commons Attribution License: permite copiar, distribuir e adaptar o conjunto de dados, inclusive comercialmente, exigindo atribuição. Ela se aplica à compilação; os arquivos individuais mantêm suas licenças originais, e usar o dataset não dispensa respeitar os termos de cada repositório.

Quantos tokens são 4,9 trilhões, na prática?

É material suficiente para pré-treinar um modelo de porte considerável sem repetir dados. Para comparação, a maioria dos modelos abertos de código treinados até 2025 usava entre algumas centenas de bilhões e cerca de 2 trilhões de tokens de código no total.

Preciso baixar os 114 TB para usar?

Não. O subconjunto de treino de 15,9 TB pode ser carregado direto pela biblioteca datasets ou consumido em streaming, sem download completo. O corpus integral fica num bucket compatível com S3, para quem precisa dele.

compartilhar: