notícias

A equipe PyTorch estreia seu roteiro técnico, com quase cem páginas de documentos revelando sua direção de desenvolvimento no segundo semestre de 2024.

2024-07-15

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Novo Relatório de Sabedoria

Editor: Qiao Yang

[Introdução à Nova Sabedoria]Recentemente, a equipe PyTorch anunciou pela primeira vez o roteiro de desenvolvimento, que foi modificado diretamente a partir de documentos técnicos internos, revelando a próxima direção de desenvolvimento desta clássica biblioteca de código aberto.

Se você desenvolve em Python na área de IA, PyTorch deve ser um de seus velhos amigos. Em 2017, Meta AI lançou esta biblioteca de código aberto na área de aprendizado de máquina e aprendizado profundo, que está agora em seu sétimo ano.

De acordo com as estatísticas de 2021 da Assembly AI, os 30 modelos mais populares no HuggingFace podem ser executados no PyTorch, e 92% dos modelos são proprietários do PyTorch. Essa proporção torna muitos concorrentes, incluindo o TensorFlow, fora de alcance.


Apenas em 10 de julho, a equipe de engenharia do PyTorch divulgou publicamente seu documento de roteiro pela primeira vez, definindo a direção de desenvolvimento no segundo semestre de 2024.

Soumith Chintala, cofundador da Meta e líder da equipe PyTorch, anunciou oficialmente a notícia no Twitter.

Ele disse que espera tornar públicas as motivações e objetivos de pesquisa dos engenheiros.

"Embora todo o desenvolvimento do PyTorch seja público no GitHub, os documentos reais de planejamento e roteiro escritos por equipes em várias afiliadas do PyTorch não são públicos, então decidimos fazer alterações para aumentar a transparência."


Gott Brath, gerente técnico de projetos da equipe PyTorch, também fez declaração semelhante no fórum.


Estamos pensando em como compartilhar um roteiro do trabalho que a equipe está realizando no PyTorch. Fazemos planejamento semestralmente, então estas são algumas versões públicas de nossos planos OSS para 2024 H2 para várias áreas-chave em PyTorch.

Esses arquivos são basicamente os documentos internos e planos de trabalho da equipe PyTorch. Após a exclusão de algum conteúdo, foram publicados como um roteiro, que envolve os seguintes aspectos do PyTorch:

- Bibliotecas principais e desempenho principal

- Distribuído

- torchune, Torchrec, TorchVision

- Borda PyTorch

- Carregamento de dados (DataLoading)

- Núcleo e implantação do compilador

- Infraestrutura do desenvolvedor

Cada documento contém pelo menos três partes, baseadas em ideias de OKR:

- fundo

- As 5 principais áreas de foco e objetivos: objetivos, resultados principais, riscos conhecidos ou desconhecidos e medidas de mitigação correspondentes (máximo de uma página)

- 3 a 5 principais aspectos para melhorar o nível de engenharia: classificação do Pilar BE, metas, indicadores/status/objetivos específicos, riscos conhecidos ou desconhecidos e medidas de mitigação, impacto/custo, nível de prioridade/confiança (máximo de uma página)

Entre eles, o Pilar BE pode ser considerado as “cinco máximas” escritas pela Meta para a equipe de desenvolvimento.

Melhor código, melhor documentação, capacitação de equipes, código moderno, melhor arquitetura

Não sei se algum desenvolvedor se preocupou com o tamanho dos documentos devido à regra de “máximo de uma página”. Afinal, os documentos são mais caros do que documentos longos. Condensar muitos requisitos de desenvolvimento em uma página não apenas economiza o tempo dos colegas. também testa as habilidades do escritor.

Além disso, algumas ideias excelentes da equipe de desenvolvimento Meta também podem ser vistas no documento, como enfatizar a colaboração de várias equipes de módulos, enfatizar a integração de API e o desenvolvimento conjunto com parceiros externos e enfatizar a interação com a comunidade de código aberto e desenvolvedores.

Ao lançar uma nova base de código como o ExecuTorch, ou ao querer aumentar a influência do compilador PyTorch, a equipe geralmente parte de dois aspectos: um é fazer todos os esforços para melhorar o desempenho e direcionar diretamente o SOTA; integre profundamente Comece com casos de uso mais prontos para uso.

Talvez estas sejam as chaves para o sucesso da Meta no campo do código aberto ao longo dos anos.

A seguir está um trecho parcial e um resumo do conteúdo de cada documento.


Endereço original: https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

Bibliotecas principais e desempenho principal

As principais bibliotecas envolvidas no documento incluem TendorDict, torchao, NN, TorchRL, etc.

Em termos de desempenho, a equipe PyTorch propôs o objetivo de alcançar o desempenho SOTA no treinamento e inferência do modelo. As medidas incluem a introdução de tecnologia de otimização de arquitetura e kernel de alto desempenho para formar uma combinação com toda a pilha de tecnologia PyTorch.

O ano passado testemunhou o rápido desenvolvimento do GenAI. Muitas bibliotecas externas surgiram para apoiar o desenvolvimento no campo da pesquisa, mas muitas delas não dependem diretamente do PyTorch, o que ameaçará o domínio do PyTorch no campo da pesquisa científica.

Para acompanhar o ritmo novamente, PyTorch fornecerá suporte para tecnologias de desenvolvimento comuns, como quantização, esparsificação, MoE e treinamento de baixa precisão, incluindo blocos de construção e APIs (principalmente integrados em torchao) para ajudar modelos de várias arquiteturas de Transformer melhorar o desempenho.

A biblioteca torchao pode ajudar os pesquisadores a personalizar técnicas de tipo, layout e otimização de alto desempenho dentro da estrutura PyTorch, estendendo o escopo de uso para vários cenários, como treinamento, inferência e ajuste.

Além disso, as atualizações da biblioteca principal incluirão o seguinte:

- A biblioteca de otimização automática lançada torchao alcançou um grande sucesso. O próximo passo é melhorar a organização do código e separar as operações numéricas da biblioteca principal.

- Aborda a modularidade central do TendorDict, suporta serialização de cargas/armazenamentos e faz com que ele execute 2x mais rápido no modo ansioso

- Continuando o sucesso da carga mapeada de memória no primeiro semestre do ano, continue a melhorar o desempenho e a segurança do carregamento/armazenamento do modelo

- Reduza a sobrecarga do TorchRL em 50%

- Adicionado suporte principal para NoGIL

- Corrigido o problema da variável TORCH_env relatada pelos usuários não funcionar

O documento também menciona a descontinuação do módulo nn.transformer, dizendo que uma série de tutoriais e casos de uso serão lançados para mostrar como usar torch.compile, sdpa, NJT, FlexAttention, custom_op, torchao e outros módulos para construir o Transformer.

distribuído

O pré-treinamento do LLM geralmente abrange dezenas ou até milhares de GPUs e, à medida que a escala de parâmetros do modelo aumenta gradualmente, é difícil concluir a inferência e o ajuste fino em uma única GPU.

Portanto, o próximo layout "distribuído" do PyTorch cobre abrangentemente os três links de treinamento, inferência e ajuste fino, e propõe alcançar treinamento distribuído em escala ultralarga, ajuste fino com alta eficiência de memória e raciocínio distribuído multi-host .

trem

Os modos paralelos suportados nativamente pelo PyTorch incluem principalmente o seguinte:

- Dados totalmente fragmentados paralelos (FSDP)

- Fragmentação híbrida de dados paralelos (HSDP)

-Tensor paralelo (TP)

- Pipeline paralelo (PP)

- Sequência paralela (SP)

-Contexto paralelo (CP)

PyTorch espera modularizar ainda mais vários métodos paralelos no TorchTitan, permitindo que os desenvolvedores combinem livremente e obtenham paralelismo N-dimensional conforme necessário.


O documento menciona especificamente a necessidade de adicionar suporte para duas arquiteturas emergentes, MoE e multimodalidade, como paralelismo especializado e otimização de algoritmos de roteamento.

Além da atualização do TorchTitan em si, a equipe distribuída também precisa trabalhar em estreita colaboração com a equipe do compilador para melhor integração com o módulo torch.compile e trazer melhorias adicionais de desempenho para cenários distribuídos em grande escala.

Ajuste fino e inferência

Ajuste fino: combinado com torchtune, coloque a solução FSDP2 LoRA/QLoRA em uso e suporte à quantização NF4 do dicionário de estado do modelo

Raciocínio: PP e DP se tornaram o núcleo das APIs distribuídas. Em seguida, precisamos prestar atenção ao raciocínio distribuído do torchtitan, que suporta modelos grandes de PP + métodos TP assíncronos.

O documento também menciona que a API de inferência do HuggingFace será migrada do PiPPy para o PyTorch (concluído pelo HuggingFace).

torchtune, TorchRec, TorchVision

tocha tocha

O lançamento do torchtune visa ajudar os usuários a ajustar o LLM de forma mais conveniente. Esta também é a solução oficial para ajustar o modelo Llama.

O “ajuste fino” definido pelo torchtune tem um alcance muito amplo, que pode ser resumido em três tipos de cenários:

- Adaptação do modelo para conjuntos de dados específicos de domínio ou tarefas downstream

- Modelagem de recompensas e preferências, como RLHF, DPO, etc.

- Processo de treinamento incluindo destilação e quantização

As atualizações no segundo semestre do ano apoiarão o ajuste fino dos fluxos de trabalho dos agentes, ao mesmo tempo que se concentrarão em melhorias no desempenho do ajuste fino.

A equipe cooperará com módulos de compilação, núcleo, distribuídos e outros para fornecer ajuste fino eficiente e estabelecer benchmarks representativos de desempenho de ajuste fino dentro do ecossistema PyTorch.

Como o torchtune também é uma biblioteca de código aberto mais recente, a interação com a comunidade de código aberto também é essencial.

O documento propõe a publicação de artigos e tutoriais em blogs, a realização de palestras técnicas, etc. para melhorar a compreensão do usuário; também definirá indicadores quantitativos para medir a participação da torchturn no ecossistema LLM.

Além da comunidade de código aberto, o torchune se integrará com pelo menos um parceiro e participará de sua comunidade para promover o uso do torchune.

Visão da tocha

Como ator dominante absoluto no campo de CV, a tecnologia da TorchVision é relativamente madura, portanto, há muito poucas atualizações propostas no roteiro.

A equipe continuará trabalhando na direção do pré-processamento, suportando mais formatos (como WebP, HEIC) e plataformas (como CUDA) no espaço de codificação/decodificação de imagens e melhorando o desempenho de codificação/decodificação do formato jpeg em GPU.

TochaRec

TorchRec visa fornecer primitivas de esparsidade e paralelismo comumente usadas em sistemas de recomendação de grande escala. A primeira versão estável, TorchRec 1.0, será lançada no outono.

Borda

Atualmente, a biblioteca de código aberto ExecuTorch lançou uma versão Alpha, que depende principalmente de torch.compile e torch.export para suportar análise de modelo, depuração e inferência em dispositivos móveis e dispositivos de borda (como AR/VR, dispositivos vestíveis).

No segundo semestre do ano, a equipe Edge lançará a versão Beta do xecuTorch e fornecerá soluções dentro do ecossistema PyTorch para os modelos da série Llama da Meta e outros modelos de código aberto.

Os objetivos principais abrangem principalmente duas direções. A primeira é fornecer funções básicas e infraestrutura confiável para IA no dispositivo, incluindo:

- Garanta a estabilidade da API para C++ e Python

- Implementar uma série de funções principais: suporte à compactação de modelo, gerenciamento de localização de cache proxy, separação de dados e programas

A segunda é proteger esta base de código nascente, cultivar influência dentro da comunidade de código aberto e manter boas relações de cooperação com empresas como Arm, Apple e Qualcomm.

O objetivo de influência da comunidade foi até quantificado, exigindo que o código obtivesse 3 mil estrelas no GitHub e fosse clonado (fork) 500 vezes. Os leitores interessados ​​podem continuar atentos e ver se a equipe consegue concluir este OKR até o final do ano.

Carregamento de dados

A biblioteca de conjuntos de dados HuggingFace baseada no formato Apache Arrow surgiu repentinamente nos últimos anos com seu carregamento/armazenamento em alta velocidade sem limitações de memória e parece ter roubado o centro das atenções das funções relacionadas ao PyTorch.

O documento sobre carregamento de dados começa com a ambição de tornar a biblioteca TorchData excelente novamente e restabelecer o domínio do PyTorch no carregamento de dados.

Para atingir esse objetivo, é necessário tornar as funções relevantes flexíveis, escaláveis, de alto desempenho e eficientes em termos de memória, ao mesmo tempo em que se consegue uma operação simples e se apoia o treinamento multimodal de várias escalas.

Os objetivos específicos de atualização incluem os seguintes aspectos:

- O desenvolvimento funcional e a interface do DataLoader implementarão primeiro o princípio do GitHub, e o DataPipes e o DataLoader v2 serão gradualmente obsoletos e excluídos.

- Garantir limites claros e boa interoperabilidade entre TorchTune, TorchTitan, HuggingFace e TorchData e oferecer suporte a conjuntos de dados múltiplos e carregamento de dados multimodais

- HuggingFace usa a API do StatefulDataLoader para garantir compatibilidade e atualizar amostras e casos de teste em tempo hábil.

Núcleo do compilador e implantação

As funções principais do compilador PyTorch tornaram-se cada vez mais perfeitas após anos de desenvolvimento. O que precisa ser compensado agora é uma integração mais profunda e mais suporte de otimização nas áreas de LLM e GenAI.

O roteiro propõe trazer a função torch.compile() para todos os aspectos do ciclo de uso do LLM e GenAI (inferência, ajuste fino, pré-treinamento), para que modelos importantes possam ser compilados com PyTorch nativo quando lançados.

Para atingir esse objetivo, o documento propõe muitas medidas específicas, como trabalhar com as equipes torchtune e TorchTitan para melhorar o desempenho da compilação e lançar versões compiladas PyTorch nativas de pelo menos dois modelos de alto perfil no segundo semestre do ano.

Além disso, o compilador pode adicionar recursos de visualização para gerar gráficos de modelo que expressam o processo de computação direta/retropropagação no modo de treinamento não ansioso.

Existem também muitos planos de suporte ao usuário, como melhorar o monitoramento e a observabilidade do sistema e ajudar os usuários a depurar problemas de compilação por conta própria. Os principais objetivos também incluem o estabelecimento de uma equipe de suporte ao usuário para resolver problemas levantados pelos desenvolvedores em plataformas como GitHub em diversas áreas importantes (classes de dados, gerenciamento de contexto, etc.).

Referências:

https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

https://x.com/soumithchintala/status/1811060935211049046

https://www.assemblyai.com/blog/pytorch-vs-tensorflow-em-2023/