As apresentações anuais de infraestrutura do Azure do CTO do Azure, Mark Russinovich, no Build são sempre fascinantes, pois ele explora o passado, o presente e o futuro do hardware que sustenta a nuvem. A palestra deste ano não foi diferente, focando na mesma plataforma de IA divulgada no restante do evento.
Ao longo dos anos, ficou claro que o hardware do Azure se tornou cada vez mais complexo. No início, era um excelente exemplo de computação utilitária, usando um design de servidor padrão único. Agora são muitos tipos de servidores diferentes, capazes de suportar todas as classes de cargas de trabalho. GPUs foram adicionadas e agora aceleradores de IA.
Esta última inovação, introduzida em 2023, mostra o quanto a infraestrutura do Azure evoluiu juntamente com as cargas de trabalho que hospeda. O primeiro slide de Russinovich mostrou a rapidez com que os modelos modernos de IA estavam crescendo, de 110 milhões de parâmetros com GPT em 2018, para mais de um trilhão no atual GPT-4o. Esse crescimento levou ao desenvolvimento de supercomputadores distribuídos massivos para treinar esses modelos, juntamente com hardware e software para torná-los eficientes e confiáveis.
Construindo o supercomputador de IA
A escala dos sistemas necessários para executar estas plataformas de IA é enorme. O primeiro grande supercomputador de treinamento de IA da Microsoft foi detalhado em maio de 2020. Ele tinha 10.000 GPUs Nvidia V100 e ficou em quinto lugar no ranking global de supercomputadores. Apenas três anos depois, em novembro de 2023, a última iteração tinha 14.400 GPUs H100 e ficou em terceiro lugar.
Em junho de 2024, a Microsoft tinha mais de 30 supercomputadores semelhantes em data centers em todo o mundo. Russinovich falou sobre o modelo Llama-3-70B de código aberto, que leva 6,4 milhões de horas de GPU para ser treinado. Em uma GPU isso levaria 730 anos, mas com um dos supercomputadores de IA da Microsoft, uma execução de treinamento leva cerca de 27 dias.
O treinamento é apenas parte do problema. Depois que um modelo é construído, ele precisa ser usado e, embora a inferência não precise de níveis de computação de supercomputador para treinamento, ela ainda precisa de muito poder. Como observa Russinovich, um único parâmetro de ponto flutuante precisa de dois bytes de memória, um modelo de um bilhão de parâmetros precisa de 2 GB de RAM e um modelo de 175 bilhões de parâmetros requer 350 GB. Isso antes de você adicionar qualquer sobrecarga necessária, como caches, que podem adicionar mais de 40% aos já pesados requisitos de memória.
Tudo isso significa que o Azure precisa de muitas GPUS com características muito específicas para enviar muitos dados o mais rápido possível. Modelos como o GPT-4 requerem quantidades significativas de memória de alta largura de banda. A computação e a memória precisam de quantidades substanciais de energia. Uma GPU Nvidia H100 requer 700 watts e, com milhares de watts em operação a qualquer momento, os data centers do Azure precisam liberar muito calor.
Além do treinamento, design para inferência
A Microsoft desenvolveu seu próprio acelerador de inferência no formato de seu hardware Maia, que é pioneiro em um novo sistema de resfriamento de líquido direcionado, revestindo os aceleradores Maia em um sistema de resfriamento de circuito fechado que exigiu um design de rack totalmente novo com um gabinete secundário que contém os trocadores de calor do equipamento de refrigeração.
Projetar data centers para treinamento mostrou à Microsoft como provisionar inferências. O treinamento aumenta rapidamente até 100% e permanece assim durante a corrida. Usando o mesmo monitoramento de energia em um rack de inferência, é possível ver como o consumo de energia varia em diferentes pontos de uma operação de inferência.
O Projeto POLCA do Azure visa usar essas informações para aumentar a eficiência. Ele permite que várias operações de inferência sejam executadas ao mesmo tempo, provisionando o consumo de energia de pico, gerando cerca de 20% de sobrecarga. Isso permite que a Microsoft coloque 30% mais servidores em um data center, limitando a frequência e a potência do servidor. O resultado é uma abordagem mais eficiente e sustentável para as demandas de computação, energia e térmicas de um data center de IA.
Gerenciar os dados para modelos de treinamento traz seu próprio conjunto de problemas; há muitos dados e eles precisam ser distribuídos pelos nós desses supercomputadores Azure. A Microsoft tem trabalhado no que chama de Storage Accelerator para gerenciar esses dados, distribuindo-os entre clusters com um cache que determina se os dados necessários estão disponíveis localmente ou se precisam ser buscados, usando a largura de banda disponível para evitar interferir nas operações atuais. O uso de leituras paralelas para carregar dados permite que grandes quantidades de dados de treinamento sejam carregadas quase duas vezes mais rápido que os carregamentos de arquivos tradicionais.
A IA precisa de redes de alta largura de banda
A computação e o armazenamento são importantes, mas a rede continua crítica, especialmente com enormes cargas de trabalho paralelas de dados trabalhando em centenas de GPUs. Aqui, a Microsoft investiu significativamente em conexões InfiniBand de alta largura de banda, usando 1,2 TBps de conectividade interna em seus servidores, conectando 8 GPUs e, ao mesmo tempo, 400 Gbps entre GPUs individuais em servidores separados.
A Microsoft investiu muito no InfiniBand, tanto em seus supercomputadores de treinamento Open AI quanto em seu atendimento ao cliente. Curiosamente, Russinovich observou que “na verdade, a única diferença entre os supercomputadores que construímos para OpenAI e os que disponibilizamos publicamente é a escala do domínio InfiniBand. No caso do OpenAI, o domínio InfiniBand cobre todo o supercomputador, que é composto por dezenas de milhares de servidores.” Para outros clientes que não têm as mesmas demandas de treinamento, os domínios são menores, mas ainda em escala de supercomputador, “de 1.000 a 2.000 servidores de tamanho, conectando de 10.000 a 20.000 GPUs”.
Toda essa infraestrutura de rede requer algumas soluções surpreendentemente de baixa tecnologia, como trenós impressos em 3D para puxar com eficiência grandes quantidades de cabos. Eles são colocados nas prateleiras de cabos acima dos racks do servidor e puxados. É uma maneira simples de reduzir significativamente o tempo de cabeamento, uma necessidade quando você constrói 30 supercomputadores a cada seis meses.
Tornando a IA confiável: Project Forge e One Pool
O hardware é apenas parte da história do supercomputador Azure. A pilha de software fornece a orquestração da plataforma subjacente e as ferramentas de suporte. É aqui que entra o Project Forge. Você pode pensar nele como algo equivalente a algo como Kubernetes, uma forma de agendar operações em uma infraestrutura distribuída, ao mesmo tempo que fornece gerenciamento de recursos essenciais e distribui cargas entre diferentes tipos de computação de IA.
O agendador do Project Forge trata todos os aceleradores de IA disponíveis no Azure como um único pool de capacidade de GPU virtual, algo que a Microsoft chama de One Pool. As cargas têm níveis de prioridade que controlam o acesso a essas GPUs virtuais. Uma carga de maior prioridade pode expulsar uma de menor prioridade, movendo-a para uma classe diferente de acelerador ou para outra região. O objetivo é fornecer um nível consistente de utilização em toda a plataforma Azure AI para que a Microsoft possa planear e gerir melhor o seu orçamento de energia e rede.
Assim como o Kubernetes, o Project Forge foi projetado para ajudar a executar um serviço mais resiliente, detectando falhas, reiniciando trabalhos e reparando a plataforma host. Ao automatizar estes processos, o Azure pode evitar ter de reiniciar trabalhos dispendiosos e complexos, tratando-os como um conjunto de lotes que podem ser executados individualmente e orquestrar entradas e saídas conforme necessário.
Consistência e segurança: pronto para aplicações de IA
Uma vez construído um modelo de IA, ele precisa ser usado. Mais uma vez, o Azure precisa de uma forma de equilibrar a utilização entre diferentes tipos de modelos e diferentes solicitações dentro desses modelos. Se não houver orquestração (ou orquestração preguiçosa), é fácil chegar a uma posição em que um prompt acabe bloqueando outras operações. Ao aproveitar as suas GPUs virtuais fracionárias, o Project Flywheel do Azure pode garantir o desempenho, intercalando operações de vários prompts em GPUs virtuais, permitindo operações consistentes na GPU física do host, ao mesmo tempo em que fornece uma taxa de transferência constante.
Outra otimização de baixo nível são os recursos de computação confidencial ao treinar modelos personalizados. Você pode executar código e hospedar dados em ambientes de execução confiáveis. O Azure agora pode ter VMs confidenciais completas, incluindo GPUs, com mensagens criptografadas entre ambientes confiáveis de CPU e GPU. Você pode usar isso para treinar ou proteger seus dados privados usados para geração de recuperação aumentada.
A partir da apresentação de Russinovich, fica claro que a Microsoft está investindo pesadamente para tornar sua infraestrutura de IA eficiente e ágil para treinamento e inferência. As equipas de infraestrutura e plataforma do Azure trabalharam muito na construção de hardware e software que possam apoiar a formação dos maiores modelos, ao mesmo tempo que fornecem um local seguro e fiável para utilizar a IA nas suas aplicações.
A execução do Open AI no Azure proporcionou muita experiência a essas equipes, e é bom ver que essa experiência valeu a pena, fornecendo as mesmas ferramentas e técnicas para o restante de nós, mesmo que não precisemos de nossos próprios supercomputadores TOP500.