Habilite CI/CD de endpoints multirregionais do Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Habilitar CI/CD de endpoints multirregionais do Amazon SageMaker

Amazon Sage Maker e Terminais de inferência do SageMaker forneça a capacidade de treinar e implantar suas cargas de trabalho de IA e aprendizado de máquina (ML). Com endpoints de inferência, você pode implantar seus modelos para inferência em tempo real ou em lote. Os endpoints oferecem suporte a vários tipos de modelos de ML hospedados usando Contêineres de aprendizado profundo da AWS ou seus próprios contêineres com algoritmos de IA/ML personalizados. Ao iniciar endpoints de inferência do SageMaker com diversas instâncias, o SageMaker distribui as instâncias em diversas zonas de disponibilidade (em uma única região) para alta disponibilidade.

Em alguns casos, no entanto, para garantir a menor latência possível para clientes em diversas áreas geográficas, poderá ser necessário implementar pontos finais de inferência em múltiplas regiões. A implantação multirregional de endpoints SageMaker e outros componentes de aplicativos e infraestrutura relacionados também pode fazer parte de uma estratégia de recuperação de desastres para suas cargas de trabalho de missão crítica destinadas a mitigar o risco de uma falha regional.

Projetos do SageMaker implementa um conjunto de modelos MLOps pré-construídos que podem ajudar a gerenciar implantações de endpoint. Nesta postagem, mostramos como você pode estender um pipeline de projetos MLOps SageMaker para permitir a implantação multirregional de seus endpoints de inferência de IA/ML.

Visão geral da solução

O SageMaker Projects implanta pipelines de MLOPs de treinamento e implantação; você pode usá-los para treinar um modelo e implantá-lo usando um endpoint de inferência. Para reduzir a complexidade e o custo de uma solução multirregional, presumimos que você treine o modelo em uma única região e implante pontos de extremidade de inferência em duas ou mais regiões.

Esta postagem apresenta uma solução que modifica ligeiramente um modelo de projeto SageMaker para oferecer suporte à implantação em várias regiões. Para ilustrar melhor as alterações, a figura a seguir exibe um pipeline MLOps padrão criado automaticamente pelo SageMaker (Etapas 1 a 5), ​​bem como as alterações necessárias para estendê-lo a uma região secundária (Etapas 6 a 11).

O modelo SageMaker Projects implanta automaticamente uma solução padrão de MLOps, que inclui os seguintes componentes:

  1. Amazon Event Bridge monitores AWS CodeCommit repositórios para alterações e inicia uma execução de AWS Code Pipeline se um commit de código for detectado.
  2. Se houver uma mudança de código, AWS CodeBuild orquestra o treinamento do modelo usando trabalhos de treinamento do SageMaker.
  3. Após a conclusão do trabalho de treinamento, o Registro de modelo SageMaker registra e cataloga o modelo treinado.
  4. Para se preparar para o estágio de implantação, o CodeBuild estende o padrão Formação da Nuvem AWS arquivos de configuração de modelo com parâmetros de um modelo aprovado do registro de modelo.
  5. Por fim, o CodePipeline executa os modelos do CloudFormation para implantar o modelo aprovado nos endpoints de preparação e inferência de produção.

As etapas adicionais a seguir modificam o modelo de projetos MLOps para permitir a implantação do modelo AI/ML na região secundária:

  1. Uma réplica do Serviço de armazenamento simples da Amazon (Amazon S3) na região primária que armazena artefatos de modelo é necessário na região secundária.
  2. O modelo CodePipeline é estendido com mais estágios para executar uma implantação entre regiões do modelo aprovado.
  3. Como parte do processo de implantação entre regiões, o modelo CodePipeline usa um novo modelo CloudFormation para implantar o endpoint de inferência em uma região secundária. O modelo CloudFormation implanta o modelo a partir dos artefatos de modelo do bucket de réplica do S3 criado na Etapa 6.

9–11, opcionalmente, crie recursos em Amazon Route 53, Gateway de API da Amazon e AWS Lambda para rotear o tráfego de aplicativos para endpoints de inferência na região secundária.

Pré-requisitos

Crie um projeto SageMaker em sua região primária (us-east-2 nesta postagem). Conclua as etapas em Criação, automação, gerenciamento e dimensionamento de fluxos de trabalho de ML usando Amazon SageMaker Pipelines até a seção Modificando o código de amostra para um caso de uso personalizado.

Atualize seu pipeline no CodePipeline

Nesta seção, discutimos como adicionar aprovação manual do CodePipeline e estágios de implantação de modelo entre regiões ao pipeline existente criado para você pelo SageMaker.

  1. No console do CodePipeline em sua região primária, encontre e selecione o pipeline que contém o nome do seu projeto e termina com implantação. Este pipeline já foi criado para você pela SageMaker Projects. Você modifica esse pipeline para adicionar estágios de implantação de endpoint de AI/ML para a região secundária.
  2. Escolha Editar.
  3. Escolha Adicionar estágio.
  4. Escolha Nome artístico, entrar SecondaryRegionDeployment.
  5. Escolha Adicionar estágio.
  6. No SecondaryRegionDeployment palco, escolha Adicionar grupo de ação.Neste grupo de ação, você adiciona uma etapa de aprovação manual para implantação de modelo na região secundária.
  7. Escolha Nome da ação, entrar ManualApprovaltoDeploytoSecondaryRegion.
  8. Escolha Provedor de ação, escolha Aprovação manual.
  9. Deixe todas as outras configurações em seus padrões e escolha Pronto .
  10. No SecondaryRegionDeployment palco, escolha Adicionar grupo de ação (depois de ManualApprovaltoDeploytoSecondaryRegion).Neste grupo de ação, você adiciona uma etapa de implantação do AWS CloudFormation entre regiões. Você especifica os nomes dos artefatos de construção que criará posteriormente nesta postagem.
  11. Escolha Nome da ação, entrar DeploytoSecondaryRegion.
  12. Escolha Provedor de ação, escolha Formação da Nuvem AWS.
  13. Escolha Região, insira o nome da sua região secundária (por exemplo, us-west-2).
  14. Escolha Artefatos de entrada, entrar BuildArtifact.
  15. Escolha Modo de ação, entrar CreateorUpdateStack.
  16. Escolha Nome da Pilha, entrar DeploytoSecondaryRegion.
  17. Debaixo Modelo, Por Nome do artefato, selecione BuildArtifact.
  18. Debaixo Modelo, Por Nome do arquivo, entrar template-export-secondary-region.yml.
  19. torre Usar arquivo de configuração em.
  20. Debaixo Modelo, Por Nome do artefato, selecione BuildArtifact.
  21. Debaixo Modelo, Por Nome do arquivo, entrar secondary-region-config-export.json.
  22. Debaixo Empresa, escolha CAPABILITY_NAMED_IAM.
  23. Escolha Tipo, escolha AmazonSageMakerServiceCatalogProductsUseRole criado por Projetos SageMaker.
  24. Escolha Pronto .
  25. Escolha Salvar.
  26. Se um Salvar alterações de pipeline caixa de diálogo for exibida, escolha Salvar novamente.

Modificar função do IAM

Precisamos adicionar permissões adicionais ao Gerenciamento de acesso e identidade da AWS (IAM) papel AmazonSageMakerServiceCatalogProductsUseRole criado por Catálogo de serviços da AWS para habilitar o acesso ao CodePipeline e ao bucket S3 para implantação entre regiões.

  1. No console IAM, escolha Setores no painel de navegação.
  2. Pesquise e selecione AmazonSageMakerServiceCatalogProductsUseRole.
  3. Escolha a política IAM em nome da política: AmazonSageMakerServiceCatalogProductsUseRole-XXXXXXXXX.
  4. Escolha Editar política e depois JSON.
  5. Modifique as permissões do AWS CloudFormation para permitir que o CodePipeline sincronize o bucket S3 na região secundária. Você pode substituir a política do IAM existente pela atualizada a partir do seguinte GitHub repo (ver linhas: 16-18, 198, 213)
  6. Escolha Rever a política.
  7. Escolha Salvar as alterações .

Adicione o modelo de implantação para a região secundária

Para ativar um endpoint de inferência na região secundária, o SecondaryRegionDeployment estágio precisa de um modelo CloudFormation (para endpoint-config-template-secondary-region.yml) e um arquivo de configuração (secondary-region-config.json).

O modelo CloudFormation é configurado inteiramente por meio de parâmetros; você pode modificá-lo ainda mais para atender às suas necessidades. Da mesma forma, você pode usar o arquivo de configuração para definir os parâmetros para a configuração de inicialização do endpoint, como o tipo de instância e a contagem de instâncias:

{
  "Parameters": {
    "StageName": "secondary-prod",
    "EndpointInstanceCount": "1",
    "EndpointInstanceType": "ml.m5.large",
    "SamplingPercentage": "100",
    "EnableDataCapture": "true"
  }

Para adicionar esses arquivos ao seu projeto, baixe-os dos links fornecidos e carregue-os em Estúdio Amazon SageMaker na região primária. No Studio, escolha Navegador de Arquivos e então a pasta contendo o nome do seu projeto e terminando com modeldeploy.

Faça upload desses arquivos para a pasta raiz do repositório de implantação escolhendo o ícone de upload. Certifique-se de que os arquivos estejam localizados na pasta raiz, conforme mostrado na imagem a seguir.

Captura de tela dos arquivos de configuração

Modifique o arquivo Python de compilação

Em seguida, precisamos ajustar a implantação build.py para permitir a implantação do endpoint SageMaker na região secundária para fazer o seguinte:

  • Recuperar a localização dos artefatos do modelo e Registro do Amazon Elastic Container (Amazon ECR) URI para a imagem do modelo na região secundária
  • Prepare um arquivo de parâmetro que seja usado para passar os argumentos específicos do modelo para o modelo CloudFormation que implanta o modelo na região secundária

Você pode baixar a atualização build.py arquivo e substitua o existente em sua pasta. No Studio, escolha Navegador de Arquivos e então a pasta contendo o nome do seu projeto e terminando com modeldeploy. Localize o arquivo build.py e substitua-o pelo que você baixou.

O modelo CloudFormation usa os artefatos do modelo armazenados em um bucket do S3 e o caminho da imagem do Amazon ECR para implantar o endpoint de inferência na região secundária. Isto é diferente da implantação do registo de modelo na região primária, porque não é necessário ter um registo de modelo na região secundária.

Captura de tela dos parâmetros do ambiente primário e secundário

Modifique o arquivo buildspec

buildspec.yml contém instruções executadas pelo CodeBuild. Modificamos este arquivo para fazer o seguinte:

  • Instale a biblioteca SageMaker Python necessária para suportar a execução do código
  • Passe pelos parâmetros –região secundária e específicos do modelo para build.py
  • Adicione a sincronização de conteúdo do bucket S3 das regiões primária para secundária
  • Exporte o modelo CloudFormation da região secundária e o arquivo de parâmetros associado como artefatos da etapa CodeBuild

Abra o buildspec.yml arquivo da pasta de implantação do modelo e faça as modificações destacadas conforme mostrado na captura de tela a seguir.

Captura de tela do arquivo yaml de compilação

Alternativamente, você pode baixar o seguinte buildspec.yml arquivo para substituir o arquivo padrão.

Adicionar variáveis ​​de ambiente do CodeBuild

Nesta etapa, você adiciona parâmetros de configuração necessários para que o CodeBuild crie os arquivos de configuração de implantação do modelo na região secundária.

  1. No console do CodeBuild na região primária, encontre o projeto que contém o nome do seu projeto e termina com implantação. Este projeto já foi criado para você pela SageMaker Projects.

Captura de tela do pipeline de código

  1. Escolha o projeto e no Editar menu, escolha Meio Ambiente.

Captura de tela das configurações

  1. No Configuração avançada seção, desmarque Permitir que o AWS CodeBuild modifique esta função de serviço para que ela possa ser usada com este projeto de compilação.
  2. Adicione as seguintes variáveis ​​de ambiente, definindo os nomes dos modelos adicionais do CloudFormation, da região secundária e dos parâmetros específicos do modelo:
    1. EXPORT_TEMPLATE_NAME_SECONDARY_REGION - Para Valor, entrar template-export-secondary-region.yml e para Formato, escolha Texto simples.
    2. EXPORT_TEMPLATE_SECONDARY_REGION_CONFIG - Para Valor, entrar secondary-region-config-export.json e para Formato, escolha Texto simples.
    3. AWS_SECONDARY_REGION - Para Valor, insira us-west-2 e para Formato, escolha Texto simples.
    4. ESTRUTURA - Para Valor, entrar xgboost (substitua pela sua estrutura) e por Formato, escolha Texto simples.
    5. MODELO_VERSION - Para Valor, insira 1.0-1 (substitua pela versão do seu modelo) e para Formato, escolha Texto simples.
  3. Copie o valor de ARTIFACT_BUCKET no Bloco de Notas ou outro editor de texto. Você precisa desse valor na próxima etapa.
  4. Escolha Atualizar ambiente.

Você precisa dos valores especificados para treinamento de modelo para FRAMEWORK e MODEL_VERSION. Por exemplo, para encontrar esses valores para o modelo Abalone usado na implantação padrão de MLOps, abra o Studio e no Navegador de Arquivos menu, abra a pasta com o nome do seu projeto e terminando com modelbuild. Navegar para pipelines/abalone e abra o pipeline.py arquivo. Procurar sagemaker.image_uris.retrieve e copie os valores relevantes.

Captura de tela da estrutura de ML

Crie um bucket de réplica do S3 na região secundária

Precisamos criar um bucket S3 para armazenar os artefatos do modelo na região secundária. O SageMaker usa esse bucket para obter a versão mais recente do modelo para ativar um endpoint de inferência. Você só precisa fazer isso uma vez. O CodeBuild sincroniza automaticamente o conteúdo do bucket na região primária com o bucket de replicação a cada execução do pipeline.

  1. No console do Amazon S3, escolha Criar balde.
  2. Escolha Nome do intervalo, insira o valor de ARTEFACT_BUCKET copiado na etapa anterior e anexar -replica até o fim (por exemplo, sagemaker-project-X-XXXXXXXX-replica.
  3. Escolha Região AWS, insira sua região secundária (us-west-2).
  4. Deixe todos os outros valores padrão e escolha Criar balde.

Aprovar um modelo para implantação

A fase de implantação do pipeline requer um modelo aprovado para ser iniciada. Isso é necessário para a implantação na região primária.

  1. No Studio (região principal), escolha Recursos do SageMaker no painel de navegação.
  2. Escolha Selecione o recurso para visualizar, escolha Registro do modelo.
  3. Escolha o nome do grupo de modelos começando com o nome do seu projeto.
  4. No painel direito, verifique a versão do modelo, estágio e status.
  5. Se o status mostrar pendente, escolha a versão do modelo e depois escolha Atualizar o status.
  6. Alterar status para aprovado, Em seguida, escolha Atualizar o status.

Implantar e verificar as alterações

Todas as alterações necessárias para a implantação multirregional do endpoint de inferência do SageMaker foram concluídas e você pode iniciar o processo de implantação.

  1. No Studio, salve todos os arquivos que você editou, escolha Gite escolha o repositório que contém o nome do seu projeto e termina com deploy.
  2. Escolha o sinal de mais para fazer alterações.
  3. Debaixo Alterado, adicionar build.py e buildspec.yml.
  4. Debaixo Não rastreado, adicionar endpoint-config-template-secondary-region.yml e secondary-region-config.json.
  5. Digite um comentário no Resumo campo e escolha COMPROMETA-SE.
  6. Envie as alterações para o repositório escolhendo Empurrar.

Enviar essas alterações para o repositório CodeCommit aciona uma nova execução de pipeline, porque um evento EventBridge monitora confirmações enviadas. Depois de alguns instantes, você poderá monitorar a execução navegando até o pipeline no console do CodePipeline.

Certifique-se de fornecer aprovação manual para implantação na produção e na região secundária.

Você pode verificar se o endpoint da região secundária foi criado no console do SageMaker, escolhendo Painel no painel de navegação e confirmando o status do endpoint em Atividade recente.

Captura de tela do painel do Sage Maker

Adicionar API Gateway e Route 53 (opcional)

Opcionalmente, você pode seguir as instruções em Chame um endpoint do modelo Amazon SageMaker usando Amazon API Gateway e AWS Lambda para expor o endpoint de inferência do SageMaker na região secundária como uma API usando API Gateway e Lambda.

limpar

Para excluir o projeto SageMaker, consulte Excluir um projeto MLOps usando Amazon SageMaker Studio. Para garantir que o endpoint de inferência secundário seja destruído, acesse o console do AWS CloudFormation e exclua as pilhas relacionadas nas regiões primária e secundária; isso destrói os endpoints de inferência do SageMaker.

Conclusão

Nesta postagem, mostramos como um especialista em MLOps pode modificar um modelo MLOps pré-configurado para seu próprio caso de uso de implantação multirregional, como a implantação de cargas de trabalho em diversas regiões geográficas ou como parte da implementação de uma estratégia multirregional de recuperação de desastres. Com essa abordagem de implantação, você não precisa configurar serviços na região secundária e pode reutilizar as configurações do CodePipeline e do CloudBuild na região primária para implantação entre regiões. Além disso, você pode economizar custos continuando o treinamento de seus modelos na região primária enquanto utiliza a inferência do SageMaker em várias regiões para dimensionar sua implantação de IA/ML globalmente.

Deixe-nos saber seu feedback na seção de comentários.


Sobre os autores

Habilite CI/CD de endpoints multirregionais do Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai. Mehran Najafi, PhD, é arquiteto de soluções sênior da AWS com foco em soluções de IA/ML e SaaS em escala.

Habilite CI/CD de endpoints multirregionais do Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Steven Alyekhin é arquiteto de soluções sênior da AWS com foco em MLOps em escala.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS