Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.

Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra do Amazon SageMaker

Amazon Sage Maker agora permite que você compare o desempenho de uma nova versão de uma pilha de serviço de modelo com a versão implantada atualmente antes de um lançamento de produção completo usando uma prática de segurança de implantação conhecida como teste de sombra. O teste de sombra pode ajudá-lo a identificar possíveis erros de configuração e problemas de desempenho antes que eles afetem os usuários finais. Com o SageMaker, você não precisa investir na construção de sua infraestrutura de teste de sombra, permitindo que você se concentre no desenvolvimento do modelo. O SageMaker cuida da implantação da nova versão junto com a versão atual atendendo às solicitações de produção, roteando uma parte das solicitações para a versão sombra. Você pode então comparar o desempenho das duas versões usando métricas como latência e taxa de erro. Isso lhe dá mais confiança de que as distribuições de produção para os endpoints de inferência do SageMaker não causarão regressões de desempenho e ajudam a evitar interrupções devido a configurações incorretas acidentais.

Nesta postagem, demonstramos esse novo recurso do SageMaker. O notebook de amostra correspondente está disponível neste GitHub repositório.

Visão geral da solução

Sua infraestrutura de serviço de modelo consiste no modelo de aprendizado de máquina (ML), no contêiner de serviço ou na instância de computação. Vamos considerar os seguintes cenários:

  • Você está pensando em promover um novo modelo que foi validado off-line para produção, mas deseja avaliar as métricas de desempenho operacional, como latência, taxa de erro e assim por diante, antes de tomar essa decisão.
  • Você está considerando mudanças em seu contêiner de infraestrutura de serviço, como correção de vulnerabilidades ou atualização para versões mais recentes, e deseja avaliar o impacto dessas mudanças antes da promoção para produção.
  • Você está pensando em alterar sua instância de ML e deseja avaliar o desempenho da nova instância com solicitações de inferência em tempo real.

O diagrama a seguir ilustra nossa arquitetura de solução.

Para cada um desses cenários, selecione uma variante de produção com a qual deseja testar e o SageMaker implanta automaticamente a nova variante no modo de sombra e encaminha uma cópia das solicitações de inferência para ela em tempo real no mesmo endpoint. Somente as respostas da variante de produção são retornadas ao aplicativo chamador. Você pode optar por descartar ou registrar as respostas da variante de sombra para comparação offline. Opcionalmente, você pode monitorar as variantes por meio de um painel integrado com uma comparação lado a lado das métricas de desempenho. Você pode usar esse recurso por meio das APIs de terminal de atualização de inferência do SageMaker ou por meio do console do SageMaker.

As variantes de sombra se baseiam no recurso de variante de produção nos pontos de extremidade de inferência do SageMaker. Para reiterar, um variante de produção consiste no modelo de ML, contêiner de serviço e instância de ML. Como cada variante é independente das outras, você pode ter diferentes modelos, contêineres ou tipos de instância entre as variantes. O SageMaker permite que você especifique políticas de dimensionamento automático por variante para que possam ser dimensionadas independentemente com base na carga de entrada. O SageMaker suporta até 10 variantes de produção por endpoint. Você pode configurar uma variante para receber uma parte do tráfego de entrada definindo pesos de variante ou especificar a variante de destino na solicitação de entrada. A resposta da variante de produção é encaminhada de volta para o invocador.

A variante de sombra (novo) tem os mesmos componentes que uma variante de produção. Uma parte das solicitações especificada pelo usuário, conhecida como porcentagem de amostragem de tráfego, é encaminhado para a variante de sombra. Você pode optar por registrar a resposta da variante de sombra em Serviço de armazenamento simples da Amazon (Amazon S3) ou descarte-o.

Observe que o SageMaker dá suporte a no máximo uma variante de sombra por endpoint. Para um endpoint com uma variante de sombra, pode haver no máximo uma variante de produção.

Depois de configurar as variantes de produção e sombra, você pode monitorar o métricas de invocação para variantes de produção e sombra em Amazon CloudWatch sob a AWS/SageMaker namespace. Todas as atualizações no endpoint SageMaker são orquestradas usando implantações azul/verde e ocorrer sem qualquer perda de disponibilidade. Seus endpoints continuarão respondendo às solicitações de produção à medida que você adiciona, modifica ou remove variantes de sombra.

Você pode usar esse recurso de duas maneiras:

  • Teste de sombra gerenciado usando o console SageMaker – Você pode aproveitar o console para uma experiência guiada para gerenciar a jornada de ponta a ponta do teste de sombra. Isso permite configurar testes de sombra por um período de tempo predefinido, monitorar o progresso por meio de um painel ao vivo, limpar após a conclusão e agir de acordo com os resultados.
  • Teste de sombra de autoatendimento usando as APIs de inferência do SageMaker – Se o seu fluxo de trabalho de implantação já usa APIs de criação/atualização/exclusão de ponto de extremidade, você pode continuar a usá-las para gerenciar variantes de sombra.

Nas seções a seguir, percorremos cada um desses cenários.

Cenário 1 – Teste de sombra gerenciado usando o console SageMaker

Se você deseja escolher o SageMaker para gerenciar o fluxo de trabalho completo de criação, gerenciamento e ação sobre os resultados dos testes de sombra, considere usar o recurso de testes de sombra na seção Inferência do console do SageMaker. Conforme declarado anteriormente, isso permite configurar testes de sombra por um período de tempo predefinido, monitorar o progresso por meio de um painel ao vivo, apresentar opções de limpeza após a conclusão e agir de acordo com os resultados. Para saber mais, visite os testes de sombra seção de nossa documentação para obter uma explicação passo a passo desse recurso.

Pré-requisitos

Os modelos para produção e sombra precisam ser criados no SageMaker. Por favor, consulte o CreateModel API SUA PARTICIPAÇÃO FAZ A DIFERENÇA.

Passo 1 – Crie um teste de sombra

Navegue até a Inferência seção do painel de navegação esquerdo do console do SageMaker e, em seguida, escolha Testes de sombra. Isso o levará a um painel com todos os testes de sombra agendados, em execução e concluídos. Clique em 'criar um teste de sombra'. Digite um nome para o teste e escolha próximo.

Isso o levará à página de configurações do teste de sombra. Você pode escolher uma função IAM existente ou criar uma que tenha o AmazonSageMakerFullAccess Política IAM anexada. Em seguida, escolha 'Criar um novo endpoint' e digite um nome (xgb-prod-shadow-1). Você pode adicionar uma produção e uma variante de sombra associada a este endpoint clicando em 'Adicionar' na seção Variantes. Você pode selecionar os modelos que você criou no 'Adicionar modelo' caixa de diálogo. Isso cria uma produção ou variante. Opcionalmente, você pode alterar o tipo de instância e a contagem associada a cada variante.

Todo o tráfego vai para a variante de produção e responde a solicitações de chamada. Você pode controlar uma parte das solicitações que é roteada para a variante shadow alterando o Traffic Sampling Percentage.

Você pode controlar a duração do teste de uma hora a 30 dias. Se não especificado, o padrão é 7 dias. Após esse período, o teste é marcado como concluído. Se você estiver executando um teste em um terminal existente, ele será revertido para o estado anterior ao início do teste após a conclusão.

Você pode, opcionalmente, capturar as solicitações e respostas da variante Shadow usando o Captura de Dados opções. Se não for especificado, as respostas da variante de sombra são descartadas.

Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.

Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.

Passo 2 – Monitorar um teste de sombra

Você pode visualizar a lista de testes de sombra navegando até o Shadow Tests seção sob Inferência. Clique no teste de sombra criado na etapa anterior para visualizar os detalhes de um teste de sombra e monitorá-lo enquanto estiver em andamento ou após sua conclusão.

Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.

A seção Métricas fornece uma comparação das principais métricas e fornece gráficos sobrepostos entre as variantes de produção e sombra, juntamente com estatísticas descritivas. Você pode comparar métricas de invocação, como ModelLatency e Invocation4xxErrors bem como métricas de instância, como CPUUtilization e DiskUtilization.

Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.

Passo 3 – Promova a variante Shadow para a nova variante de produção

Ao comparar, você pode optar por promover a variante de sombra para ser a nova variante de produção ou remover a variante de sombra. Para ambas as opções, selecione 'Marcar como concluído' no topo da página. Isso apresenta a opção de promover ou remover a variante de sombra.

Se optar por promover, você será direcionado para uma página de implantação, onde poderá confirmar as configurações da variante antes da implantação. Antes da implantação, recomendamos dimensionar suas variantes de sombra para poder lidar com 100% do tráfego de invocação. Se você não estiver usando o teste de sombra para avaliar tipos ou tamanhos de instância alternativos, poderá usar a opção 'reter configurações de variante de produção. Caso contrário, você pode optar por 'manter configurações de variante de sombra. Se você escolher esta opção, certifique-se de que sua amostragem de tráfego esteja definida em 100%. Como alternativa, você pode especificar o tipo de instância e a contagem se desejar substituir essas configurações.

Depois de confirmar a implantação, o SageMaker iniciará uma atualização em seu endpoint para promover a variante de sombra à nova variante de produção. Assim como todas as atualizações do SageMaker, seu endpoint ainda estará operacional durante a atualização.

Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.

Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.

Cenário 2: teste de sombra usando APIs de inferência do SageMaker

Esta seção aborda como usar as APIs existentes de criar/atualizar/excluir endpoints do SageMaker para implantar variantes de sombra.

Para este exemplo, temos dois modelos XGBoost que representam duas versões diferentes dos modelos que foram pré-treinados. model.tar.gz é o modelo atualmente implantado na produção. model2 é o modelo mais novo e queremos testar seu desempenho em termos de métricas operacionais, como latência, antes de decidir usá-lo na produção. nós implantamos model2 como uma variante de sombra de model.tar.gz. Ambos os modelos pré-treinados são armazenados no bucket S3 público s3://sagemaker-sample-files. Primeiro, baixamos o modelo de nossa instância de computação local e, em seguida, carregamos para o S3.

Os modelos neste exemplo são usados ​​para prever a probabilidade de um cliente móvel deixar sua operadora móvel atual. O conjunto de dados que usamos está disponível publicamente e foi mencionado no livro Descobrindo conhecimento em dados por Daniel T. Larose. Esses modelos foram treinados com o Caderno de previsão de rotatividade XGB no SageMaker. Você também pode usar seus próprios modelos pré-treinados, caso em que você pode pular o download de s3://sagemaker-sample-files e copie seus próprios modelos diretamente para o modelo/pasta.

!aws s3 cp s3://sagemaker-sample-files/models/xgb-churn/xgb-churn-prediction-model.tar.gz model/
!aws s3 cp s3://sagemaker-sample-files/models/xgb-churn/xgb-churn-prediction-model2.tar.gz model/

Passo 1 – Criar modelos

Carregamos os arquivos de modelo em nosso próprio bucket S3 e criamos dois modelos SageMaker. Veja o seguinte código:

model_url = S3Uploader.upload(
    local_path="model/xgb-churn-prediction-model.tar.gz",
    desired_s3_uri=f"s3://{bucket}/{prefix}",
)
model_url2 = S3Uploader.upload(
    local_path="model/xgb-churn-prediction-model2.tar.gz",
    desired_s3_uri=f"s3://{bucket}/{prefix}",
from sagemaker import image_uris
image_uri = image_uris.retrieve("xgboost", boto3.Session().region_name, "0.90-1")
image_uri2 = image_uris.retrieve("xgboost", boto3.Session().region_name, "0.90-2")

model_name = f"DEMO-xgb-churn-pred-{datetime.now():%Y-%m-%d-%H-%M-%S}"
model_name2 = f"DEMO-xgb-churn-pred2-{datetime.now():%Y-%m-%d-%H-%M-%S}"

resp = sm.create_model(
    ModelName=model_name,
    ExecutionRoleArn=role,
    Containers=[{"Image": image_uri, "ModelDataUrl": model_url}],
)

resp = sm.create_model(
    ModelName=model_name2,
    ExecutionRoleArn=role,
    Containers=[{"Image": image_uri2, "ModelDataUrl": model_url2}],
)

Etapa 2 – Implantar os dois modelos como variantes de produção e sombra em um endpoint de inferência em tempo real

Criamos uma configuração de endpoint com as variantes de produção e sombra. o ProductionVariants e ShadowProductionVariants são de particular interesse. Ambas as variantes têm instâncias ml.m5.xlarge com 4 vCPUs e 16 GiB de memória, e a contagem inicial de instâncias é definida como 1. Veja o seguinte código:

ep_config_name = f"Shadow-EpConfig-{datetime.now():%Y-%m-%d-%H-%M-%S}"
production_variant_name = "production"
shadow_variant_name = "shadow"
create_endpoint_config_response = sm.create_endpoint_config(
    EndpointConfigName=ep_config_name,
    ProductionVariants=[
    # Type: Array of ProductionVariant (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html) objects
      { 
         "VariantName": shadow_variant_name,
        {
            "VariantName": production_variant_name,
            "ModelName": model_name,
            "InstanceType": "ml.m5.xlarge",
            "InitialInstanceCount": 2,
            "InitialVariantWeight": 1,
        }
    ],
     # Type: Array of ShadowProductionVariants 
    ShadowProductionVariants = [
         "ModelName": model_name2,
         "InitialInstanceCount": 1,
         "InitialVariantWeight": 0.5,
         "InstanceType": "ml.m5.xlarge" 
      }
   ]
)

Por fim, criamos a variante de produção e sombra:

endpoint_name = f"xgb-prod-shadow-{datetime.now():%Y-%m-%d-%H-%M-%S}"
create_endpoint_api_response = sm.create_endpoint(
                                    EndpointName=endpoint_name,
                                    EndpointConfigName=ep_config_name,
                                )

Passo 3 – Invoque o endpoint para teste

Após a criação bem-sucedida do ponto de extremidade, você pode começar a invocá-lo. Enviamos cerca de 3,000 solicitações de forma sequencial:

def invoke_endpoint(endpoint_name, wait_interval_sec=0.01, should_raise_exp=False):
    with open("test_data/test-dataset-input-cols.csv", "r") as f:
        for row in f:
            payload = row.rstrip("n")
            try:
                for i in range(10): #send the same payload 10 times for testing purpose
                    response = sm_runtime.invoke_endpoint(
                        EndpointName=endpoint_name, ContentType="text/csv", Body=payload
                    )
            except Exception as e:
                print("E", end="", flush=True)
                if should_raise_exp:
                    raise e

invoke_endpoint(endpoint_name)

Passo 4 – Compare as métricas

Agora que implantamos os modelos de produção e de sombra, vamos comparar as métricas de invocação. Para obter uma lista de métricas de invocação disponíveis para comparação, consulte Monitore o Amazon SageMaker com o Amazon CloudWatch. Vamos começar comparando invocações entre as variantes de produção e sombra.

A InvocationsPerInstance métrica refere-se ao número de invocações enviadas para a variante de produção. Uma fração dessas invocações, especificadas no peso da variante, são enviadas para a variante de sombra. A invocação por instância é calculada dividindo o número total de invocações pelo número de instâncias em uma variante. Conforme mostrado nos gráficos a seguir, podemos confirmar que as variantes de produção e sombra estão recebendo solicitações de invocação de acordo com os pesos especificados na configuração do endpoint.

Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.

Em seguida, vamos comparar a latência do modelo (ModelLatency métrica) entre as variantes de produção e sombra. A latência do modelo é o tempo que um modelo leva para responder conforme visualizado no SageMaker. Podemos observar como a latência do modelo da variante de sombra se compara com a variante de produção sem expor os usuários finais à variante de sombra.

Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.

Esperamos que a latência de sobrecarga (OverheadLatency métrica) para ser comparável entre as variantes de produção e sombra. A latência de sobrecarga é o intervalo medido desde o momento em que o SageMaker recebe a solicitação até retornar uma resposta ao cliente, menos a latência do modelo.

Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.

Etapa 5- Promova sua variante de sombra

Para promover o modelo de sombra para produção, crie uma nova configuração de endpoint com a atual ShadowProductionVariant como o novo ProductionVariant e remova o ShadowProductionVariant. Isso removerá a corrente ProductionVariant e promova a variante de sombra para se tornar a nova variante de produção. Como sempre, todas as atualizações do SageMaker são orquestradas como implantações azul/verde sob o capô e não há perda de disponibilidade durante a execução da atualização.

Opcionalmente, você pode aproveitar Guarda-corpos de implantação se você quiser usar a mudança de tráfego de uma só vez e as reversões automáticas durante a atualização.

promote_ep_config_name = f"PromoteShadow-EpConfig-{datetime.now():%Y-%m-%d-%H-%M-%S}"

create_endpoint_config_response = sm.create_endpoint_config(
    EndpointConfigName=promote_ep_config_name,
    ProductionVariants=[
        {
            "VariantName": shadow_variant_name,
            "ModelName": model_name2,
            "InstanceType": "ml.m5.xlarge",
            "InitialInstanceCount": 2,
            "InitialVariantWeight": 1.0,
        }
    ],
)
print(f"Created EndpointConfig: {create_endpoint_config_response['EndpointConfigArn']}")

update_endpoint_api_response = sm.update_endpoint(
    EndpointName=endpoint_name,
    EndpointConfigName=promote_ep_config_name,
)

wait_for_endpoint_in_service(endpoint_name)

sm.describe_endpoint(EndpointName=endpoint_name)

Passo 6 – Limpeza

Se você não planeja usar mais esse ponto de extremidade, exclua o ponto de extremidade para evitar cobranças adicionais e limpar outros recursos criados neste blog.

dsm.delete_endpoint(EndpointName=endpoint_name)
sm.delete_endpoint_config(EndpointConfigName=ep_config_name)
sm.delete_endpoint_config(EndpointConfigName=promote_ep_config_name)
sm.delete_model(ModelName=model_name)
sm.delete_model(ModelName=model_name2)

Conclusão

Nesta postagem, apresentamos um novo recurso de inferência do SageMaker para comparar o desempenho da nova versão de uma pilha de serviço de modelo com a versão atualmente implantada antes de um lançamento de produção completo usando uma prática de segurança de implantação conhecida como teste de sombra. Orientamos você pelas vantagens de usar variantes de sombra e métodos para configurar as variantes com um exemplo ponta a ponta. Para saber mais sobre variantes de sombra, consulte testes de sombra documentação.


Sobre os autores

Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.Raghu Ramesha é arquiteto de soluções de aprendizado de máquina da equipe Amazon SageMaker Service. Ele se concentra em ajudar os clientes a criar, implantar e migrar cargas de trabalho de produção de ML para o SageMaker em escala. Ele é especialista em domínios de aprendizado de máquina, IA e visão computacional e possui mestrado em Ciência da Computação pela UT Dallas. Nas horas vagas gosta de viajar e fotografar.

Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.Qingwei Li é especialista em aprendizado de máquina na Amazon Web Services. Ele recebeu seu Ph.D. em Pesquisa Operacional depois que ele quebrou a conta de bolsa de pesquisa de seu orientador e não entregou o Prêmio Nobel que prometeu. Atualmente, ele ajuda os clientes do setor de seguros e serviços financeiros a criar soluções de aprendizado de máquina na AWS. Nas horas vagas, gosta de ler e ensinar.

Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.Qiyun Zhao é engenheiro de desenvolvimento de software sênior da equipe da plataforma de inferência do Amazon SageMaker. Ele é o principal desenvolvedor de Deployment Guardrails e Shadow Deployments e se concentra em ajudar os clientes a gerenciar cargas de trabalho e implantações de ML em escala com alta disponibilidade. Ele também trabalha em evoluções de arquitetura de plataforma para implantação rápida e segura de trabalhos de ML e execução de experimentos on-line de ML com facilidade. Em seu tempo livre, ele gosta de ler, jogar e viajar.

Minimize o impacto na produção das atualizações do modelo de ML com o teste de sombra PlatoBlockchain Data Intelligence do Amazon SageMaker. Pesquisa vertical. Ai.Tarun Sairam é gerente de produto sênior do Amazon SageMaker Inference. Ele está interessado em aprender sobre as últimas tendências em aprendizado de máquina e ajudar os clientes a aproveitá-las. Em seu tempo livre, ele gosta de andar de bicicleta, esquiar e jogar tênis.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS