Etapas do pipeline de cache - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Etapas do pipeline de cache

Quando você usa o cache de assinatura de etapas, o SageMaker Pipelines tenta encontrar uma execução anterior da etapa atual do pipeline com os mesmos valores para determinados atributos. Se encontrado, o SageMaker Pipelines propaga as saídas da execução anterior em vez de recalcular a etapa. Os atributos verificados são específicos do tipo de etapa e estão listados em Atributos de chave de cache padrão por tipo de etapa do pipeline.

Você deve optar pelo armazenamento em cache por etapas — ele está desativado por padrão. Ao ativar o cache de etapas, você também deve definir um tempo limite. Esse tempo limite define quantos anos uma corrida anterior pode ter para permanecer candidata à reutilização.

O cache de etapas considera apenas execuções bem-sucedidas — ele nunca reutiliza execuções com falha. Quando existem várias execuções bem-sucedidas dentro do período de tempo limite, o SageMaker Pipelines usa o resultado para a execução bem-sucedida mais recente. Se nenhuma execução bem-sucedida coincidir no período de tempo limite, o SageMaker Pipelines executa a etapa novamente. Se o executor encontrar uma execução anterior que atenda aos critérios, mas ainda esteja em andamento, as duas etapas continuarão em execução e atualizarão o cache se forem bem-sucedidas.

O cache de etapas tem como escopo apenas pipelines individuais, portanto, você não pode reutilizar uma etapa de outro pipeline, mesmo que haja uma correspondência na assinatura da etapa.

O cache de etapas está disponível para os seguintes tipos de etapas:

Ativar o cache de etapas

Para ativar o cache de etapas, você deve adicionar uma propriedade CacheConfig à definição da etapa.

As propriedades CacheConfig usam o seguinte formato no arquivo de definição do pipeline:

{     "CacheConfig": {         "Enabled": false,         "ExpireAfter": "<time>"     } }

O campo Enabled indica se o armazenamento em cache está ativado para a etapa específica. Você pode definir o campo comotrue, que diz SageMaker para tentar encontrar uma execução anterior da etapa com os mesmos atributos. Ou você pode definir o campo comofalse, que diz SageMaker para executar a etapa toda vez que o pipeline for executado. ExpireAfteré uma string no formato de duração ISO 8601 que define o período de tempo limite. A ExpireAfter duração pode ser um valor de ano, mês, semana, dia, hora ou minuto. Cada valor consiste em um número seguido por uma letra indicando a unidade de duração. Por exemplo: .

  • "30d" = 30 dias

  • "5y" = 5 anos

  • "T16m" = 16 minutos

  • "30dT5h" = 30 dias e 5 horas.

A discussão a seguir descreve o procedimento para ativar o armazenamento em cache para pipelines novos ou preexistentes usando o SDK do Amazon Python SageMaker .

Ativar o armazenamento em cache para novos pipelines

Para novos pipelines, inicialize uma instância CacheConfig com enable_caching=True e forneça-a como entrada para a etapa do pipeline. O exemplo a seguir ativa o armazenamento em cache com um período de tempo limite de 1 hora para uma etapa de treinamento:

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.steps import CacheConfig cache_config = CacheConfig(enable_caching=True, expire_after="PT1H") estimator = Estimator(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="TrainAbaloneModel", step_args=estimator.fit(inputs=inputs), cache_config=cache_config )

Ativar o armazenamento em cache para pipelines pré-existentes

Para ativar o armazenamento em cache para pipelines preexistentes e já definidos, ative a propriedade enable_caching da etapa e defina expire_after como valor de tempo limite. Por fim, atualize o pipeline com pipeline.upsert() ou pipeline.update(). Depois de executá-lo novamente, o exemplo de código a seguir ativa o armazenamento em cache com um período de tempo limite de 1 hora para uma etapa de treinamento:

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.steps import CacheConfig from sagemaker.workflow.pipeline import Pipeline cache_config = CacheConfig(enable_caching=True, expire_after="PT1H") estimator = Estimator(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="TrainAbaloneModel", step_args=estimator.fit(inputs=inputs), cache_config=cache_config ) # define pipeline pipeline = Pipeline( steps=[step_train] ) # additional step for existing pipelines pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Como alternativa, atualize a configuração do cache depois de já ter definido o pipeline (preexistente), permitindo a execução contínua de um código. O exemplo de código a seguir demonstra esse método:

# turn on caching with timeout period of one hour pipeline.steps[0].cache_config.enable_caching = True pipeline.steps[0].cache_config.expire_after = "PT1H" # additional step for existing pipelines pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Para exemplos de código mais detalhados e uma discussão sobre como os parâmetros do SDK do Python afetam o armazenamento em cache, consulte Configuração de cache na documentação do SDK do Amazon Python. SageMaker

Desativar o cache de etapas

Uma etapa do pipeline não será executada novamente se você alterar algum atributo que não esteja listado em Atributos de chave de cache padrão por tipo de etapa do pipeline como seu tipo de etapa. No entanto, você pode decidir que deseja que a etapa do pipeline seja executada novamente de qualquer maneira. Nesse caso, você precisa desativar o cache de etapas.

Para desativar o armazenamento em cache de etapas, defina o Enabled atributo na propriedade CacheConfig da definição da etapa como false, conforme mostrado no seguinte trecho de código:

{     "CacheConfig": {         "Enabled": false,         "ExpireAfter": "<time>"     } }

Observe que o atributo ExpireAfter é ignorado quando Enabled é false.

Para desativar o armazenamento em cache de uma etapa do pipeline usando o SDK do Amazon SageMaker Python, defina o pipeline da etapa do pipeline, desative enable_caching a propriedade e atualize o pipeline.

Depois de executá-lo novamente, o exemplo de código a seguir desativa o armazenamento em cache para uma etapa de treinamento:

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.steps import CacheConfig from sagemaker.workflow.pipeline import Pipeline cache_config = CacheConfig(enable_caching=False, expire_after="PT1H") estimator = Estimator(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="TrainAbaloneModel", step_args=estimator.fit(inputs=inputs), cache_config=cache_config ) # define pipeline pipeline = Pipeline( steps=[step_train] ) # update the pipeline pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Como alternativa, desative a propriedade enable_caching depois de já ter definido o pipeline, permitindo a execução contínua de um código. O exemplo de código a seguir demonstra essa solução:

# turn off caching for the training step pipeline.steps[0].cache_config.enable_caching = False # update the pipeline pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Para exemplos de código mais detalhados e uma discussão sobre como os parâmetros do SDK do Python afetam o armazenamento em cache, consulte Configuração de cache na documentação do SDK do Amazon Python. SageMaker

Atributos de chave de cache padrão por tipo de etapa do pipeline

Ao decidir se deve reutilizar uma etapa anterior do pipeline ou executar novamente a etapa, o SageMaker Pipelines verifica se determinados atributos foram alterados. Se o conjunto de atributos for diferente de todas as execuções anteriores dentro do período de tempo limite, a etapa será executada novamente. Esses atributos incluem artefatos de entrada, especificação de aplicativo ou algoritmo e variáveis de ambiente.

A lista a seguir mostra cada tipo de etapa do pipeline e os atributos que, se alterados, iniciam uma nova execução da etapa. Para obter mais informações sobre quais parâmetros do SDK do Python são usados para criar os seguintes atributos, consulte Configuração de cache na documentação do SDK do Amazon Python SageMaker .

  • AppSpecification

  • Ambiente

  • ProcessingInputs. Este atributo contém informações sobre o script de pré-processamento.

  • AlgorithmSpecification

  • CheckpointConfig

  • DebugHookConfig

  • DebugRuleConfigurações

  • Ambiente

  • HyperParameters

  • InputDataConfig. Este atributo contém informações sobre o script de treinamento.

  • HyperParameterTuningJobConfig

  • TrainingJobDefinição. Esse atributo é composto por vários atributos secundários, e nem todos fazem com que a etapa seja executada novamente. Os atributos secundários que podem incorrer em uma nova execução (se alterados) são:

    • AlgorithmSpecification

    • HyperParameterIntervalos

    • InputDataConfig

    • StaticHyperParâmetros

    • TuningObjective

  • TrainingJobDefinições

  • AutoMLJobConfig. Esse atributo é composto por vários atributos secundários, e nem todos fazem com que a etapa seja executada novamente. Os atributos secundários que podem incorrer em uma nova execução (se alterados) são:

    • CompletionCriteria

    • CandidateGenerationConfig

    • DataSplitConfig

    • Modo

  • AutoML JobObjective

  • InputDataConfig

  • ProblemType

  • DataProcessing

  • Ambiente

  • ModelName

  • TransformInput

  • ClarifyCheckConfig

  • CheckJobConfig

  • SkipCheck

  • RegisterNewLinha de base

  • ModelPackageGroupName

  • SuppliedBaselineRestrições

  • QualityCheckConfig

  • CheckJobConfig

  • SkipCheck

  • RegisterNewLinha de base

  • ModelPackageGroupName

  • SuppliedBaselineRestrições

  • SuppliedBaselineEstatísticas

  • ClusterId

  • StepConfig

Controle de acesso a dados em cache

Quando um SageMaker pipeline é executado, ele armazena em cache os parâmetros e metadados associados aos SageMaker trabalhos lançados pelo pipeline e os salva para reutilização em execuções subsequentes. Esses metadados podem ser acessados por meio de várias fontes, além das etapas do pipeline em cache, e incluem os seguintes tipos:

  • Solicitações Describe*Job

  • CloudWatch Registros

  • CloudWatch Eventos

  • CloudWatch Métricas

  • SageMaker Pesquisar

Observe que o acesso a cada fonte de dados na lista é controlado por seu próprio conjunto de permissões do IAM. Remover o acesso de uma função específica a uma fonte de dados não afeta o nível de acesso às outras. Por exemplo, um administrador da conta pode remover as permissões do IAM para Describe*Job solicitações da função de um chamador. Embora o chamador não possa mais fazer solicitações Describe*Job, ele ainda pode recuperar os metadados de um pipeline executado com etapas em cache, desde que tenha permissão para executar o pipeline. Se um administrador da conta quiser remover completamente o acesso aos metadados de um SageMaker trabalho específico, ele precisará remover as permissões de cada um dos serviços relevantes que fornecem acesso aos dados.