如何解决AWS Sagemaker Workflow pIpeline 使用存储在从 Codebuild 创建的工件中的代码
我创建了一个 sagemaker.workflow.pipeline.Pipeline
对象,其中有几个处理步骤我试图引用 s3 文件路径而不是本地文件路径,这样它就不会将文件上传到s3 每次管道运行时。
我的问题是,我可以修改 step
或 scriptprocessor
或 pipeline
对象,以便我可以从从 AWS Codebuild 创建的工件中引用代码吗?
如果没有,我可以使用 codebuild 首先将我的本地文件复制到特定的 S3 位置(到目前为止我遇到了权限问题)然后运行管道吗?
作为参考
...
step_data_ingest = ProcessingStep(
name="DataIngestion",processor=sklearn_data_ingest_processor,inputs=[
ProcessingInput(
input_name="input_train_data",source=input_data,destination="/opt/ml/processing/input/data/train"
),ProcessingInput(
input_name="input_test_data",source=test_data,destination="/opt/ml/processing/input/data/test"
),ProcessingInput(
input_name="requirement_file",source=os.path.join(code_dir,"requirements.txt"),destination="/opt/ml/processing/input/requirement"
),],outputs=[
ProcessingOutput(
output_name="train",source="/opt/ml/processing/output/train",destination=get_projection_s3_dir(experiment_dir,"datasets/train")
),ProcessingOutput(
output_name="validation",source="/opt/ml/processing/output/validation","datasets/validation")
),ProcessingOutput(
output_name="test",source="/opt/ml/processing/output/test","datasets/test")
),ProcessingOutput(
output_name="sample",source="/opt/ml/processing/output/sample","datasets/sample")
),code=os.path.join(code_dir,"data_ingestion.py"),# something like s3://some_code_dir/data_ingestion.py
job_arguments = ["-c",country,"-v",train_val_split_percentage],)
...
我期望做的是:
# in processing step or processor
ProcessingStep(
...
code="data_ingestion.py"
code_location="s3://some_artifact_bucket/buildartifact/fdskz.zip"
...
)
或
# in processing step or processor
ProcessingStep(
...
code="s3://some_artifact_bucket/buildartifact/fdsix/data_ingestion.py"
...
)
或
# in buildspec.yml for codebuild
aws s3 sync ./code_dir/ s3://some_code_dir/
解决方法
使用ProcessingStep
时,可以使用S3 URI
作为代码位置,参考this。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。