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
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
- medium.comfonte original
- Categoria
- CEVIU Dados
- Publicado
- 05 de novembro de 2026
- Editoria
- CEVIU Dados
