Pergunta de entrevista para Engenheiro de Machine Learning

Seu modelo não cabe mais numa única GPU. Quais são suas opções para distribuir o treino?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Se o modelo cabe mas você quer throughput, use paralelismo de dados: replique o modelo, divida o batch, faça all reduce dos gradientes. Se ele não cabe, fragmente. Paralelismo de tensor divide camadas individuais entre dispositivos, paralelismo de pipeline atribui camadas diferentes a estágios diferentes, e fully sharded data parallel divide parâmetros, gradientes e estado do otimizador entre os ranks. Treinos grandes normalmente combinam tudo isso.

Por que os entrevistadores perguntam isso

Isso separa candidatos que treinaram num cluster de candidatos que só usaram uma GPU. O entrevistador quer a distinção entre não cabe e está lento demais, já que essas duas coisas pedem ferramentas diferentes. Citar sharding no estilo FSDP ou ZeRO, e entender que o estado do otimizador costuma dominar a memória em vez dos pesos, é o detalhe que mostra exposição real.

Como estruturar sua resposta

  • Separe o problema de está lento demais do problema de não cabe.
  • Descreva paralelismo de dados e o passo de all reduce.
  • Descreva sharding de tensor e de pipeline em uma linha cada.
  • Cite fragmentar o estado do otimizador e onde a comunicação vira o gargalo.

Exemplo de resposta

Exemplo falado, em primeira pessoa

A primeira pergunta é se não cabe ou se só está lento, porque são problemas diferentes. Se cabe, paralelismo de dados é o ganho fácil: cada GPU guarda uma réplica completa, cada uma pega uma fatia do batch, e você faz all reduce dos gradientes antes do passo. Isso escala bem até o all reduce saturar o seu interconnect. Se realmente não cabe, eu olho a composição da memória primeiro, porque com o Adam o estado do otimizador é aproximadamente o dobro da contagem de parâmetros em fp32, então os pesos costumam ser a minoria do footprint. Isso aponta direto para paralelismo de dados fragmentado, FSDP ou ZeRO estágio três, que divide parâmetros, gradientes e estado do otimizador entre os ranks e os reúne na hora certa. Isso normalmente basta e mantém o modelo de programação simples. Além disso você vai para paralelismo de tensor, dividindo os matmuls dentro de uma camada entre dispositivos, o que precisa de interconnect rápido porque comunica a cada camada, então eu mantenho dentro de um nó. Paralelismo de pipeline coloca camadas diferentes em dispositivos diferentes e você combate o overhead de bolha com micro batching. Antes de tudo isso eu tento gradient checkpointing e precisão mista, porque às vezes só isso já te traz de volta para dentro do limite.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • O que o gradient checkpointing te custa em computação?
  • Por que o paralelismo de tensor quer ficar dentro de um único nó?
  • Como a bolha do pipeline escala com o número de estágios?

Mais perguntas para Engenheiro de Machine Learning

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot