[英]how to run a batch transform job in sagemaker pipeline via custom inference code?
基於此處提供的 aws 文檔/示例, https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.html# Define-a-Transform-Step-to-Perform-Batch-Transformation ,創建一個 model 並且可以在經過訓練的 model 上運行批量轉換推理。它適用於此示例,但如果我們需要自定義推理腳本,我們如何在我們運行批量轉換之前,在 model 或 model package 中包含自定義推理腳本?
from sagemaker.transformer import Transformer
from sagemaker.inputs import TransformInput
from sagemaker.workflow.steps import TransformStep
transformer = Transformer(
model_name=step_create_model.properties.ModelName,
instance_type="ml.m5.xlarge",
instance_count=1,
output_path=f"s3://{default_bucket}/AbaloneTransform",
)
step_transform = TransformStep(
name="AbaloneTransform", transformer=transformer, inputs=TransformInput(data=batch_data)
)
您需要一個“ model 重新打包步驟”。
當管道需要在壓縮的 model 文件 (model.tar.gz) 中包含自定義腳本以上傳到 Amazon S3 並用於將 model 部署到 SageMaker 端點時,就會發生 Model 重新打包。 當 SageMaker 管道訓練 model 並將其注冊到 model 注冊表時,如果訓練作業中訓練的 model output 需要包含自定義推理腳本,它會引入一個重新打包步驟。 重新打包步驟解壓縮 model,添加新腳本,然后重新壓縮 model。運行管道將重新打包步驟添加為訓練作業。
基本上,您可以通過將訓練 output 調用為model_data
並將推理腳本作為entry_point
。
然后按順序,在訓練 model 之后,通過更改 entry_point 重新定義 model,在后者上你可以使用轉換器。
這是取自經過測試的代碼的示例流程:
my_model = Model(
image_uri=your_img_uri,
model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
role=role,
entry_point='inference_script.py',
name="your_inference_step_name"
)
step_create_model = ModelStep(
name="YourInfName",
step_args=my_model.create(instance_type="ml.m5.xlarge")
)
transformer = Transformer(
model_name=step_create_model.properties.ModelName,
instance_count=your_instance_count,
instance_type=your_instance_type,
output_path=your_path
)
當然,除了通用的 Model,您可以直接使用最適合您要求的那個(例如 PyTorchModel 等...)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.