AWS SageMaker에서 모델에서 추리로 배치 (일괄 처리 변환 작업)
본 보도에서 한 일
저번 보도에서 진행된 훈련 작업 결과 생성된 모델의 배치.
목표 독자
언어 사용
교육 작업 결과에서 생성된 모델 배치
공식 문서에서 말한 바와 같이 모델을 배치할 때 응용 프로그램이 추리를 할 때 요청을 보내는 단점을 얻을 수 있습니다.따라서 교육 작업이 끝난 후에 모델 배치를 해야 한다.
다음은 코드에서 모델을 배치하는 것이다.
class SagemakerClient:
def __init__(self):
self.client = Session(profile_name="hoge").client("sagemaker", region_name="ap-northeast-1")
def create_model(self, model_data_url):
model_params = {
"ExecutionRoleArn": "arn:aws:iam::123:role/dev-sagemaker",
"ModelName": "sample-model", # モデル名
"PrimaryContainer": {
"Image": "123.dkr.ecr.ap-northeast-1.amazonaws.com/sagemaker-repo:latest", # ECRにプッシュしたイメージURL
"ModelDataUrl": model_data_url # モデルデータが格納されているS3のパス
}
}
self.client.create_model(**model_params)
if __name__ == '__main__':
model_data_url = ...
SagemakerClient().create_model(model_data_url)
상기 코드 중의 create_model
방법의 매개 변수model_data_url
는boto3의 describe_training_job
에서 얻은 것이다이 방정식 문서.참고로 취득한 코드는 다음과 같다.또한
model_data_url
의 매개 변수describe_training_job
는 훈련 작업을 보낼 때 되돌아오는 TrainingJobName
에서 얻은 것이다.client = Session(profile_name="hoge").client("sagemaker", region_name="ap-northeast-1")
model_data_url = client.describe_training_job(TrainingJobName=training_job_name)['ModelArtifacts']['S3ModelArtifacts']
다음과 같이 모델이 TransformJobArn
에 나타나면 완료됩니다.S3에 배치된 데이터를 취합하여 추리하는 대량 변환 작업 수행
이번에는 추리에 사용된 데이터와 추리 결과의 출력 목적지 등이 아래의 폴더로 구성되어 S3에 놓여 있다.
bucket
├── input-data-prediction
│ └── YYYY-MM-DD
│ └── multiclass
│ └── iris.csv
├── output-data-prediction
│ └── YYYY-MM-DD
│ └── multiclass
│
├── input-data-training
│ └── YYYY-MM-DD
│ └── multiclass
│ └── iris.csv
└── output-model
└── YYYY-MM-DD
└── multiclass
└── model名(←ここからはSageMakerが出力する)
다음 코드를 통해 배치 변환 작업을 보냅니다.작업을 보낼 때의 매개 변수
Amazon SageMaker > モデル
는 배치된 모델 이름을 사용합니다.배치된 모델 명칭은boto3의
ModelName
방법을 통해 얻을 수 있다이 방정식 문서.(모델 이름에 포함된 문자열과 배치된 시간만 검색할 수 있을 것 같다)
class SagemakerClient:
def __init__(self):
self.client = Session(profile_name="hoge").client("sagemaker", region_name="ap-northeast-1")
def submit_transform_job(self):
model_name = self.client.list_models(
NameContains="base_model_name", # 各自デプロイしたモデル名に含まれている文字列
SortOrder='Descending',
SortBy='CreationTime')["Models"][0]["ModelName"]
transform_params = {
"TransformJobName": "sample-transform_job_name", # バッチ変換ジョブ名
"ModelName": model_name, # デプロイしたモデル名
"MaxConcurrentTransforms": 2,
"MaxPayloadInMB": 50,
"BatchStrategy": "MultiRecord",
"TransformOutput": {
"S3OutputPath": "s3://bucket/output-data-prediction/YYYY-MM-DD/multiclass/" # 推論結果を格納するS3パス
},
"TransformInput": {
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://bucket/input-data-prediction/YYYY-MM-DD/multiclass/" # 推論を行うインプットデータが格納されているS3パス
}
},
"ContentType": "text/csv",
"SplitType": "Line"
},
"TransformResources": {
"InstanceType": "ml.c4.xlarge",
"InstanceCount": 1
}
}
self.client.create_transform_job(**transform_params)
if __name__ == '__main__':
SagemakerClient().submit_transform_job()
아래와 같이 상태가 Completed이면 완료됩니다.위에서 지정한 S3의 경로에 추리 결과가 저장되어 있어야 합니다.끝날 때
이번에는 배치 모델~일괄 처리 변환 작업을 보내는 코드만 기재되어 있지만 SageMaker의 Docker 용기 내
list_models
와Amazon SageMaker > バッチ変換ジョブ
직접공식적인github의 샘플을 사용합니다.
Reference
이 문제에 관하여(AWS SageMaker에서 모델에서 추리로 배치 (일괄 처리 변환 작업)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kurakura0916/items/8abf19a64cda74f00a79텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)