Otimizando ML em Produção com Métricas Aprimoradas do SageMaker AI
Uma Nova Era de Visibilidade para Modelos de ML em Produção
Executar modelos de Machine Learning (ML) em produção vai além de infraestrutura resiliente e escalabilidade eficiente. Requer visibilidade contínua sobre o desempenho e a utilização de recursos. Quando a latência aumenta, invocações falham ou recursos se tornam restritos, é crucial ter insights imediatos para diagnosticar e resolver problemas antes que impactem seus clientes.
Até recentemente, o Amazon SageMaker AI fornecia métricas do Amazon CloudWatch que ofereciam uma visibilidade útil de alto nível, mas eram métricas agregadas em todas as instâncias e contêineres. Embora úteis para o monitoramento geral da saúde, essas métricas agregadas obscureciam detalhes de instâncias e contêineres individuais, dificultando a identificação de gargalos, a melhoria da utilização de recursos ou a resolução eficaz de problemas.
Os endpoints do SageMaker AI agora suportam métricas aprimoradas com frequência de publicação configurável. Este lançamento proporciona a visibilidade granular necessária para monitorar, solucionar problemas e aprimorar seus endpoints de produção. Com as métricas aprimoradas dos endpoints do SageMaker AI, podemos agora aprofundar em métricas de nível de contêiner e de instância, oferecendo capacidades como:
- Visualizar métricas específicas de cópias de modelos. Com múltiplas cópias de modelos implantadas em um endpoint do SageMaker AI usando Inference Components, é útil visualizar métricas por cópia de modelo, como solicitações concorrentes, utilização de GPU e utilização de CPU, para ajudar a diagnosticar problemas e fornecer visibilidade sobre os padrões de tráfego da carga de trabalho de produção.
- Visualizar quanto cada modelo custa. Com múltiplos modelos compartilhando a mesma infraestrutura, calcular o custo real por modelo pode ser complexo. Com as métricas aprimoradas, podemos agora calcular e associar o custo por modelo rastreando a alocação de GPU no nível do Inference Component.
O Que Há de Novo
As métricas aprimoradas introduzem duas categorias de métricas com múltiplos níveis de granularidade:
- Métricas de Utilização de Recursos EC2: Acompanham o consumo de CPU, GPU e memória nos níveis de instância e contêiner.
- Métricas de Invocação: Monitoram padrões de solicitação, erros, latência e concorrência com dimensões precisas.
Cada categoria oferece diferentes níveis de visibilidade dependendo da configuração do seu endpoint.
Métricas de Nível de Instância: Disponíveis para Todos os Endpoints
Todo endpoint do SageMaker AI agora tem acesso a métricas de nível de instância, oferecendo visibilidade sobre o que está acontecendo em cada instância do Amazon Elastic Compute Cloud (Amazon EC2) em seu endpoint.
-
Utilização de Recursos (Namespace do CloudWatch:
/aws/sagemaker/Endpoints) Acompanhe a utilização de CPU, consumo de memória e utilização e uso de memória por GPU para cada host. Quando um problema ocorre, você pode identificar imediatamente qual instância específica precisa de atenção. Para instâncias baseadas em aceleradores, você verá métricas de utilização para cada acelerador individual. -
Métricas de Invocação (Namespace do CloudWatch:
AWS/SageMaker) Acompanhe os padrões de solicitação, erros e latência detalhando-se até o nível da instância. Monitore invocações, erros 4XX/5XX, latência do modelo e latência de sobrecarga com dimensões precisas que ajudam a identificar exatamente qual instância teve problemas. Essas métricas ajudam a diagnosticar distribuição desigual de tráfego, identificar instâncias propensas a erros e correlacionar problemas de desempenho com recursos específicos.
Métricas de Nível de Contêiner: Para Inference Components
Se você está usando Inference Components para hospedar múltiplos modelos em um único endpoint, agora você tem visibilidade em nível de contêiner.
-
Utilização de Recursos (Namespace do CloudWatch:
/aws/sagemaker/InferenceComponents) Monitore o consumo de recursos por contêiner. Veja a utilização de CPU, memória, GPU e uso de memória da GPU para cada cópia de modelo. Essa visibilidade ajuda você a entender quais cópias de modelo do Inference Component estão consumindo recursos, manter uma alocação justa em cenários multi-tenant e identificar contêineres que estão enfrentando problemas de desempenho. Essas métricas detalhadas incluem dimensões paraInferenceComponentNameeContainerId. -
Métricas de Invocação (Namespace do CloudWatch:
AWS/SageMaker) Acompanhe padrões de solicitação, erros e latência no nível do contêiner. Monitore invocações, erros 4XX/5XX, latência do modelo e latência de sobrecarga com dimensões precisas que ajudam a identificar exatamente onde os problemas ocorreram.
Configurando Métricas Aprimoradas
Habilite as métricas aprimoradas adicionando um parâmetro ao criar sua configuração de endpoint:
response = sagemaker_client.create_endpoint_config(
EndpointConfigName='my-config',
ProductionVariants=[{
'VariantName': 'AllTraffic',
'ModelName': 'my-model',
'InstanceType': 'ml.g6.12xlarge',
'InitialInstanceCount': 2
}],
MetricsConfig={
'EnableEnhancedMetrics': True,
'MetricsPublishFrequencyInSeconds': 10, # Default 60s
}
)
Escolhendo Sua Frequência de Publicação
Depois de habilitar as métricas aprimoradas, configure a frequência de publicação com base nas suas necessidades de monitoramento:
- Resolução padrão (60 segundos): A frequência padrão oferece visibilidade detalhada para a maioria das cargas de trabalho de produção. Isso é suficiente para planejamento de capacidade, solução de problemas e otimização, mantendo os custos gerenciáveis.
- Alta resolução (10 ou 30 segundos): Para aplicações críticas que necessitam de monitoramento quase em tempo real, habilite a publicação a cada 10 segundos. Isso é valioso para autoescalonamento agressivo, padrões de tráfego altamente variáveis ou solução de problemas profundos.
Casos de Uso de Exemplo
As métricas aprimoradas entregam valor prático em diversos cenários, todos disponíveis em um notebook de exemplo:
Rastreamento de Utilização de GPU em Tempo Real entre Inference Components
Ao executar vários modelos em infraestrutura compartilhada usando Inference Components, entender a alocação e utilização da GPU é fundamental para a otimização de custos e o ajuste de desempenho. Com métricas aprimoradas, você pode consultar a alocação de GPU por Inference Component:
response = cloudwatch.get_metric_data(
MetricDataQueries=[ {
'Id': 'm1',
'Expression': 'SEARCH(\'{/aws/sagemaker/InferenceComponents,InferenceComponentName,GpuId} MetricName="GPUUtilizationNormalized" InferenceComponentName="IC-my-model"\', \'SampleCount\', 10)'
}, {
'Id': 'e1',
'Expression': 'SUM(m1)' # Returns GPU count
} ],
StartTime=start_time,
EndTime=end_time
)
Esta consulta utiliza a dimensão GpuId para contar GPUs individuais alocadas a cada Inference Component. Ao rastrear a estatística SampleCount, você obtém uma contagem precisa de GPUs em uso para um Inference Component específico, o que é essencial para:
- Validar que a alocação de recursos corresponde à sua configuração.
- Detectar quando Inference Components escalam para cima ou para baixo.
- Calcular custos por GPU para modelos de chargeback.
Atribuição de Custo por Modelo em Implantações Multi-Modelo
Uma das capacidades mais solicitadas é entender o custo real de cada modelo quando múltiplos modelos compartilham a mesma infraestrutura de endpoint. As métricas aprimoradas tornam isso possível através do rastreamento de GPU em nível de contêiner. Veja como calcular o custo cumulativo por modelo:
response = cloudwatch.get_metric_data(
MetricDataQueries=[ {
'Id': 'e1',
'Expression': 'SEARCH(\'{/aws/sagemaker/InferenceComponents,InferenceComponentName,GpuId} MetricName="GPUUtilizationNormalized" InferenceComponentName="IC-my-model"\', \'SampleCount\', 10)'
}, {
'Id': 'e2',
'Expression': 'SUM(e1)' # GPU count
}, {
'Id': 'e3',
'Expression': 'e2 * 5.752 / 4 / 360' # Cost per 10s based on ml.g6.12xlarge hourly cost
}, {
'Id': 'e4',
'Expression': 'RUNNING_SUM(e3)' # Cumulative cost
} ],
StartTime=start_time, EndTime=end_time
)
Este cálculo:
- Conta as GPUs alocadas ao Inference Component (
e2). - Calcula o custo por período de 10 segundos com base no custo horário da instância (
e3). - Acumula o custo total ao longo do tempo usando
RUNNING_SUM(e4).
Por exemplo, com uma instância ml.g6.12xlarge (\$5,752/hora para 4 GPUs), se seu modelo usa 4 GPUs, o custo por 10 segundos é de \$0,016. O RUNNING_SUM fornece um total continuamente crescente, perfeito para dashboards e rastreamento de custos.
Monitoramento de Recursos em Nível de Cluster
As métricas aprimoradas permitem um monitoramento abrangente do cluster, agregando métricas de todos os Inference Components em um endpoint:
response = cloudwatch.get_metric_data(
MetricDataQueries=[ {
'Id': 'e1',
'Expression': 'SUM(SEARCH(\'{/aws/sagemaker/InferenceComponents,EndpointName,GpuId} MetricName="GPUUtilizationNormalized" EndpointName="my-endpoint"\', \'SampleCount\', 10))'
}, {
'Id': 'm2',
'MetricStat': {
'Metric': {
'Namespace': '/aws/sagemaker/Endpoints',
'MetricName': 'CPUUtilizationNormalized',
'Dimensions': [ {
'Name': 'EndpointName',
'Value': 'my-endpoint'
}, {
'Name': 'VariantName',
'Value': 'AllTraffic'
}
] },
'Period': 10,
'Stat': 'SampleCount' # Returns instance count
}
}, {
'Id': 'e2',
'Expression': 'm2 * 4 - e1' # Free GPUs (assuming 4 GPUs per instance)
} ],
StartTime=start_time, EndTime=end_time
)
Esta consulta fornece:
- Total de GPUs em uso em todos os Inference Components (
e1). - Número de instâncias no endpoint (
m2). - GPUs disponíveis para novas implantações (
e2).
Essa visibilidade é crucial para o planejamento de capacidade e para garantir que você tenha recursos suficientes para novas implantações de modelos ou para escalar os existentes.
Criando Dashboards Operacionais
O notebook de acompanhamento demonstra como criar dashboards do CloudWatch programaticamente que combinam essas métricas:
from endpoint_metrics_helper import create_dashboard
create_dashboard(
dashboard_name='my-endpoint-monitoring',
endpoint_name='my-endpoint',
inference_components=[ {
'name': 'IC-model-a',
'label': 'MODEL_A'
}, {
'name': 'IC-model-b',
'label': 'MODEL_B'
} ],
cost_per_hour=5.752,
region='us-east-1'
)
Isso cria um dashboard com:
- Utilização de recursos em nível de cluster (instâncias, GPUs usadas/não usadas).
- Rastreamento de custo por modelo com totais cumulativos.
- Custo em tempo real por período de 10 segundos.
O notebook também inclui widgets interativos para análise ad-hoc:
from endpoint_metrics_helper import create_metrics_widget, create_cost_widget
# Cluster metrics
create_metrics_widget('my-endpoint')
# Per-model cost analysis
create_cost_widget ('IC-model-a', cost_per_hour=5.752)
Esses widgets fornecem seleção de intervalo de tempo (últimos 5/10/30 minutos, 1 hora ou intervalo personalizado) e exibem:
- Número de instâncias.
- GPUs totais/usadas/livres.
- Custo cumulativo por modelo.
- Custo por período de 10 segundos.
Melhores Práticas
- Comece com resolução de 60 segundos: Isso fornece granularidade suficiente para a maioria dos casos de uso, mantendo os custos do CloudWatch gerenciáveis. Note que apenas as métricas de Utilização geram cobranças no CloudWatch. Todos os outros tipos de métricas são publicados sem custo adicional.
- Use resolução de 10 segundos seletivamente: Habilite métricas de alta resolução apenas para endpoints críticos ou durante períodos de solução de problemas.
- Use dimensões estrategicamente: Utilize as dimensões
InferenceComponentName,ContainerIdeGpuIdpara detalhar de visualizações de cluster para contêineres específicos. - Crie dashboards de alocação de custos: Use expressões
RUNNING_SUMpara rastrear custos cumulativos por modelo para chargeback e orçamentação precisos. - Configure alarmes para capacidade de GPU não utilizada: Monitore a métrica de GPU não utilizada para garantir que você mantenha capacidade de buffer para escalabilidade ou novas implantações.
- Combine com métricas de invocação: Correlacione a utilização de recursos com os padrões de solicitação para entender a relação entre tráfego e consumo de recursos.
As Métricas Aprimoradas para Endpoints do Amazon SageMaker AI transformam a forma como você monitora, aprimora e opera cargas de trabalho de ML em produção. Ao fornecer visibilidade em nível de contêiner com frequência de publicação configurável, você obtém a inteligência operacional necessária para:
- Atribuir custos com precisão a modelos individuais em implantações multi-tenant.
- Monitorar a alocação e utilização de GPU em tempo real entre Inference Components.
- Rastrear a disponibilidade de recursos em nível de cluster para planejamento de capacidade.
- Solucionar problemas de desempenho com métricas precisas e granulares.
A combinação de métricas detalhadas, frequência de publicação flexível e dimensões ricas ajuda a construir soluções de monitoramento sofisticadas que escalam com suas operações de ML. Seja você executando um único modelo ou gerenciando dezenas de Inference Components em múltiplos endpoints, as métricas aprimoradas fornecem a visibilidade que você precisa para executar IA eficientemente em escala.
Comece hoje mesmo habilitando as métricas aprimoradas em seus endpoints do SageMaker AI e explore o notebook de acompanhamento para exemplos completos de implementação e funções auxiliares reutilizáveis.
Aguardando Login...