Lançamento PyTorch 2.13
Estamos entusiasmados em anunciar o lançamento do PyTorch 2.13! Essa versão traz uma série de melhorias e novidades que aprimoram o desempenho e a funcionalidade da plataforma. Com 3.328 commits de 526 contribuintes desde a versão 2.12, essa é uma grande conquista para a comunidade PyTorch. Gostaríamos de agradecer sinceramente a todos os contribuintes por seu trabalho árduo e dedicação. Como sempre, incentivamos todos a experimentar essas novidades e relatar quaisquer problemas para que possamos continuar melhorando a versão 2.13. Mais informações sobre como começar a usar a série 2 do PyTorch podem ser encontradas em nossa página de início.
Você tem dúvidas? Junte-se a nós em 22 de julho de 2026, às 11h da manhã, horário do Pacífico, para uma sessão de perguntas e respostas ao vivo com os painelistas Alban Desmaison, Andrey Talman, Piotr Bialecki e o moderador Chris Gottbrath. Faremos uma breve apresentação da versão e responderemos às suas perguntas ao vivo. Registre-se hoje mesmo! Ao longo da série 2.x, o PyTorch evoluiu de uma estrutura de pesquisa para uma plataforma unificada e independente de hardware para treinamento e inferência em produção em larga escala. O PyTorch 2.11 introduziu coletivos diferenciáveis para treinamento distribuído e FlashAttention-4 em GPUs de próxima geração. O PyTorch 2.12 adicionou uma API de acelerador de dispositivo independente, decomposição de autovalores em lotes até 100 vezes mais rápida e suporte a exportação de quantização Microscaling.
Agora, o PyTorch 2.13 impulsiona o desempenho em todas as plataformas e escalas: a FlexAttention chega ao Apple Silicon com acelerações de até 12 vezes, o CuTeDSL traz kernels de GEMM de classe CUTLASS para o Inductor e a perda de entropia cruzada linear fusionada reduz a memória pico em até 4 vezes para modelos de vocabulário grande. No lado distribuído, um novo backend de torchcomms melhora a tolerância a falhas e a depuração em escala de cluster, e o FSDP2 desbloqueia a sobreposição de comunicação entre all-gather e reduce-scatter para uma maior taxa de treinamento. Essa versão também marca a integração do ExecuTorch ao núcleo do PyTorch, tornando a inferência no dispositivo uma capacidade de primeira classe da estrutura.
Essa melhoria se concentra na correção e depuração para a implementação existente do CUDA da FlexAttention, tornando o cálculo de gradiente reprodutível. Por padrão, o backend de FlexAttention usa operações atômicas na passagem de retropropagação para o acúmulo de dQ, o que introduz não-determinismo — execuções repetidas na mesma entrada podem produzir gradientes ligeiramente diferentes. Isso torna a depuração, os testes de regressão e a pesquisa reprodutível difíceis. O novo caminho de retropropagação determinístico (compute_dq_write_order) substitui as operações atômicas por uma ordem de gravação pré-computada que garante gradientes reprodutíveis bit a bit sem penalidade de desempenho significativa. O overhead de ponta a ponta medido em create_block_mask é bem inferior a 1% em comprimentos de sequência mais longos (por exemplo, +0,2% em S=32768), tornando a determinismo efetivamente gratuita para a maioria das cargas de trabalho de produção. Os usuários podem optar por isso via a configuração existente torch.use_deterministic_algorithms(True) sem alterações de código adicionais.
A API instável (PR #174813 por Driss Guessous, Meta) anteriormente delegava a maioria das operações ao framework MPSGraph da Apple, que adiciona sobrecarga de compilação e agendamento por dispatch. Para operações de alta frequência e sensíveis à latência, essa sobrecarga pode dominar o tempo de execução. Essa versão migra um conjunto amplo de operações para kernels de computação Metal personalizados — cópia/conversão, uniforme/normal/inteiro aleatório, comparações, reduções (soma/média), cumsum/cumprod, classificação (multi-bloco e estável), retropropagação de incorporação e dispersão/coleta com verificação de limites. O caminho nativo Metal elimina o custo de compilação por operação do MPSGraph e dá ao PyTorch controle direto sobre o lançamento de threads e padrões de acesso à memória, reduzindo a latência de lançamento de kernel em cargas de trabalho comuns de treinamento e inferência no Apple Silicon.
A API instável (PR #184740 por Nikita Shulga, Meta, #185609 e #185119 por Irakli Salia, EPAM) FlexAttention, API unificada do PyTorch para expressar padrões de atenção personalizados como funções Python simples compiladas em kernels fusionados, agora está disponível no Metal/MPS. A implementação MPS fornece kernels de computação Metal personalizados para ambos os caminhos de pré-preenchimento e decodificação esparsos (incluindo GQA e buffers capturados). Em vez de escrever um kernel CUDA personalizado para cada variante de atenção que você precisa, a FlexAttention escreverá uma função Python de 2 linhas, e o compilador construirá um kernel rápido para você automaticamente. Os números de benchmark são impressionantes para máscaras esparsas. Em padrões de atenção esparsos e longos, as acelerações sobre o SDPA são substanciais — por exemplo, em um formato de 1×8×32768×64 com uma janela deslizante de 256 elementos (0,8% de densidade), a FlexAttention é executada em aproximadamente 35 ms, enquanto o SDPA é executado em aproximadamente 431 ms (~12,3x); um caso menor de 8192 comprimento/64 janela alcança ~4,15x. Os padrões densos continuam a favorecer o SDPA, como esperado