MLOps é uma disciplina chave que muitas vezes supervisiona o caminho para a produção de modelos de aprendizado de máquina (ML). É natural concentrar-se num único modelo que pretende treinar e implementar. No entanto, na realidade, você provavelmente trabalhará com dezenas ou até centenas de modelos, e o processo poderá envolver diversas etapas complexas. Portanto, é importante ter a infraestrutura instalada para rastrear, treinar, implantar e monitorar modelos com complexidades variadas em escala. É aqui que entram as ferramentas MLOps. As ferramentas MLOps ajudam você a construir e simplificar esses processos de forma repetitiva e confiável em um fluxo de trabalho personalizado para ML.
Pipelines Amazon SageMaker, uma característica de Amazon Sage Maker, é um serviço de orquestração de fluxo de trabalho desenvolvido especificamente para ML que ajuda a automatizar fluxos de trabalho de ML de ponta a ponta em grande escala. Ele simplifica o desenvolvimento e a manutenção de modelos de ML, fornecendo uma plataforma centralizada para orquestrar tarefas como preparação de dados, treinamento de modelos, ajuste e validação. O SageMaker Pipelines pode ajudá-lo a simplificar o gerenciamento do fluxo de trabalho, acelerar a experimentação e retreinar modelos com mais facilidade.
Nesta postagem, destacamos um novo recurso interessante do SageMaker Pipelines conhecido como Execução Seletiva. Esse novo recurso permite que você execute seletivamente partes específicas do seu fluxo de trabalho de ML, resultando em economia significativa de tempo e recursos de cálculo, limitando a execução às etapas do pipeline no escopo e eliminando a necessidade de executar etapas fora do escopo. Além disso, exploramos vários casos de uso onde as vantagens da utilização da Execução Seletiva se tornam evidentes, solidificando ainda mais a sua proposta de valor.
Visão geral da solução
SageMaker Pipelines continua a inovar sua experiência de desenvolvedor com o lançamento de Execução Seletiva. Os construtores de ML agora podem escolher etapas específicas para execução em um pipeline, eliminando a necessidade de executar novamente todo o pipeline. Esse recurso permite executar novamente seções específicas do pipeline enquanto modifica os parâmetros de tempo de execução associados às etapas selecionadas.
É importante observar que as etapas selecionadas podem depender dos resultados de etapas não selecionadas. Nesses casos, as saídas destas etapas não selecionadas são reutilizadas a partir de uma execução de referência da versão atual do pipeline. Isto significa que a execução de referência já deve ter sido concluída. A execução de referência padrão é a execução mais recente da versão atual do pipeline, mas você também pode optar por usar uma execução diferente da versão atual do pipeline como referência.
O estado geral da execução de referência deve ser Bem sucedido, fracassado or Parado. Não pode ser Corrida quando a Execução Seletiva tenta usar suas saídas. Ao usar a Execução Seletiva, você pode escolher qualquer número de etapas a serem executadas, desde que elas formem uma parte contígua do pipeline.
O diagrama a seguir ilustra o comportamento do pipeline com uma execução completa.
O diagrama a seguir ilustra o comportamento do pipeline usando a execução seletiva.
Nas seções a seguir, mostramos como usar a execução seletiva para vários cenários, incluindo fluxos de trabalho complexos em gráficos acíclicos diretos (DAGs) de pipeline.
Pré-requisitos
Para começar a experimentar a Execução Seletiva, precisamos primeiro configurar os seguintes componentes do seu ambiente SageMaker:
- SDK Python do SageMaker – Certifique-se de ter um atualizado SDK Python do SageMaker instalado em seu ambiente Python. Você pode executar o seguinte comando em seu notebook ou terminal para instalar ou atualizar a versão do SageMaker Python SDK para 2.162.0 ou mais alto:
python3 -m pip install sagemaker>=2.162.0
orpip3 install sagemaker>=2.162.0
. - Acesso ao SageMaker Studio (opcional) - Estúdio Amazon SageMaker pode ser útil para visualizar execuções de pipeline e interagir visualmente com ARNs de pipeline preexistentes. Se você não tem acesso ao SageMaker Studio ou está usando notebooks sob demanda ou outros IDEs, você ainda pode seguir esta postagem e interagir com os ARNs do seu pipeline usando o Python SDK.
O código de exemplo para um passo a passo completo está disponível no GitHub repo.
instalação
Com o sagemaker>=1.162.0
SDK do Python, apresentamos o SelectiveExecutionConfig
aula como parte do sagemaker.workflow.selective_execution_config
módulo. O recurso de execução seletiva depende de um ARN de pipeline que foi previamente marcado como Sucedido, fracassado or Parado. O trecho de código a seguir demonstra como importar o SelectiveExecutionConfig
classe, recupere o ARN do pipeline de referência e reúna as etapas do pipeline associadas e os parâmetros de tempo de execução que regem a execução do pipeline:
import boto3
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.selective_execution_config import SelectiveExecutionConfig sm_client = boto3.client('sagemaker')
# reference the name of your sample pipeline pipeline_name = "AbalonePipeline"
# filter for previous success pipeline execution arns
pipeline_executions = [_exec for _exec in Pipeline(name=pipeline_name).list_executions()['PipelineExecutionSummaries'] if _exec['PipelineExecutionStatus'] == "Succeeded"
]
# get the last successful execution
latest_pipeline_arn = pipeline_executions[0]['PipelineExecutionArn']
print(latest_pipeline_arn)
>>> arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/x62pbar3gs6h # list all steps of your sample pipeline
execution_steps = sm_client.list_pipeline_execution_steps( PipelineExecutionArn=latest_pipeline_arn
)['PipelineExecutionSteps']
print(execution_steps)
>>> [{'StepName': 'Abalone-Preprocess', 'StartTime': datetime.datetime(2023, 6, 27, 4, 41, 30, 519000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2023, 6, 27, 4, 41, 30, 986000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'AttemptCount': 0, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-1:123123123123:processing-job/pipelines-fvsmu7m7ki3q-Abalone-Preprocess-d68CecvHLU'}}, 'SelectiveExecutionResult': {'SourcePipelineExecutionArn': 'arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/ksm2mjwut6oz'}}, {'StepName': 'Abalone-Train', 'StartTime': datetime.datetime(2023, 6, 27, 4, 41, 31, 320000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2023, 6, 27, 4, 43, 58, 224000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'AttemptCount': 0, 'Metadata': {'TrainingJob': {'Arn': 'arn:aws:sagemaker:us-east-1:123123123123:training-job/pipelines-x62pbar3gs6h-Abalone-Train-PKhAc1Q6lx'}}}, {'StepName': 'Abalone-Evaluate', 'StartTime': datetime.datetime(2023, 6, 27, 4, 43, 59, 40000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2023, 6, 27, 4, 57, 43, 76000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'AttemptCount': 0, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-1:123123123123:processing-job/pipelines-x62pbar3gs6h-Abalone-Evaluate-vmkZDKDwhk'}}}, {'StepName': 'Abalone-MSECheck', 'StartTime': datetime.datetime(2023, 6, 27, 4, 57, 43, 821000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2023, 6, 27, 4, 57, 44, 124000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'AttemptCount': 0, 'Metadata': {'Condition': {'Outcome': 'True'}}}] # list all configureable pipeline parameters # params can be altered during selective execution
parameters = sm_client.list_pipeline_parameters_for_execution( PipelineExecutionArn=latest_pipeline_arn
)['PipelineParameters']
print(parameters)
>>> [{'Name': 'XGBNumRounds', 'Value': '120'}, {'Name': 'XGBSubSample', 'Value': '0.9'}, {'Name': 'XGBGamma', 'Value': '2'}, {'Name': 'TrainingInstanceCount', 'Value': '1'}, {'Name': 'XGBMinChildWeight', 'Value': '4'}, {'Name': 'XGBETA', 'Value': '0.25'}, {'Name': 'ApprovalStatus', 'Value': 'PendingManualApproval'}, {'Name': 'ProcessingInstanceCount', 'Value': '1'}, {'Name': 'ProcessingInstanceType', 'Value': 'ml.t3.medium'}, {'Name': 'MseThreshold', 'Value': '6'}, {'Name': 'ModelPath', 'Value': 's3://sagemaker-us-east-1-123123123123/Abalone/models/'}, {'Name': 'XGBMaxDepth', 'Value': '12'}, {'Name': 'TrainingInstanceType', 'Value': 'ml.c5.xlarge'}, {'Name': 'InputData', 'Value': 's3://sagemaker-us-east-1-123123123123/sample-dataset/abalone/abalone.csv'}]
Os casos de uso
Nesta seção, apresentamos alguns cenários em que a Execução Seletiva pode potencialmente economizar tempo e recursos. Utilizamos um fluxo típico de pipeline, que inclui etapas como extração de dados, treinamento, avaliação, registro de modelo e implantação, como referência para demonstrar as vantagens da Execução Seletiva.
O SageMaker Pipelines permite definir parâmetros de tempo de execução para a execução do pipeline usando parâmetros de pipeline. Quando uma nova execução é acionada, normalmente executa todo o pipeline do início ao fim. No entanto, se cache de etapas estiver ativado, o SageMaker Pipelines tentará encontrar uma execução anterior da etapa atual do pipeline com os mesmos valores de atributo. Se uma correspondência for encontrada, o SageMaker Pipelines usará as saídas da execução anterior em vez de recalcular a etapa. Observe que mesmo com o cache de etapas ativado, o SageMaker Pipelines ainda executará todo o fluxo de trabalho até o final por padrão.
Com o lançamento do recurso Execução seletiva, agora você pode executar novamente um fluxo de trabalho de pipeline inteiro ou executar seletivamente um subconjunto de etapas usando um ARN de pipeline anterior. Isso pode ser feito mesmo sem o cache de etapas habilitado. Os casos de uso a seguir ilustram as diversas maneiras de usar a Execução Seletiva.
Caso de uso 1: execute uma única etapa
Os cientistas de dados muitas vezes se concentram no estágio de treinamento de um pipeline de MLOps e não querem se preocupar com as etapas de pré-processamento ou implantação. A execução seletiva permite que os cientistas de dados se concentrem apenas na etapa de treinamento e modifiquem os parâmetros ou hiperparâmetros de treinamento dinamicamente para melhorar o modelo. Isso pode economizar tempo e reduzir custos porque os recursos de computação são utilizados apenas para executar etapas de pipeline selecionadas pelo usuário. Veja o seguinte código:
# select a reference pipeline arn and subset step to execute
selective_execution_config = SelectiveExecutionConfig( source_pipeline_execution_arn="arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/9e3ljoql7s0n", selected_steps=["Abalone-Train"]
) # start execution of pipeline subset
select_execution = pipeline.start( selective_execution_config=selective_execution_config, parameters={ "XGBNumRounds": 120, "XGBSubSample": 0.9, "XGBGamma": 2, "XGBMinChildWeight": 4, "XGBETA": 0.25, "XGBMaxDepth": 12 }
)
As figuras a seguir ilustram o pipeline com uma etapa em processo e depois concluída.
Caso de uso 2: execute várias etapas de pipeline contíguas
Continuando com o caso de uso anterior, um cientista de dados deseja treinar um novo modelo e avaliar seu desempenho em relação a um conjunto de dados de teste de ouro. Esta avaliação é crucial para garantir que o modelo atenda às diretrizes rigorosas para testes de aceitação do usuário (UAT) ou implantação em produção. No entanto, o cientista de dados não quer executar todo o fluxo de trabalho do pipeline nem implantar o modelo. Eles podem usar a Execução Seletiva para se concentrar apenas nas etapas de treinamento e avaliação, economizando tempo e recursos e ainda obtendo os resultados de validação necessários:
# select a reference pipeline arn and subset step to execute
selective_execution_config = SelectiveExecutionConfig( source_pipeline_execution_arn="arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/9e3ljoql7s0n", selected_steps=["Abalone-Train", "Abalone-Evaluate"]
) # start execution of pipeline subset
select_execution = pipeline.start( selective_execution_config=selective_execution_config, parameters={ "ProcessingInstanceType": "ml.t3.medium", "XGBNumRounds": 120, "XGBSubSample": 0.9, "XGBGamma": 2, "XGBMinChildWeight": 4, "XGBETA": 0.25, "XGBMaxDepth": 12 }
)
Caso de uso 3: atualizar e executar novamente etapas de pipeline com falha
Você pode usar a Execução Seletiva para executar novamente etapas com falha em um pipeline ou retomar a execução de um pipeline a partir de uma etapa com falha. Isso pode ser útil para solucionar problemas e depurar etapas com falha, pois permite que os desenvolvedores se concentrem nos problemas específicos que precisam ser resolvidos. Isso pode levar a uma solução de problemas mais eficiente e a tempos de iteração mais rápidos. O exemplo a seguir ilustra como você pode optar por executar novamente apenas a etapa com falha de um pipeline.
# select a previously failed pipeline arn
selective_execution_config = SelectiveExecutionConfig( source_pipeline_execution_arn="arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/fvsmu7m7ki3q", selected_steps=["Abalone-Evaluate"]
) # start execution of failed pipeline subset
select_execution = pipeline.start( selective_execution_config=selective_execution_config
)
Alternativamente, um cientista de dados pode retomar um pipeline de uma etapa com falha até o final do fluxo de trabalho, especificando a etapa com falha e todas as etapas que a seguem no campo SelectiveExecutionConfig
.
Caso de uso 4: cobertura de pipeline
Em alguns pipelines, certas ramificações são executadas com menos frequência do que outras. Por exemplo, pode haver uma ramificação que só é executada quando uma condição específica falha. É importante testar minuciosamente essas ramificações para garantir que funcionem conforme o esperado quando ocorrer uma falha. Ao testar essas ramificações executadas com menos frequência, os desenvolvedores podem verificar se seu pipeline é robusto e se os mecanismos de tratamento de erros mantêm efetivamente o fluxo de trabalho desejado e produzem resultados confiáveis.
selective_execution_config = SelectiveExecutionConfig( source_pipeline_execution_arn="arn:aws:sagemaker:us-east-1:123123123123:pipeline/AbalonePipeline/execution/9e3ljoql7s0n", selected_steps=["Abalone-Train", "Abalone-Evaluate", "Abalone-MSECheck", "Abalone-FailNotify"]
)
Conclusão
Nesta postagem, discutimos o recurso de execução seletiva do SageMaker Pipelines, que permite executar seletivamente etapas específicas de seus fluxos de trabalho de ML. Esse recurso leva a uma economia significativa de tempo e recursos computacionais. Fornecemos alguns exemplos de código no GitHub repo que demonstra como usar a Execução Seletiva e apresenta vários cenários onde ela pode ser vantajosa para os usuários. Se você quiser saber mais sobre Execução Seletiva, consulte nosso Guia do desenvolvedor e Guia de referência de API.
Para explorar as etapas disponíveis no fluxo de trabalho do SageMaker Pipelines com mais detalhes, consulte Pipeline de criação de modelos do Amazon SageMaker e Fluxos de trabalho do SageMaker. Além disso, você pode encontrar mais exemplos mostrando diferentes casos de uso e abordagens de implementação usando SageMaker Pipelines no Exemplos do AWS SageMaker Repositório GitHub. Esses recursos podem aprimorar ainda mais sua compreensão e ajudá-lo a aproveitar todo o potencial do SageMaker Pipelines e da execução seletiva em seus projetos de ML atuais e futuros.
Sobre os autores
Pranav Murthy é arquiteto de soluções especialista em IA/ML na AWS. Ele se concentra em ajudar os clientes a criar, treinar, implantar e migrar cargas de trabalho de aprendizado de máquina (ML) para o SageMaker. Anteriormente, ele trabalhou na indústria de semicondutores desenvolvendo grandes modelos de visão computacional (CV) e processamento de linguagem natural (PNL) para melhorar processos de semicondutores. Nas horas vagas, gosta de jogar xadrez e viajar.
Akhil Numarsu é um gerente técnico de produto sênior focado em ajudar as equipes a acelerar os resultados de ML por meio de ferramentas e serviços eficientes na nuvem. Ele gosta de jogar tênis de mesa e é fã de esportes.
Nishant Krishnamoorthy é engenheiro sênior de desenvolvimento de software na Amazon Stores. Ele possui mestrado em Ciência da Computação e atualmente se concentra em acelerar a adoção de ML em diferentes organizações da Amazon, criando e operacionalizando soluções de ML no SageMaker.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- PlatoData.Network Gerativa Vertical Ai. Capacite-se. Acesse aqui.
- PlatoAiStream. Inteligência Web3. Conhecimento Amplificado. Acesse aqui.
- PlatãoESG. Automotivo / EVs, Carbono Tecnologia Limpa, Energia, Ambiente, Solar, Gestão de resíduos. Acesse aqui.
- PlatoHealth. Inteligência em Biotecnologia e Ensaios Clínicos. Acesse aqui.
- ChartPrime. Eleve seu jogo de negociação com ChartPrime. Acesse aqui.
- BlockOffsets. Modernizando a Propriedade de Compensação Ambiental. Acesse aqui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/unlocking-efficiency-harnessing-the-power-of-selective-execution-in-amazon-sagemaker-pipelines/
- :tem
- :é
- :onde
- $UP
- 1
- 100
- 12
- 2023
- 25
- 27
- 30
- 31
- 7
- 9
- a
- habilidade
- Sobre
- acelerar
- acelerando
- aceitação
- Acesso
- acíclico
- Adicionalmente
- Adoção
- Vantagem
- vantajoso
- vantagens
- contra
- AI / ML
- Todos os Produtos
- permite
- já
- tb
- alteradas
- Amazon
- Amazon Sage Maker
- Pipelines Amazon SageMaker
- Amazon Web Services
- an
- e
- qualquer
- se aproxima
- SOMOS
- AS
- associado
- At
- Tentativas
- automatizar
- disponível
- AWS
- BE
- Porque
- tornam-se
- sido
- comportamento
- Ramo
- ramos
- construir
- construtores
- Prédio
- mas a
- by
- CAN
- não podes
- capacidade
- casas
- casos
- centralizada
- certo
- xadrez
- Escolha
- classe
- Na nuvem
- código
- vem
- completar
- Efetuado
- integrações
- complexidades
- componentes
- Computar
- computador
- Ciência da Computação
- Visão de Computador
- condição
- continua
- Custo
- crucial
- Atual
- Atualmente
- Clientes
- dados,
- Preparação de dados
- cientista de dados
- datetime
- Padrão
- definir
- Grau
- demonstrar
- demonstra
- implantar
- desenvolvimento
- desejado
- detalhe
- Developer
- desenvolvedores
- em desenvolvimento
- Desenvolvimento
- diferente
- diretamente
- discutido
- parece
- Não faz
- feito
- não
- dezenas
- durante
- facilmente
- efetivamente
- eficiência
- eficiente
- eliminando
- empodera
- habilitado
- permite
- final
- end-to-end
- engenheiro
- aumentar
- garantir
- Todo
- Meio Ambiente
- avaliar
- avaliação
- Mesmo
- evidente
- exemplo
- exemplos
- emocionante
- executar
- execução
- esperado
- vasta experiência
- explorar
- Extração
- fracassado
- falha
- Falha
- ventilador
- mais rápido
- Característica
- poucos
- figuras
- filtro
- Encontre
- acabamento
- Primeiro nome
- fluxo
- Foco
- focado
- concentra-se
- seguir
- seguinte
- Escolha
- formulário
- encontrado
- Gratuito
- freqüentemente
- da
- cheio
- mais distante
- Além disso
- futuro
- reunir
- ter
- obtendo
- GitHub
- Dourado
- governando
- gráficos
- orientações
- Aproveitamento
- Ter
- he
- ajudar
- útil
- ajuda
- ajuda
- superior
- sua
- detém
- Como funciona o dobrador de carta de canal
- Como Negociar
- Contudo
- HTML
- HTTPS
- Centenas
- if
- ilustra
- implementação
- importar
- importante
- melhorar
- in
- inclui
- Incluindo
- indústria
- Infraestrutura
- inovar
- instalar
- instalado
- em vez disso
- interagir
- interagindo
- para dentro
- introduzido
- envolver
- questões
- IT
- iteração
- ESTÁ
- jpg
- apenas por
- Chave
- conhecido
- língua
- grande
- Sobrenome
- mais recente
- conduzir
- Leads
- APRENDER
- aprendizagem
- menos
- como
- Provável
- limitando
- Lista
- longo
- máquina
- aprendizado de máquina
- a manter
- manutenção
- de grupos
- marcado
- Match
- Posso..
- significa
- mecanismos
- média
- atende
- metadados
- poder
- migrado
- ML
- MLOps
- modelo
- modelos
- modificar
- Módulo
- Monitore
- mais
- mais eficiente
- múltiplo
- devo
- nome
- natural
- Processamento de linguagem natural
- você merece...
- Novo
- PNL
- caderno
- agora
- número
- of
- frequentemente
- on
- Sob demanda
- ONE
- só
- or
- orquestração
- Outros
- Outros
- A Nossa
- Fora
- Resultado
- resultados
- global
- parâmetros
- parte
- caminho
- atuação
- oleoduto
- Lugar
- plataforma
- platão
- Inteligência de Dados Platão
- PlatãoData
- jogar
- parte
- Publique
- potencial
- potencialmente
- poder
- preparação
- presente
- apresentado
- anterior
- anteriormente
- Prévio
- Solução de problemas
- processo
- processos
- em processamento
- produzir
- Produto
- Produção
- projetos
- proposição
- fornecido
- fornecendo
- Python
- Realidade
- reduzir
- Registo
- liberar
- confiável
- depender
- repositório
- recurso
- Recursos
- resultando
- Resultados
- currículo
- rigoroso
- uma conta de despesas robusta
- Execute
- corrida
- é executado
- sábio
- Pipelines SageMaker
- mesmo
- Salvar
- poupança
- Poupança
- Escala
- cenários
- Ciência
- Cientista
- cientistas
- escopo
- Sdk
- Seção
- seções
- Vejo
- selecionado
- seletivo
- Semicondutor
- serviço
- Serviços
- conjunto
- mostrar
- apresentando
- periodo
- simplificar
- solteiro
- fragmento
- Software
- desenvolvimento de software
- unicamente
- solidificando
- Soluções
- alguns
- especialista
- específico
- Esportes
- Holofote
- Etapa
- começo
- Estado
- Passo
- Passos
- Ainda
- lojas
- simplificar
- estudo
- sucesso
- bem sucedido
- tal
- mesa
- adaptados
- Tire
- tarefas
- equipes
- terminal
- teste
- ensaio
- do que
- que
- A
- deles
- então
- Lá.
- assim sendo
- Este
- deles
- isto
- completamente
- Através da
- tempo
- vezes
- para
- ferramentas
- pista
- Trem
- Training
- Viagens
- desencadeado
- verdadeiro
- típico
- tipicamente
- compreensão
- Desbloqueio
- Atualizar
- Atualizada
- atualização
- usar
- caso de uso
- Utilizador
- usuários
- utilização
- utilizado
- Utilizando
- validação
- valor
- Valores
- vário
- verificar
- versão
- visão
- Passo a passo
- queremos
- quer
- maneiras
- we
- web
- serviços web
- quando
- qual
- enquanto
- precisarão
- de
- dentro
- sem
- Atividades:
- trabalhou
- de gestão de documentos
- fluxos de trabalho
- preocupar-se
- seria
- Vocês
- investimentos
- zefirnet