Como solucionar problemas de latência com meu endpoint do Amazon SageMaker?

Data da última atualização: 14/10/2022

Estou experimentando alta latência ao invocar meu endpoint do Amazon SageMaker.

Breve descrição

Você pode usar o Amazon CloudWatch para monitorar as métricas de latência ModelLatency e OverheadLatency para um endpoint do SageMaker que atende a um único modelo.

  • ModelLatency é o tempo necessário para um modelo responder a uma solicitação de inferência conforme visualizada pelo SageMaker. Essa duração inclui o tempo de comunicação local para enviar a solicitação e buscar a resposta, bem como o tempo necessário para concluir a inferência dentro do contêiner do modelo.
  • OverheadLatency é o tempo necessário para responder a uma solicitação de invocação com despesas gerais do SageMaker. Isso é medido desde o momento em que o SageMaker recebe uma solicitação até retornar uma resposta, menos ModelLatency.

Quando você usa um endpoint multimodelo do SageMaker, as seguintes métricas adicionais estão disponíveis no CloudWatch:

  • ModelLoadingWaitTime é a quantidade de tempo que uma solicitação de invocação aguardou até que o modelo de destino fosse baixado ou carregado antes de realizar a inferência.
  • ModelDownloadingTime é o tempo necessário para baixar o modelo do Amazon Simple Storage Service (Amazon S3).
  • ModelLoadingTime é o tempo necessário para carregar o modelo do contêiner.
  • ModelCacheHit é o número de solicitações de InvokeEndpoint enviadas para o endpoint em que o modelo já foi carregado.

Os endpoints multimodelo carregam e descarregam modelos ao longo de sua vida útil. Você pode ver o número de modelos carregados para um endpoint usando a métrica LoadedModelCount publicada no CloudWatch.

Resolução

Alta ModelLatency

ModelLatency é o tempo gasto para o SageMaker enviar uma solicitação de invocação para o contêiner do modelo e, em seguida, receber o resultado. Isso significa que você pode fazer o seguinte para reduzir essa latência:

  • Compare o modelo fora de um endpoint do SageMaker para testar a performance.
  • Se o seu modelo for compatível com o SageMaker Neo, você poderá compilar o modelo. O SageMaker Neo otimiza os modelos para serem executados até duas vezes mais rápido, com menos de um décimo do consumo de memória, sem perda de precisão.
  • Se o seu modelo tiver suporte pelo AWS Inferentia, você poderá compilá-lo para o Inferentia, que oferece uma throughput até três vezes maior e um custo por inferência até 45% menor em comparação com as instâncias baseadas em GPU da AWS.
  • Se você estiver usando uma instância de CPU e o modelo oferecer suporte à aceleração de GPU, será possível usar uma instância de GPU ou o Amazon Elastic Inference para adicionar aceleração de GPU a uma instância.
    Observação: o código de inferência pode afetar a latência do modelo, dependendo de como o código lida com a inferência. Qualquer atraso no código aumenta a latência.
  • Se um endpoint for usado em excesso, isso poderá causar maior latência do modelo. Você pode adicionar escalabilidade automática a um endpoint para aumentar e diminuir dinamicamente o número de instâncias disponíveis para uma instância.

Alta OverheadLatency

OverheadLatency é o tempo que o SageMaker leva para responder a uma solicitação sem incluir ModelLatency. Vários fatores podem contribuir para OverheadLatency. Esses fatores incluem o tamanho da carga útil da solicitação e das respostas, a frequência da solicitação e a autenticação ou autorização da solicitação.

A primeira invocação para um endpoint pode ter um aumento na latência devido a uma partida a frio. Isso é esperado com as primeiras solicitações de invocação. Para evitar esse problema, você pode enviar solicitações de teste ao endpoint para pré-aquecê-lo. Observe que solicitações pouco frequentes também podem levar a um aumento em OverheadLatency.


Este artigo foi útil?


Precisa de ajuda com faturamento ou suporte técnico?