bskyvision.com RSS 태그 관리 글쓰기 방명록
2023-05-05 15:23:52

AWS의 SageMaker에 올려져 있는 ML/AI 추론 모델 엔드포인트에 request 날리는 코드는 다음과 같습니다. 관련된 공식 레퍼런스(https://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/neo-requests-boto3.html)의 코드는 다음과 같습니다.

 

 

import boto3

import json
 
endpoint = 'insert name of your endpoint here'
 
runtime = boto3.Session().client('sagemaker-runtime')
 
# Read image into memory
with open(image, 'rb') as f:
    payload = f.read()
# Send image via InvokeEndpoint API
response = runtime.invoke_endpoint(EndpointName=endpoint, ContentType='application/x-image', Body=payload)

# Unpack response
result = json.loads(response['Body'].read().decode())

 

 

그런데 이것만으로는 실제 활용할 때 삽질을 할 가능성이 있습니다. 저의 경우에는 이 코드를 아래와 같이 수정해서 사용했습니다. 

 

import boto3
import json

sm = boto3.client('sagemaker-runtime', 
        region_name='ap-northeast-2', 
        aws_access_key_id='AccessKey 입력', # AccessKey
        aws_secret_access_key='SecretKey 입력' # SecretKey
    )
        
with open('./test.json', 'r') as f:
    json_data = json.load(f)

endpoint_name = "엔드포인트 이름"
response = sm.invoke_endpoint(EndpointName=endpoint_name, 
                            Body=json.dumps(json_data), # valid types: <class 'bytes'>, <class 'bytearray'>, file-like object
                            ContentType='application/json')
response_json = json.loads(response['Body'].read())

 

위 코드에서 요청을 날릴 때 Body에 담을 JSON은 test.json으로 따로 빼놓은 상태입니다. 이런 식으로 요청하면, 요청에 대한 응답이 잘 돌아옵니다. 

파이썬 기초 문법은 배웠지만 아직 파이썬을 제대로 활용하지 못하시는 분들은 제가 쓴 책 <쓸모있는 파이썬 프로그램 40개>을 참고하세요. 어떤 것이든 결국 써먹기 위해 배우는 것 아니겠습니까?^^
bskyvision.com. Designed by bskyvision.