Voltar

Pinterest reduz em até 32% o tempo de avaliação de modelos ao calcular métricas dentro do job de inference com Ray

Aprofundamento CEVIU

Aprofundamento

O texto do Pinterest descreve uma plataforma de avaliação de modelos que junta Ray e Apache Spark, e o ROC-AUC é o exemplo central de por que isso exige cuidado. Antes, o fluxo era em dois estágios: inference com Ray, previsões gravadas no S3 e um job de métricas que relia tudo. Para uma execução de feature importance, isso trazia dois custos: subir e aquecer um cluster só para as métricas e mover dados (escrever e reler do S3). A fonte é um post do time de engenharia do Pinterest, que descreve a plataforma interna deles. Não se trata de uma biblioteca aberta, e nenhum repositório foi localizado.

A solução parte de decomponibilidade. Métricas como MAE são decomponíveis: cada lote gera uma soma e uma contagem, e o merge dá o valor global (no exemplo, 0,65 + 0,80 sobre 8 linhas = 0,18125). O ROC-AUC é holístico: depende do ranking global, e fazer a média do AUC por lote dá 0,875 em vez de 0,9375. A saída é o método da matriz de confusão com limiares fixos, cujas contagens (TP, FP, TN, FN) se somam entre lotes. A limitação é real: é uma aproximação. No exemplo, passo de 0,01 recupera o valor exato porque os scores caem na grade, mas o texto avisa que isso não vale em geral. Métricas por grupo, como Precision@K, exigem buckets que preservam segmentos inteiros, montados por um procedimento Spark.

Com a fusão, a métrica roda por bucket assim que a inference termina, em CPUs que antes ficavam ociosas durante a etapa de GPU, usando o object store compartilhado para reduzir serialização. O benchmark usou um Pin Ranking Model com cerca de 30 mil, 300 mil e 3 milhões de linhas. No conjunto grande, de 1 a 300 experimentos, o runtime fundido cresce de forma aproximada linear (cerca de 43 min fixos mais 41 s por experimento), e o estágio separado de métricas (cerca de 11 s por experimento) é absorvido pela sobreposição. O ganho é de até 32% no tempo ponta a ponta.

Por que isso importa

Para quem opera pipelines de avaliação com muitos experimentos, a leitura é que o gargalo costuma estar na movimentação de dados e no cluster extra, não na conta da métrica. Mas a abordagem cobra um preço de modelagem: a métrica precisa ser reescrita de forma decomponível, e no ROC-AUC isso significa aceitar aproximação por limiares. Vale medir o erro dessa grade no seu caso antes de adotar.

Linha do tempo

  1. Pinterest descreve avaliação com métricas calculadas dentro do job de inference com Ray, com ganho de até 32%.

Perguntas frequentes

Por que não dá para calcular o ROC-AUC por lote e tirar a média?

Porque o AUC depende de como cada linha se ordena em relação a todas as outras, não só às do próprio lote. No exemplo do Pinterest, os lotes dão 1,00 e 0,75, média de 0,875, enquanto o valor global é 0,9375.

Como o Pinterest calcula o ROC-AUC em lotes?

Usa uma matriz de confusão (TP, FP, TN, FN) para um conjunto fixo de limiares entre 0 e 1. Cada lote gera sua matriz, as matrizes são somadas e o AUC sai das taxas TPR e FPR resultantes. O resultado é aproximado e melhora com mais limiares.

Qual foi o ganho medido com a fusão de inference e métricas?

O tempo de avaliação ponta a ponta caiu até 32% em execuções de feature importance. O benchmark mostrou que calcular métricas durante a inference não trouxe aumento de runtime relevante. O custo cresce de forma aproximada linear com o número de experimentos.

O que são métricas group-wise e por que usam buckets?

São métricas definidas dentro de um segmento, como uma requisição, caso do Precision@K. Os buckets agrupam segmentos completos, sem dividir nenhum entre lotes, e têm tamanho suficiente para usar bem os workers do Ray.

Fontes

Avalie este artigo:
Categoria
CEVIU Dados
Publicado
05 de novembro de 2026
Editoria
CEVIU Dados

Quer receber mais sobre CEVIU Dados?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser