Passe dados entre etapas
Ao criar pipelines com o Amazon SageMaker Pipelines, talvez seja necessário passar dados de uma etapa para a outra. Por exemplo, talvez você queira usar os artefatos do modelo gerados por uma etapa de treinamento como entrada para uma etapa de avaliação ou implantação de modelo. Você pode usar essa funcionalidade para criar etapas de pipeline interdependentes e construir seus fluxos de trabalho de ML.
Quando precisar recuperar informações da saída de uma etapa de pipeline, você pode usar JsonGet
. JsonGet
ajuda você a extrair informações do Amazon S3 ou de arquivos de propriedades. As seções a seguir explicam os métodos que você pode usar para extrair as saídas das etapas JsonGet
.
Transmita dados entre etapas com o Amazon S3
Você pode usar JsonGet
em um ConditionStep
para obter a saída JSON diretamente do Amazon S3. O URI do Amazon S3 pode ser uma função Std:Join
contendo strings primitivas, variáveis de execução de pipeline ou parâmetros de pipeline. O exemplo a seguir mostra como você pode usar JsonGet
em um ConditionStep
.
# Example json file in s3 bucket generated by a processing_step { "Output": [5, 10] } cond_lte = ConditionLessThanOrEqualTo( left=JsonGet( step_name="
<step-name>
", s3_uri="<s3-path-to-json>
", json_path="Output[1]" ), right=6.0 )
Se você estiver usando JsonGet
com um caminho do Amazon S3 na etapa de condição, deverá adicionar explicitamente uma dependência entre a etapa de condição e a etapa que gera a saída JSON. No seguinte exemplo, a etapa de condição é criada com uma dependência da etapa de processamento:
cond_step = ConditionStep( name="
<step-name>
", conditions=[cond_lte], if_steps=[fail_step], else_steps=[register_model_step], depends_on=[processing_step], )
Passe dados entre etapas com arquivos de propriedades
Use arquivos de propriedades para armazenar informações da saída de uma etapa de processamento. Isso é particularmente útil ao analisar os resultados de uma etapa de processamento para decidir como uma etapa condicional deve ser executada. A função JsonGet
processa um arquivo de propriedades e permite que você use a notação JSONPath para consultar o arquivo JSON da propriedade. Para obter mais informações sobre a notação JSONPath, consulte o repositório JSONPath.
Para armazenar um arquivo de propriedades para uso posterior, primeiro você deve criar uma instância PropertyFile
com o formato a seguir. O parâmetro path
é o nome do arquivo JSON no qual o arquivo de propriedades é salvo. Qualquer um output_name
deve corresponder ao output_name
do ProcessingOutput
que você define em sua etapa de processamento. Isso permite que o arquivo de propriedades capture o ProcessingOutput
na etapa.
from sagemaker.workflow.properties import PropertyFile
<property_file_instance>
= PropertyFile( name="<property_file_name>
", output_name="<processingoutput_output_name>
", path="<path_to_json_file>
" )
Ao criar sua instância ProcessingStep
, adicione o parâmetro property_files
para listar todos os arquivos de parâmetros que o serviço do Amazon SageMaker Pipelines deve indexar. Isso salva o arquivo de propriedades para uso posterior.
property_files=[
<property_file_instance>
]
Para usar seu arquivo de propriedade em uma etapa de condição, adicione a property_file
à condição que você passa para sua etapa de condição, conforme mostrado no exemplo a seguir, para consultar o arquivo JSON da propriedade desejada usando o parâmetro json_path
.
cond_lte = ConditionLessThanOrEqualTo( left=JsonGet( step_name=step_eval.name, property_file=
<property_file_instance>
, json_path="mse" ), right=6.0 )
Para obter exemplos mais detalhados, consulte Arquivo de propriedades