Monitoramento Granular de Modelos em Produção
Executar modelos de aprendizado de máquina em ambiente produtivo vai muito além de simplesmente garantir infraestrutura resiliente e escalabilidade eficiente. É preciso manter visibilidade contínua sobre o desempenho e a utilização de recursos. Quando a latência aumenta, invocações falham ou recursos ficam sobrecarregados, é necessário diagnosticar e resolver os problemas rapidamente, antes que eles impactem os clientes.
Até o momento, o Amazon SageMaker AI fornecia métricas do Amazon CloudWatch com visibilidade útil em alto nível. Porém, essas eram métricas agregadas — combinando dados de todas as instâncias e containers. Embora adequadas para monitoramento geral de saúde, essas métricas agregadas obscureciam detalhes de instâncias e containers individuais, dificultando a identificação de gargalos, otimização de recursos e resolução de problemas.
O Que Mudou: Métricas Aprimoradas
O SageMaker AI agora oferece métricas aprimoradas com frequência de publicação configurável. Esse lançamento fornece a visibilidade granular necessária para monitorar, diagnosticar e melhorar endpoints em produção.
Com as métricas aprimoradas do SageMaker AI, é possível agora investigar detalhes em nível de container e instância, oferecendo capacidades como:
- Visualizar métricas de cópias específicas de modelos. Quando múltiplas cópias de modelos são implantadas em um endpoint do SageMaker AI usando Inference Components, é útil visualizar métricas por cópia de modelo, como requisições simultâneas, utilização de GPU e utilização de CPU, para diagnosticar problemas e entender os padrões de tráfego de workloads em produção.
- Calcular o custo de cada modelo. Quando múltiplos modelos compartilham a mesma infraestrutura, calcular o custo real por modelo pode ser complexo. Com métricas aprimoradas, agora é possível calcular e associar custo por modelo rastreando a alocação de GPU em nível de componente de inferência.
Categorias de Métricas Aprimoradas
As métricas aprimoradas introduzem duas categorias com múltiplos níveis de granularidade:
Métricas de Utilização de Recursos EC2
Rastreiam consumo de CPU, GPU e memória em nível de instância e container.
Métricas de Invocação
Monitoram padrões de requisição, erros, latência e concorrência com dimensões precisas.
Cada categoria oferece diferentes níveis de visibilidade dependendo da configuração do endpoint.
Métricas em Nível de Instância
Todos os endpoints do SageMaker AI agora têm acesso a métricas em nível de instância, fornecendo visibilidade do que acontece em cada instância Amazon Elastic Compute Cloud (Amazon EC2) no endpoint.
Utilização de Recursos
Rastreie utilização de CPU, consumo de memória e utilização e consumo de memória por GPU em cada host. Quando um problema ocorre, é possível 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
Monitore padrões de requisição, erros e latência investigando até o nível de instância. Acompanhe invocações, erros 4XX/5XX, latência do modelo e latência de overhead com dimensões precisas que ajudam a identificar exatamente qual instância experimentou problemas. Essas métricas ajudam a diagnosticar distribuição desigual de tráfego, identificar instâncias propensas a erros e correlacionar problemas de performance com recursos específicos.
Métricas em Nível de Container
Se você usa Inference Components para hospedar múltiplos modelos em um único endpoint, agora tem visibilidade em nível de container.
Utilização de Recursos
Monitore consumo de recursos por container. Visualize utilização de CPU, memória, GPU e consumo de memória de GPU para cada cópia de modelo. Essa visibilidade ajuda a entender quais componentes de inferência estão consumindo recursos, manter alocação justa em cenários multi-tenant e identificar containers com problemas de performance. Essas métricas detalhadas incluem dimensões para InferenceComponentName (Nome do Componente de Inferência) e ContainerId (ID do Container).
Métricas de Invocação
Rastreie padrões de requisição, erros e latência em nível de container. Monitore invocações, erros 4XX/5XX, latência do modelo e latência de overhead com dimensões precisas que ajudam a identificar exatamente onde os problemas ocorreram.
Como Configurar Métricas Aprimoradas
Ativar métricas aprimoradas é simples: adicione um parâmetro ao criar a configuração do 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 a Frequência de Publicação
Após ativar métricas aprimoradas, configure a frequência de publicação conforme suas necessidades de monitoramento:
- Resolução Padrão (60 segundos): A frequência padrão oferece visibilidade detalhada para a maioria dos workloads em produção. É suficiente para planejamento de capacidade, resolução de problemas e otimização, mantendo custos do CloudWatch gerenciáveis.
- Alta Resolução (10 ou 30 segundos): Para aplicações críticas que exigem monitoramento quase em tempo real, ative publicação a cada 10 segundos. Isso é valioso para auto-scaling agressivo, padrões de tráfego altamente variáveis ou troubleshooting profundo.
Casos de Uso Práticos
As métricas aprimoradas oferecem valor comercial mensurável em cenários comuns. Exemplos completos estão disponíveis em um notebook.
Rastreamento em Tempo Real de Utilização de GPU em Inference Components
Ao executar múltiplos modelos em infraestrutura compartilhada usando Inference Components, entender a alocação e utilização de GPU é crítico para otimização de custos e ajuste de performance.
Com métricas aprimoradas, é possível consultar alocação de GPU por componente de inferência:
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
)
Essa consulta usa a dimensão GpuId para contar GPUs individuais alocadas a cada componente de inferência. Rastreando a estatística SampleCount, você obtém uma contagem precisa de GPUs em uso para um Inference Component específico, essencial para:
- Validar que alocação de recursos corresponde à sua configuração
- Detectar quando componentes de inferência fazem scale up ou down
- 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. Métricas aprimoradas tornam isso possível através do rastreamento de GPU em nível de container.
Eis como calcular 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
)
Esse cálculo:
- Conta GPUs alocadas ao componente de inferência (e2)
- Calcula custo por período de 10 segundos baseado no custo horário da instância (e3)
- Acumula 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
Métricas aprimoradas habilitam monitoramento abrangente de cluster agregando métricas de todos os componentes de inferência 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
)
Essa consulta oferece:
- Total de GPUs em uso em todos os componentes de inferência (e1)
- Número de instâncias no endpoint (m2)
- GPUs disponíveis para novas implantações (e2)
Essa visibilidade é crucial para planejamento de capacidade e garantir que você tenha recursos suficientes para novas implantações de modelos ou scaling de modelos existentes.
Criando Dashboards Operacionais
O notebook acompanhante 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 utilizadas)
- 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 oferecem 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: Oferece granularidade suficiente para a maioria dos casos, mantendo custos do CloudWatch gerenciáveis. Note que apenas métricas de Utilização geram cobranças — todos os outros tipos são publicados sem custo adicional.
- Use resolução de 10 segundos seletivamente: Ative métricas de alta resolução apenas para endpoints críticos ou durante períodos de troubleshooting.
- Use dimensões estrategicamente: Utilize InferenceComponentName, ContainerId e GpuId para investigar de visualizações em nível de cluster até containers específicos.
- Crie dashboards de alocação de custos: Use expressões RUNNING_SUM para rastrear custos cumulativos por modelo para chargeback e budgeting precisos.
- Configure alarmes sobre capacidade de GPU não utilizada: Monitore a métrica de GPU não utilizada para garantir que você mantenha buffer de capacidade para scaling ou novas implantações.
- Combine com métricas de invocação: Correlacione utilização de recursos com padrões de requisição para entender a relação entre tráfego e consumo de recursos.
Conclusão
As Métricas Aprimoradas para Endpoints do Amazon SageMaker AI transformam como você monitora, melhora e opera workloads de aprendizado de máquina em produção. Ao fornecer visibilidade em nível de container com frequência de publicação configurável, você ganha a inteligência operacional necessária para:
- Atribuir custos com precisão a modelos individuais em implantações multi-tenant
- Monitorar alocação e utilização de GPU em tempo real em componentes de inferência
- Rastrear disponibilidade de recursos em nível de cluster para planejamento de capacidade
- Resolver problemas de performance com métricas granulares e precisas
A combinação de métricas detalhadas, frequência de publicação flexível e dimensões ricas permite construir soluções de monitoramento sofisticadas que crescem com suas operações de aprendizado de máquina. Seja executando um único modelo ou gerenciando dezenas de componentes de inferência em múltiplos endpoints, métricas aprimoradas oferecem a visibilidade necessária para executar IA eficientemente em escala.
Comece hoje ativando métricas aprimoradas em seus endpoints do SageMaker AI e explore o notebook acompanhante para exemplos de implementação completos e funções auxiliares reutilizáveis.
Fonte
Enhanced metrics for Amazon SageMaker AI endpoints: deeper visibility for better performance (https://aws.amazon.com/blogs/machine-learning/enhanced-metrics-for-amazon-sagemaker-ai-endpoints-deeper-visibility-for-better-performance/)