stamatios
← Voltar ao feed
Robô tradutor entre dois plugues incompatíveis, ferramenta do Google para migrar PyTorch a JAX nas TPUs
Dev & Engenharia

Google lança agentes para migrar PyTorch para JAX em TPUs

resumo de ~3 min

O que é o projeto

O repositório "Accelerator Agents", hospedado na organização AI-Hypercomputer no GitHub, reúne ferramentas com IA para acelerar o desenvolvimento de machine learning em TPUs do Google Cloud. O projeto disponibiliza agentes que auxiliam na migração de código, na otimização de kernels e no ajuste de desempenho, com o objetivo de permitir que desenvolvedores aproveitem as TPUs com mais velocidade.

O README traz um aviso importante: trata-se de um projeto não oficialmente suportado pelo Google, e ele não é elegível para o programa de recompensas por vulnerabilidades de código aberto da empresa (Google Open Source Software Vulnerability Rewards Program). O código é distribuído sob a licença Apache 2.0, com 67 estrelas e 17 forks registrados na página.

MaxCode: migração de PyTorch para JAX

O primeiro agente, chamado MaxCode, facilita a conversão de modelos e bases de código existentes em PyTorch para JAX, ajudando usuários a migrar suas cargas de trabalho para rodar de forma eficiente em TPUs, com uso de estruturas de alto desempenho como o MaxText. Suas funções incluem:

  • Conversão automatizada de blocos de código funcionais e camadas de modelo de PyTorch para JAX;
  • Integração com MaxText, gerando código JAX compatível com a estrutura para treinamento e inferência imediatos em TPUs;
  • Abordagem human-in-the-loop: o agente redige implementações iniciais que os desenvolvedores podem revisar e refinar.

O projeto ressalta que o MaxCode está em desenvolvimento ativo, com trabalho contínuo para melhorar a qualidade da migração e ampliar a cobertura de modelos.

MaxKernel: desenvolvimento de kernels de alto desempenho

O segundo agente, MaxKernel, é uma ferramenta especializada para o desenvolvimento de kernels de alto desempenho em TPUs. Ele auxilia engenheiros a escrever, otimizar e depurar kernels personalizados, com foco específico no Pallas, a linguagem de kernels do JAX. As funcionalidades divulgadas são:

  • Redação de kernels Pallas do zero ou a partir de implementações de referência em JAX;
  • Conversão de kernels personalizados de CUDA/GPU para rodar de forma otimizada em TPUs;
  • Otimização e profiling, com sugestões e diagnósticos para melhorar o desempenho dos kernels (MFU);
  • Geração automática de harness de testes, criando código boilerplate para verificação de corretude e checagens de compilação.

Requisitos e contribuições

Para começar, o projeto exige uma máquina virtual no Google Cloud: uma VM apenas com CPU é suficiente para o MaxCode, enquanto uma TPU VM é recomendada para o MaxKernel. Também são necessários Python 3.11 ou superior e acesso à API do Gemini, usada para as capacidades de raciocínio dos agentes. A instalação começa com a clonagem do repositório, e instruções específicas de cada agente ficam em seus respectivos subdiretórios.

O README convida contribuições externas, com diretrizes detalhadas no arquivo CONTRIBUTING.md, e também referencia um código de conduta. Além dos dois agentes principais, a estrutura do repositório inclui um diretório chamado JAXBench, sem descrição detalhada no texto apresentado.