Pergunta de entrevista para Engenheiro de Machine Learning

A latência p99 do seu modelo é 400 milissegundos e o produto precisa de 50. Como você aborda isso?

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

Resposta rápida

Faça profiling antes de otimizar: quebre os 400 milissegundos em busca de features, pré processamento, a passagem forward do modelo e rede, porque o modelo muitas vezes não é a maior fatia. Depois ataque a maior peça. Ganhos típicos são concorrência nos lookups de feature, cache, quantização, um runtime compilado, um modelo destilado, e tirar trabalho do caminho da requisição. Mire no p99 especificamente, não na média.

Por que os entrevistadores perguntam isso

Esta é uma pergunta de sistemas vestida de ML, e entrevistadores querem ver você medir antes de otimizar. Candidatos que propõem de cara um modelo menor estão chutando. Citar os componentes fora do modelo, principalmente busca de features e serialização, e saber que uma cauda muito acima da mediana normalmente significa enfileiramento ou cold start, são as marcas de quem já operou um serviço.

Como estruturar sua resposta

  • Recuse otimizar antes de ter a decomposição dos 400ms.
  • Cite os componentes que você cronometraria separadamente.
  • Ordene as correções pelo tamanho da fatia que elas atacam.
  • Note que o p99 normalmente aponta para enfileiramento, cold start ou garbage collection.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Eu não tocaria no modelo até ter uma decomposição. Eu tracejo uma requisição fim a fim e cronometro busca de features, desserialização, pré processamento, a passagem forward, pós processamento e rede. Toda vez que eu fiz isso num serviço que parecia lento, o modelo era a minoria do tempo. O último foi por volta de 400 milissegundos no total, com uns 90 no modelo e mais de 200 esperando três lookups sequenciais de feature contra uma store remota. Consertar isso não foi um problema de ML, foi disparar os lookups de forma concorrente e cachear os dois que só mudavam diariamente, e só isso já nos levou a maior parte do caminho. Depois disso eu olho o modelo: batching dinâmico, quantização int8, ou exportar para um runtime compilado como ONNX Runtime ou TensorRT, que em modelos menores costuma ser um ganho de duas a três vezes sem custo de acurácia. A outra coisa sobre o p99 especificamente é que uma cauda tão acima da mediana normalmente não é computação, é enfileiramento sob carga, um cold start numa réplica nova, ou garbage collection. Então eu checo se o p50 já está bom, porque se estiver, a correção é capacidade e pools aquecidos.

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

  • Como o batching dinâmico ajuda o throughput mas prejudica a latência de uma requisição isolada?
  • O que você cachearia, e como você invalidaria?
  • Como você faria teste de carga para achar o ponto em que a cauda explode?

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