Um dos principais desafios na implementação de um projeto de aprendizado de máquina (ML) é a variedade e o elevado número de artefatos e ferramentas de desenvolvimento utilizados. Isso inclui código em notebooks, módulos para processamento e transformação de dados, configuração de ambiente, pipeline de inferência e código de orquestração. Em cargas de trabalho de produção, o modelo de ML criado em sua estrutura de desenvolvimento quase nunca é o fim do trabalho, mas faz parte de um aplicativo ou fluxo de trabalho maior.
Outro desafio é a natureza variada das atividades de desenvolvimento de ML realizadas por diferentes funções de usuário. Por exemplo, o engenheiro de DevOps desenvolve componentes de infraestrutura, como automação de CI/CD, constrói pipelines de inferência de produção e configura segurança e rede. O engenheiro de dados normalmente se concentra em fluxos de trabalho de processamento e transformação de dados. O cientista de dados ou engenheiro de ML fornece modelos de ML e pipelines de construção, treinamento e validação de modelos.
Esses desafios exigem uma arquitetura e uma estrutura que facilitem a separação de preocupações, permitindo que cada função de desenvolvimento trabalhe em sua própria parte do sistema e oculte a complexidade da integração, da segurança e da configuração do ambiente.
Esta postagem ilustra como introduzir uma arquitetura modular baseada em componentes em seu aplicativo de ML, implementando componentes reutilizáveis, independentes e consistentes com Amazon Sage Maker.
Visão geral da solução
Como exemplo de fluxo de trabalho de ML que abrange vários domínios de desenvolvimento, a solução proposta implementa um caso de uso de pipeline automatizado para transformação de dados, extração de recursos e ingestão em Loja de recursos Amazon SageMaker.
Em alto nível, o fluxo de trabalho compreende as seguintes etapas funcionais:
- Um componente de ingestão de dados upstream carrega objetos de dados para um Serviço de armazenamento simples da Amazon (Amazon S3).
- O evento de upload de dados inicia um processo de processamento e transformação de dados.
- O processo de transformação de dados extrai, processa e transforma recursos e os ingere em um ambiente designado. grupo de recursos na Loja de Recursos.
Terminologia
Esta seção apresenta os seguintes conceitos e definições importantes.
Componente de ML
An Componente de ML é uma unidade de construção que contém todos os recursos, configurações e fluxos de trabalho necessários para executar uma tarefa específica de ML. Por exemplo, o pipeline proposto de transformação e ingestão de dados pode ser entregue como um componente de ML. Os componentes de ML têm melhor capacidade de integração para ajudá-lo a implementar aplicativos de ML reproduzíveis, governados e seguros. Um componente de ML pode encapsular todo o código padrão necessário para configurar adequadamente permissões de acesso a dados, chaves de segurança, marcação, nomenclatura e requisitos de registro para todos os recursos.
Um processo de implementação de um componente de ML pressupõe que uma equipe DevOps ou MLOps dedicada execute o design, a construção, o teste e a distribuição dos componentes. Os destinatários dos componentes de ML são cientistas de dados, engenheiros de dados e engenheiros de ML.
Essa separação de responsabilidades de desenvolvimento traz maior agilidade, tempo de lançamento no mercado mais rápido e menos trabalho pesado manual, além de resultar em maior qualidade e consistência de seus fluxos de trabalho de ML.
Projeto Amazon SageMaker
SageMaker facilita o desenvolvimento e distribuição de componentes de ML com Projetos SageMaker.
Um SageMaker projeto é uma coleção autossuficiente de recursos, que pode ser instanciada e usada pelos usuários autorizados. Um projeto contém todos os recursos, artefatos, código-fonte, orquestração e permissões necessários para executar uma tarefa ou fluxo de trabalho de ML designado. Por exemplo, SageMaker fornece Modelos de projeto MLOps para automatizar a configuração e implementação de MLOps para seus aplicativos.
Você pode implementar um modelo de projeto SageMaker personalizado para entregar um fluxo de trabalho de ML empacotado, que pode ser distribuído e provisionado por meio de um Estúdio Amazon SageMaker IDE.
Ao implementar componentes reutilizáveis personalizados com projetos SageMaker, você pode separar o processo de desenvolvimento, teste e distribuição de componentes de ML de seu emprego e seguir as práticas recomendadas de MLOps.
Portfólio de produto
Um projeto funciona em conjunto com outros dois serviços da AWS, Catálogo de serviços da AWS e Formação da Nuvem AWS, para fornecer uma integração fácil de usar de ponta a ponta em seu ambiente SageMaker e Studio. Você pode combinar vários projetos em um pasta. Um projeto SageMaker é chamado PRODUTOS no escopo do portfólio. Um portfólio de produtos é entregue via AWS Service Catalog no Studio. Você pode controlar quem pode visualizar e provisionar produtos específicos associando funções de usuário a um portfólio designado.
Arquitetura da solução
A arquitetura detalhada dos componentes da solução é apresentada no diagrama a seguir.
Um portfólio de produtos (1) define o produto automatizado de ingestão de dados do Feature Store (2) junto com as funções de usuário associadas que têm permissão para usar o portfólio e os produtos que o contêm. Os modelos CloudFormation definem o portfólio de produtos (1) e o produto (2). Um modelo CloudFormation (3) contém todos os recursos, código-fonte, configuração e permissões necessários para provisionar o produto em seu ambiente SageMaker.
Quando o AWS CloudFormation implanta o produto, ele cria um novo projeto SageMaker (4).
O projeto SageMaker implementa o fluxo de trabalho de ingestão de recursos (5). O fluxo de trabalho contém um AWS Lambda função, que é iniciada por um Amazon Event Bridge regra sempre que novos objetos são carregados em um bucket S3 monitorado. A função Lambda inicia um Pipeline SageMaker (6), que é definido e provisionado como parte do projeto SageMaker. O pipeline implementa a transformação e ingestão de dados no Feature Store.
O projeto também prevê automação CI/CD (7) com um AWS CodeCommit repositório com código fonte, AWS CodeBuild com um script de construção de pipeline e AWS Code Pipeline para orquestrar a construção e implantação do pipeline SageMaker (6).
Pipeline de ML
Esta solução implementa um pipeline de ML usando Pipelines Amazon SageMaker, uma estrutura de criação e orquestração de fluxo de trabalho de ML. O pipeline contém uma única etapa com um Gerenciador de dados do Amazon SageMaker processador para transformação de dados e ingestão em um grupo de recursos no Feature Store. O diagrama a seguir mostra um pipeline de processamento de dados implementado por esta solução.
Consulte Construir, ajustar e implantar um modelo de previsão de rotatividade de ponta a ponta usando Amazon SageMaker Pipelines para obter um exemplo de como construir e usar um pipeline SageMaker.
O restante desta postagem orienta você na implementação de um projeto SageMaker personalizado. Discutimos como fazer o seguinte:
- Crie um projeto com seus recursos
- Entenda o ciclo de vida do projeto
- Ver recursos do projeto
- Crie um domínio do Studio e implante um portfólio de produtos
- Trabalhe com o projeto e execute um pipeline de transformação e ingestão de dados
A Repositório GitHub fornece o código-fonte completo para a solução ponta a ponta. Você pode usar esse código como ponto de partida para implantar seus próprios componentes de ML personalizados usando essa mesma arquitetura de referência.
Crie um modelo de projeto SageMaker
Para começar com um projeto SageMaker personalizado, você precisa dos seguintes recursos, artefatos e Gerenciamento de acesso e identidade da AWS (IAM) funções e permissões:
- Um modelo CloudFormation que define um AWS Service Catalog pasta.
- Um modelo CloudFormation que define um projeto SageMaker.
- Funções e permissões do IAM necessárias para executar os componentes do projeto e executar as tarefas e fluxos de trabalho do projeto.
- Se o seu projeto contiver algum código-fonte entregue como parte do projeto, esse código também deverá ser entregue. A solução refere-se a este código-fonte como o código semente.
Arquivos nesta solução
Esta solução contém todo o código-fonte necessário para criar seu projeto SageMaker personalizado. A estrutura do repositório de código é a seguinte:
- pasta cfn-templates: esta pasta contém o seguinte:
- projeto-s3-fs-ingestão.yaml – Um modelo CloudFormation com o projeto SageMaker
- sm-project-sc-portfolio.yaml – Um modelo CloudFormation com o portfólio de produtos e políticas gerenciadas com permissões necessárias para implantar o produto
- pasta project-seed-code/s3-fs-ingestion – Contém o código inicial do projeto, incluindo o código de definição do pipeline do SageMaker, scripts de construção para o projeto CI/CD CodeBuild e código-fonte para a função Lambda
- pasta de cadernos – Contém os notebooks SageMaker para experimentar o projeto
As seções a seguir descrevem cada parte do processo de criação do projeto e fornecem exemplos do código-fonte.
Portfólio do AWS Service Catalog
Um portfólio do AWS Service Catalog é entregue como um modelo CloudFormation, que define os seguintes recursos:
- Definição de portfólio.
- Definição do produto.
- Associação de produto a portfólio para cada produto.
- Portfólio para Princípio IAM Associação. Isso define quais princípios de IAM podem implantar produtos do portfólio.
- Restrição de função de lançamento de produto. Isso define qual função do IAM o AWS CloudFormation assume quando um usuário provisiona o modelo.
Para disponibilizar seu modelo de projeto no Studio, você deve adicionar a seguinte tag ao produto:
Consulte Crie modelos de projeto personalizados para obter mais detalhes sobre modelos de projetos personalizados.
Esta solução contém um exemplo de um portfólio do AWS Service Catalog que contém um único produto.
Modelo de produto CloudFormation
Um modelo CloudFormation define o produto. O modelo do produto é autossuficiente e contém todos os recursos, permissões e artefatos necessários para fornecer a funcionalidade do produto.
Para que o produto funcione com projetos SageMaker, você deve adicionar os seguintes parâmetros ao modelo do produto:
Esta solução contém um modelo de produto que cria vários recursos.
Para o pipeline de transformação e ingestão de dados, o modelo cria o seguinte:
- Um código-fonte de definição de pipeline do SageMaker.
- Uma função Lambda para iniciar o pipeline do SageMaker sempre que um novo objeto é carregado no bucket S3 monitorado.
- Uma função de execução do IAM para a função Lambda.
- Um bucket S3 para manter um AWS CloudTrail registro. Você precisa de um log do CloudTrail para ativar a notificação do EventBridge para eventos de colocação de objetos no bucket monitorado. Você usa a notificação baseada no CloudTrail em vez das notificações do Amazon S3 porque não deve substituir uma notificação existente do Amazon S3 no bucket monitorado.
- Um log do CloudTrail configurado para capturar
WriteOnly
eventos em objetos S3 sob um prefixo S3 especificado. - Uma regra do EventBridge para iniciar a função Lambda sempre que um novo objeto for carregado no bucket S3 monitorado. O padrão de regra EventBridge monitora os eventos
PutObject
eCompleteMultipartUpload
.
Para automação de CI/CD, o modelo cria o seguinte:
- Um bucket S3 para armazenar artefatos do CodePipeline
- Um repositório CodeCommit com a definição de pipeline do SageMaker
- Uma regra do EventBridge para iniciar o CodePipeline quando o repositório do CodeCommit for atualizado
- Um projeto CodeBuild para construir o pipeline do SageMaker
- Um pipeline CodePipeline para orquestrar a construção do pipeline SageMaker
Funções e permissões do IAM
Para iniciar e usar um projeto SageMaker, você precisa de duas funções do IAM:
- Uma função do IAM para lançar um produto do AWS Service Catalog – Esta regra é assumida pelo AWS Service Catalog e contém permissão especificamente necessária para implantar recursos usando modelos do CloudFormation. A abordagem baseada no AWS Service Catalog permite que cientistas de dados e engenheiros de ML provisionem componentes e fluxos de trabalho de ML personalizados centralmente, sem exigir que cada usuário de ML tenha políticas de permissões de alto perfil ou passe por um processo de implantação individual manual e não reproduzível.
- Uma função IAM para usar recursos criados por um projeto SageMaker – Esses recursos incluem um pipeline CodePipeline, um pipeline SageMaker e uma regra EventBridge. O modelo CloudFormation do projeto especifica explicitamente qual recurso usa qual função.
Quando você habilita projetos do SageMaker para usuários do Studio, o processo de provisionamento cria duas funções do IAM na sua conta da AWS: AmazonSageMakerServiceCatalogProductsLaunchRole
e AmazonSageMakerServiceCatalogProductsUseRole
. O Modelos de projeto fornecidos pelo SageMaker use essas funções para implantar e operar os recursos criados. Você pode usar essas funções para seus projetos personalizados do SageMaker ou pode criar suas próprias funções com um conjunto específico de permissões do IAM adequadas aos seus requisitos. Certifique-se de que essas funções recebam todas as permissões necessárias, especificamente acesso ao bucket S3, para executar suas tarefas.
Consulte Políticas gerenciadas da AWS para projetos SageMaker e JumpStart para obter mais detalhes sobre as funções padrão.
Se você criar e atribuir funções do IAM a recursos criados pelo provisionamento do projeto por meio do AWS Service Catalog e do AWS CloudFormation, a função AmazonSageMakerServiceCatalogProductsLaunchRole
deve ter iam:PassRole
permissão para uma função que você passa para um recurso. Por exemplo, esta solução cria uma função de execução do IAM para a função Lambda. A política gerenciada para AmazonSageMakerServiceCatalogProductsLaunchRole
contém a declaração de permissão correspondente:
O diagrama a seguir mostra todas as funções do IAM envolvidas e qual serviço ou recurso assume qual função.
A arquitetura contém os seguintes componentes:
- A função de lançamento dos produtos SageMaker Service Catalog. Este papel chama o
iam:PassRole
A API para os produtos SageMaker Service Catalog usa a função (2) e a função de execução do Lambda (4). - A função de uso dos produtos do SageMaker Service Catalog. Os recursos do projeto assumem essa função para executar suas tarefas.
- A função de execução do SageMaker. Os notebooks Studio usam essa função para acessar todos os recursos, incluindo buckets S3.
- A função de execução do Lambda. A função Lambda assume essa função.
- A função Lambda política de recursos permite que o EventBridge invoque a função.
Consulte Permissões do SageMaker Studio necessárias para usar projetos para obter mais detalhes sobre a configuração de permissões do Studio para projetos.
Código inicial do projeto
Se o seu projeto personalizado do SageMaker usar automação de fluxo de trabalho de CI/CD ou contiver recursos baseados em código-fonte, você poderá entregar o código inicial como um CodeCommit ou um repositório Git de terceiros, como GitHub e Bitbucket. O usuário do projeto possui o código e pode personalizá-lo para implementar seus requisitos.
Esta solução fornece o código inicial, que contém uma definição de pipeline do SageMaker. O projeto também cria um fluxo de trabalho de CI/CD para construir o pipeline do SageMaker. Qualquer confirmação no repositório de código-fonte inicia o pipeline do CodePipeline.
Ciclo de vida do projeto
Um projeto passa por estágios distintos do ciclo de vida: você cria um projeto, usa ele e seus recursos e exclui o projeto quando não precisar mais dele. Studio UX integra projetos SageMaker de ponta a ponta, incluindo recursos de projeto, linhagem de dados e controle de ciclo de vida.
Criar um projeto
Você pode provisionar um projeto SageMaker diretamente no seu Studio IDE ou por meio do API SageMaker.
Para criar um novo projeto SageMaker no Studio, execute as seguintes etapas:
- No Recursos do SageMaker página, escolha Projectos no menu suspenso.
- Escolha Criar projeto.
- Escolha Modelos de organização.
- Escolha o modelo do projeto que você deseja provisionar.
- Insira um nome e uma descrição opcional para seu projeto.
- Debaixo Parâmetros do modelo de projeto, forneça os parâmetros específicos do seu projeto.
Você também pode usar o Python SDK para criar um projeto programaticamente, conforme mostrado neste trecho de código do 01-feature-store-ingest-pipeline
caderno:
Cada projeto é provisionado por meio de um AWS Service Catalog e do processo AWS CloudFormation. Porque você tem a política de acesso IAM correspondente, por exemplo AWSCloudFormationReadOnlyAccess, você poderá observar a implantação do projeto no console do AWS CloudFormation. Conforme mostrado na captura de tela a seguir, você pode navegar pelas informações da pilha, eventos, recursos, saídas, parâmetros e modelo.
Ver recursos do projeto
Depois de provisionar o projeto, você pode navegar pelos recursos do projeto específicos do SageMaker no Studio IDE.
Você também pode ver todos os recursos criados pelo processo de implantação do projeto no console do AWS CloudFormation.
Qualquer recurso criado pelo projeto é automaticamente marcado com duas tags: sagemaker:project-name
e sagemaker:project-id
, permitindo a linhagem de dados e recursos.
Você pode adicionar suas próprias tags aos recursos do projeto, por exemplo, para atender aos seus requisitos específicos de marcação e nomenclatura de recursos.
Excluir projeto
Se você não precisar mais do projeto provisionado, para parar de incorrer em cobranças, deverá excluí-lo para limpar os recursos criados pelo projeto.
No momento de escrever esta postagem, você deve usar o API SageMaker para excluir um projeto. Um exemplo de código Python se parece com o seguinte:
A exclusão do projeto também inicia a exclusão da pilha do CloudFormation com o modelo de projeto.
Um projeto pode criar outros recursos, como objetos em buckets S3, modelos de ML, grupos de recursos, endpoints de inferência ou pilhas do CloudFormation. Esses recursos não podem ser removidos após a exclusão do projeto. Consulte a documentação específica do projeto para saber como realizar uma limpeza completa.
Esta solução fornece uma Notebook de estúdio para excluir todos os recursos criados pelo projeto.
Implante a solução
Para implantar a solução, você deve ter permissões de administrador (ou usuário avançado) para empacotar os modelos do CloudFormation, fazer upload dos modelos em seu bucket S3 e executar os comandos de implantação.
Para começar a trabalhar com os notebooks da solução, provisionar um projeto e executar um pipeline de transformação e ingestão de dados, você deve concluir as etapas de implantação a seguir no guia da solução Arquivo README do GitHub:
- Clone a solução GitHub repo ao seu ambiente de desenvolvimento local.
- Crie um domínio do Studio (instruções no Arquivo README).
- Implante o portfólio de projetos SageMaker (instruções no Arquivo README).
- Adicione permissões personalizadas às funções do IAM de inicialização do AWS Service Catalog e de execução do SageMaker (instruções no Arquivo README).
- Inicie o Studio e clone o repositório GitHub em seu ambiente SageMaker (instruções no Arquivo README).
Passo a passo da solução
A cadernos entregues guiá-lo pelas seguintes etapas de solução:
- instalação:
- Configure o ambiente de trabalho, crie um bucket S3 para upload de dados, baixe e explore o conjunto de dados de teste
- Opcionalmente, crie um fluxo do Data Wrangler para transformação de dados e ingestão de recursos
- Crie um grupo de recursos no Feature Store onde os recursos são mantidos
- Consulte os dados do grupo de recursos
- Pipeline de ingestão do Feature Store:
- Provisionar um projeto SageMaker com um pipeline de dados
- Explore os recursos do projeto
- Teste o pipeline de dados fazendo upload de novos dados para o bucket S3 monitorado
- Execute o pipeline de dados sob demanda por meio do Python SDK
- Consulte os dados do grupo de recursos
- limpar:
- Exclua o projeto e os recursos do projeto
- Exclua o grupo de recursos
- Excluir buckets do S3 e objetos do S3 provisionados pelo projeto
limpar
Para evitar cobranças, você deve remover todos os recursos provisionados e gerados pelo projeto da sua conta da AWS.
Siga as instruções na solução Arquivo README.
Chamada à ação
Nesta postagem, você aprendeu como criar componentes de ML para sua arquitetura modular usando projetos SageMaker. Os projetos SageMaker oferecem um método conveniente e nativo da AWS para empacotar e entregar unidades reutilizáveis para implementar fluxos de trabalho de ML. A integração de projetos SageMaker com SageMaker Pipelines e automação CI/CD CodePipeline oferece ferramentas poderosas para seguir as práticas recomendadas de MLOps e aumentar a velocidade e a qualidade do seu trabalho de desenvolvimento.
Seus fluxos de trabalho e pipelines de ML podem se beneficiar ao serem encapsulados em um componente reutilizável e parametrizável. Agora você pode implementar este componente usando a abordagem descrita com projetos SageMaker.
Referências adicionais
Para obter mais exemplos práticos de uso de projetos e pipelines do SageMaker para vários casos de uso, consulte os seguintes recursos:
Sobre o autor
Eugene Ilyin é arquiteto de soluções na AWS. Ele tem mais de 20 anos de experiência trabalhando em todos os níveis de desenvolvimento de software e arquitetura de soluções e usou linguagens de programação de COBOL e Assembler a .NET, Java e Python. Ele desenvolve e codifica soluções nativas de nuvem com foco em big data, análise e engenharia de dados.
- '
- 7
- 9
- Acesso
- Conta
- Açao Social
- atividades
- Todos os Produtos
- Permitindo
- Amazon
- Amazon Sage Maker
- analítica
- api
- Aplicação
- aplicações
- arquitetura
- Automatizado
- Automação
- AWS
- MELHOR
- melhores práticas
- Big Data
- construir
- Prédio
- chamada
- casos
- desafiar
- acusações
- Na nuvem
- Nativo da nuvem
- código
- componente
- formação
- dados,
- acesso a dados
- informática
- cientista de dados
- Demanda
- Design
- Desenvolvimento
- DevOps
- domínios
- emprego
- engenheiro
- Engenharia
- Engenheiros
- Meio Ambiente
- Evento
- eventos
- execução
- vasta experiência
- experimentar
- Extração
- Extractos
- Característica
- Funcionalidades
- fluxo
- Foco
- seguir
- Quadro
- Cumprir
- cheio
- função
- Git
- GitHub
- Grupo
- Esconder
- Alta
- Como funciona o dobrador de carta de canal
- Como Negociar
- HTTPS
- IAM
- Dados de identificação:
- Incluindo
- Crescimento
- info
- Infraestrutura
- integração
- envolvido
- IT
- Java
- Chave
- chaves
- Idiomas
- lançamento
- lança
- aprendido
- aprendizagem
- Nível
- local
- aprendizado de máquina
- mercado
- ML
- MLOps
- modelo
- modulares
- líquido
- networking
- laptops
- notificação
- oferecer
- Outros
- padrão
- políticas
- Privacidade
- pasta
- poder
- predição
- Produto
- Produção
- Produtos
- Programação
- linguagens de programação
- projeto
- projetos
- Python
- qualidade
- Requisitos
- recurso
- Recursos
- DESCANSO
- Resultados
- Execute
- sábio
- cientistas
- Sdk
- segurança
- semente
- Serviços
- conjunto
- simples
- Software
- desenvolvimento de software
- Soluções
- velocidade
- começo
- começado
- Declaração
- armazenamento
- loja
- .
- teste
- ensaio
- A fonte
- tempo
- Training
- Transformação
- usuários
- ux
- valor
- Ver
- QUEM
- dentro
- Atividades:
- de gestão de documentos
- automação de fluxo de trabalho
- trabalho
- escrita
- anos