Pipelines Amazon SageMaker permite que cientistas de dados e engenheiros de machine learning (ML) automatizem fluxos de trabalho de treinamento, o que ajuda a criar um processo repetível para orquestrar etapas de desenvolvimento de modelo para experimentação rápida e retreinamento de modelo. Você pode automatizar todo o fluxo de trabalho de construção de modelo, incluindo preparação de dados, engenharia de recursos, treinamento de modelo, ajuste de modelo e validação de modelo, e catalogá-lo no registro de modelo. Você pode configurar pipelines para serem executados automaticamente em intervalos regulares ou quando determinados eventos são acionados, ou pode executá-los manualmente conforme necessário.
Neste post, destacamos algumas das melhorias no Amazon Sage Maker SDK e introduza novos recursos do Amazon SageMaker Pipelines que facilitam para os profissionais de ML criar e treinar modelos de ML.
A Pipelines continua inovando sua experiência de desenvolvedor e, com esses lançamentos recentes, agora você pode usar o serviço de forma mais personalizada:
- 2.99.0, 2.101.1, 2.102.0, 2.104.0 – Documentação atualizada sobre
PipelineVariable
uso para classes base de estimador, processador, sintonizador, transformador e modelo, modelos da Amazon e modelos de estrutura. Haverá alterações adicionais com versões mais recentes do SDK para oferecer suporte a todas as subclasses de estimadores e processadores. - 2.90.0 - Disponibilidade de ModeloEtapa para criação de recursos de modelo integrado e tarefas de registro.
- 2.88.2 - Disponibilidade de Sessão de Pipeline para interação gerenciada com entidades e recursos do SageMaker.
- 2.88.2 – Compatibilidade de subclasse para etapas de trabalho de pipeline de fluxo de trabalho para que você possa criar abstrações de trabalho e configurar e executar trabalhos de processamento, treinamento, transformação e ajuste como faria sem um pipeline.
- 2.76.0 - Disponibilidade de FailStep para interromper condicionalmente um pipeline com status de falha.
Nesta postagem, orientamos você em um fluxo de trabalho usando um conjunto de dados de exemplo com foco na criação e implantação de modelos para demonstrar como implementar os novos recursos do Pipelines. No final, você deve ter informações suficientes para usar com êxito esses recursos mais recentes e simplificar suas cargas de trabalho de ML.
Visão geral dos recursos
O Pipelines oferece os seguintes novos recursos:
- Anotação de variável de pipeline – Certos parâmetros de método aceitam vários tipos de entrada, incluindo
PipelineVariables
, e foi adicionada documentação adicional para esclarecer ondePipelineVariables
são suportados na versão estável mais recente da documentação do SDK do SageMaker e na assinatura init das funções. Por exemplo, no estimador TensorFlow a seguir, a assinatura init agora mostra quemodel_dir
eimage_uri
ajudaPipelineVariables
, enquanto os outros parâmetros não. Para mais informações, consulte Estimador de TensorFlow.- Antes:
- Depois:
- Sessão de pipeline - Sessão de Pipeline é um novo conceito introduzido para trazer unidade ao SDK do SageMaker e introduz a inicialização lenta dos recursos do pipeline (as chamadas de execução são capturadas, mas não executadas até que o pipeline seja criado e executado). o
PipelineSession
contexto herda oSageMakerSession
e implementa métodos convenientes para você interagir com outras entidades e recursos do SageMaker, como trabalhos de treinamento, endpoints e conjuntos de dados de entrada armazenados em Serviço de armazenamento simples da Amazon (Amazônia S3). - Compatibilidade de subclasse com etapas de trabalho de pipeline de fluxo de trabalho – Agora você pode criar abstrações de trabalho e configurar e executar trabalhos de processamento, treinamento, transformação e ajuste como faria sem um pipeline.
- Por exemplo, criar uma etapa de processamento com
SKLearnProcessor
anteriormente exigia o seguinte: - Como vimos no código anterior,
ProcessingStep
precisa fazer basicamente a mesma lógica de pré-processamento que.run
, apenas sem iniciar a chamada da API para iniciar o trabalho. Mas com a compatibilidade de subclasse agora habilitada com etapas de trabalho de pipeline de fluxo de trabalho, declaramos ostep_args
argumento que usa a lógica de pré-processamento com .run para que você possa construir uma abstração de trabalho e configurá-la como você a usaria sem Pipelines. Também passamos nopipeline_session
, que é umPipelineSession
objeto, em vez desagemaker_session
para garantir que as chamadas de execução sejam capturadas, mas não chamadas até que o pipeline seja criado e executado. Veja o seguinte código:
- Por exemplo, criar uma etapa de processamento com
- Etapa do modelo (uma abordagem simplificada com etapas de criação e registro do modelo) –O Pipelines oferece dois tipos de etapas para integração com os modelos SageMaker:
CreateModelStep
eRegisterModel
. Agora você pode conseguir ambos usando apenas oModelStep
modelo. Observe que umPipelineSession
é necessário para conseguir isso. Isso traz semelhança entre as etapas do pipeline e o SDK.- Antes:
-
- Depois:
- Etapa de falha (parada condicional da execução do pipeline) -
FailStep
permite que um pipeline seja interrompido com um status de falha se uma condição for atendida, como se a pontuação do modelo estiver abaixo de um determinado limite.
Visão geral da solução
Nesta solução, seu ponto de entrada é o Estúdio Amazon SageMaker ambiente de desenvolvimento integrado (IDE) para experimentação rápida. O Studio oferece um ambiente para gerenciar a experiência de Pipelines de ponta a ponta. Com o Studio, você pode ignorar o Console de gerenciamento da AWS para todo o seu gerenciamento de fluxo de trabalho. Para obter mais informações sobre o gerenciamento de pipelines no Studio, consulte Visualize, rastreie e execute pipelines do SageMaker no SageMaker Studio.
O diagrama a seguir ilustra a arquitetura de alto nível do fluxo de trabalho de ML com as diferentes etapas para treinar e gerar inferências usando os novos recursos.
O pipeline inclui as seguintes etapas:
- Pré-processe os dados para criar os recursos necessários e divida os dados em conjuntos de dados de treinamento, validação e teste.
- Crie um trabalho de treinamento com a estrutura SageMaker XGBoost.
- Avalie o modelo treinado usando o conjunto de dados de teste.
- Verifique se a pontuação AUC está acima de um limite predefinido.
- Se a pontuação AUC for menor que o limite, interrompa a execução do pipeline e marque-a como com falha.
- Se a pontuação AUC for maior que o limite, crie um modelo do SageMaker e registre-o no registro do modelo do SageMaker.
- Aplique a transformação em lote no conjunto de dados fornecido usando o modelo criado na etapa anterior.
Pré-requisitos
Para acompanhar este post, você precisa de uma conta AWS com um Domínio do estúdio.
O Pipelines é integrado diretamente às entidades e recursos do SageMaker, para que você não precise interagir com nenhum outro serviço da AWS. Você também não precisa gerenciar nenhum recurso porque é um serviço totalmente gerenciado, o que significa que ele cria e gerencia recursos para você. Para obter mais informações sobre os vários componentes do SageMaker que são APIs Python independentes e componentes integrados do Studio, consulte o página do produto SageMaker.
Antes de começar, instale a versão do SDK do SageMaker >= 2.104.0 e xlrd >=1.0.0 no notebook Studio usando o seguinte snippet de código:
Fluxo de trabalho de ML
Para este post, você usa os seguintes componentes:
- Preparação de dados
- Processamento SageMaker – O SageMaker Processing é um serviço totalmente gerenciado que permite executar transformações de dados personalizadas e engenharia de recursos para cargas de trabalho de ML.
- Construção de modelo
- Treinamento e avaliação do modelo
- Treinamento em um clique – O recurso de treinamento distribuído do SageMaker. O SageMaker fornece bibliotecas de treinamento distribuídas para paralelismo de dados e paralelismo de modelo. As bibliotecas são otimizadas para o ambiente de treinamento do SageMaker, ajudam a adaptar seus trabalhos de treinamento distribuídos ao SageMaker e melhoram a velocidade e o rendimento do treinamento.
- Experimentos SageMaker – Experimentos é um recurso do SageMaker que permite organizar, rastrear, comparar e avaliar suas iterações de ML.
- Transformação em lote SageMaker – A transformação em lote ou pontuação offline é um serviço gerenciado no SageMaker que permite prever em um conjunto de dados maior usando seus modelos de ML.
- Orquestração de fluxo de trabalho
Um pipeline do SageMaker é uma série de etapas interconectadas definidas por uma definição de pipeline JSON. Ele codifica um pipeline usando um gráfico acíclico direcionado (DAG). O DAG fornece informações sobre os requisitos e relacionamentos entre cada etapa do pipeline, e sua estrutura é determinada pelas dependências de dados entre as etapas. Essas dependências são criadas quando as propriedades da saída de uma etapa são passadas como entrada para outra etapa.
O diagrama a seguir ilustra as diferentes etapas no pipeline do SageMaker (para um caso de uso de previsão de rotatividade) em que as conexões entre as etapas são inferidas pelo SageMaker com base nas entradas e saídas definidas pelas definições das etapas.
As próximas seções explicam a criação de cada etapa do pipeline e a execução de todo o pipeline depois de criado.
Estrutura do projeto
Vamos começar com a estrutura do projeto:
- /sm-pipelines-end-to-end-exemplo – O nome do projeto
- /dados – Os conjuntos de dados
- /pipelines – Os arquivos de código para componentes de pipeline
- /a rotatividade de clientes
- pré-processo.py
- avaliar.py
- /a rotatividade de clientes
- sagemaker-pipelines-project.ipynb – Um notebook percorrendo o fluxo de trabalho de modelagem usando os novos recursos do Pipelines
Baixe o conjunto de dados
Para acompanhar este post, você precisa baixar e salvar o amostra de conjunto de dados na pasta de dados dentro do diretório inicial do projeto, que salva o arquivo em Sistema de arquivos elástico da Amazon (Amazon EFS) no ambiente Studio.
Construir os componentes do pipeline
Agora você está pronto para construir os componentes do pipeline.
Importar instruções e declarar parâmetros e constantes
Crie um bloco de anotações do Studio chamado sagemaker-pipelines-project.ipynb
dentro do diretório inicial do projeto. Insira o seguinte bloco de código em uma célula e execute a célula para configurar objetos de cliente SageMaker e S3, crie PipelineSession
e configure o local do bucket do S3 usando o bucket padrão que acompanha uma sessão do SageMaker:
Pipelines oferece suporte à parametrização, que permite especificar parâmetros de entrada em tempo de execução sem alterar o código do pipeline. Você pode usar os módulos disponíveis no sagemaker.workflow.parameters
módulo, como ParameterInteger
, ParameterFloat
e ParameterString
, para especificar parâmetros de pipeline de vários tipos de dados. Execute o seguinte código para configurar vários parâmetros de entrada:
Gerar um conjunto de dados em lote
Gere o conjunto de dados em lote, que você usará posteriormente na etapa de transformação em lote:
Carregar dados para um bucket do S3
Faça upload dos conjuntos de dados para o Amazon S3:
Definir um script de processamento e uma etapa de processamento
Nesta etapa, você prepara um script Python para fazer engenharia de recursos, uma codificação a quente e seleciona as divisões de treinamento, validação e teste a serem usadas para a construção do modelo. Execute o seguinte código para criar seu script de processamento:
Em seguida, execute o bloco de código a seguir para instanciar o processador e a etapa Pipelines para executar o script de processamento. Como o script de processamento é escrito em Pandas, você usa um Processador SKLearn. Os oleodutos ProcessingStep
A função recebe os seguintes argumentos: o processador, os locais S3 de entrada para conjuntos de dados brutos e os locais S3 de saída para salvar conjuntos de dados processados.
Definir uma etapa de treinamento
Configure o treinamento do modelo usando um estimador SageMaker XGBoost e os Pipelines TrainingStep
função:
Definir o script de avaliação e a etapa de avaliação do modelo
Execute o bloco de código a seguir para avaliar o modelo depois de treinado. Este script encapsula a lógica para verificar se a pontuação AUC atende ao limite especificado.
Em seguida, execute o bloco de código a seguir para instanciar o processador e a etapa Pipelines para executar o script de avaliação. Como o script de avaliação usa o pacote XGBoost, você usa um ScriptProcessor
junto com a imagem XGBoost. Os oleodutos ProcessingStep
A função recebe os seguintes argumentos: o processador, os locais S3 de entrada para conjuntos de dados brutos e os locais S3 de saída para salvar conjuntos de dados processados.
Definir uma etapa de criação de modelo
Execute o bloco de código a seguir para criar um modelo do SageMaker usando a etapa do modelo Pipelines. Esta etapa utiliza a saída da etapa de treinamento para empacotar o modelo para implantação. Observe que o valor do argumento do tipo de instância é passado usando o parâmetro Pipelines que você definiu anteriormente na postagem.
Definir uma etapa de transformação em lote
Execute o seguinte bloco de código para executar a transformação em lote usando o modelo treinado com a entrada em lote criada na primeira etapa:
Definir uma etapa do modelo de registro
O código a seguir registra o modelo no registro de modelo do SageMaker usando a etapa do modelo Pipelines:
Definir uma etapa de falha para interromper o pipeline
O código a seguir define a etapa de falha de pipelines para interromper a execução do pipeline com uma mensagem de erro se a pontuação AUC não atender ao limite definido:
Defina uma etapa de condição para verificar a pontuação AUC
O código a seguir define uma etapa de condição para verificar a pontuação AUC e criar condicionalmente um modelo e executar uma transformação em lote e registrar um modelo no registro do modelo ou interromper a execução do pipeline em um estado de falha:
Construir e executar o pipeline
Depois de definir todas as etapas do componente, você pode montá-las em um objeto Pipelines. Você não precisa especificar a ordem do pipeline porque o Pipelines infere automaticamente a sequência do pedido com base nas dependências entre as etapas.
Execute o seguinte código em uma célula em seu notebook. Se o pipeline já existir, o código atualiza o pipeline. Se o pipeline não existir, ele cria um novo.
Conclusão
Neste post, apresentamos alguns dos novos recursos agora disponíveis com o Pipelines, juntamente com outros recursos integrados do SageMaker e o algoritmo XGBoost para desenvolver, iterar e implantar um modelo para previsão de churn. A solução pode ser estendida com fontes de dados adicionais
para implementar seu próprio fluxo de trabalho de ML. Para obter mais detalhes sobre as etapas disponíveis no fluxo de trabalho de pipelines, consulte Pipeline de criação de modelos do Amazon SageMaker e Fluxos de trabalho do SageMaker. O Exemplos do AWS SageMaker O repositório do GitHub tem mais exemplos de vários casos de uso usando Pipelines.
Sobre os autores
Jerry Peng é engenheiro de desenvolvimento de software do AWS SageMaker. Ele se concentra na criação de sistemas MLOps de larga escala de ponta a ponta, desde o treinamento até o monitoramento de modelos na produção. Ele também é apaixonado por trazer o conceito de MLOps para um público mais amplo.
Dewen Qi é engenheiro de desenvolvimento de software na AWS. Atualmente, ela se concentra no desenvolvimento e aprimoramento de Pipelines do SageMaker. Fora do trabalho, ela gosta de praticar violoncelo.
Gayatri Ganakota é engenheiro sênior de aprendizado de máquina com AWS Professional Services. Ela é apaixonada por desenvolver, implantar e explicar soluções de IA/ML em vários domínios. Antes dessa função, ela liderou várias iniciativas como cientista de dados e engenheira de ML com as principais empresas globais no espaço financeiro e de varejo. Ela possui mestrado em Ciência da Computação com especialização em Ciência de Dados pela University of Colorado, Boulder.
Rupinder Grewal é um arquiteto de soluções especialista sênior em Ai/ML da AWS. Ele atualmente se concentra em servir de modelos e MLOps no SageMaker. Antes dessa função, ele trabalhou como engenheiro de aprendizado de máquina construindo e hospedando modelos. Fora do trabalho, ele gosta de jogar tênis e andar de bicicleta em trilhas nas montanhas.
Ray Li é um Cientista de Dados Sênior com AWS Professional Services. Sua especialidade se concentra na criação e operacionalização de soluções de IA/ML para clientes de tamanhos variados, desde startups a organizações empresariais. Fora do trabalho, Ray gosta de fazer exercícios e viajar.
- AI
- arte ai
- gerador de arte ai
- ai robô
- Amazon Sage Maker
- inteligência artificial
- certificação de inteligência artificial
- inteligência artificial em bancos
- robô de inteligência artificial
- robôs de inteligência artificial
- software de inteligência artificial
- Aprendizado de máquina da AWS
- blockchain
- conferência blockchain ai
- Coingenius
- inteligência artificial conversacional
- conferência de criptografia ai
- dall's
- deep learning
- google ai
- aprendizado de máquina
- platão
- platão ai
- Inteligência de Dados Platão
- Jogo de Platão
- PlatãoData
- jogo de platô
- escala ai
- sintaxe
- zefirnet