Terraform을 사용한 SageMaker Endpoint 구축

소개



여기 블로그 을 참고로 아래와 같은 SageMaker Endpoint를 Invoke하는 Endpoint를 구축해 보았습니다.



API Gateway Endpoint에서 SageMaker Endpoint를 호출하는 Lambda 함수를 트리거하고 예측합니다.

코드는 GitHub에 올려져 있습니다.
htps : // 기주 b. 코 m / Sua Ah 7 / Iri s-data-en d Poin

운영 환경


  • macOS Mojave (10.14.6)
  • Terraform (0.12.6)

  • 파일 구성


    $ tree
    .
    ├── LICENSE
    ├── Makefile
    ├── README.md
    ├── config.tf
    ├── main.tf
    ├── modules
    │   ├── apigateway
    │   │   └── main.tf
    │   ├── iam
    │   │   └── main.tf
    │   ├── lambda
    │   │   ├── main.tf
    │   │   ├── src
    │   │   │   └── lambda_function.py
    │   │   └── upload
    │   │       └── lambda_function.zip
    │   └── sagemaker
    │       └── main.tf
    ├── request.sh
    ├── test.csv
    └── variables.tf
    

    사실은 main.tf
  • main.tf
  • variables.tf
  • outputs.tf

  • 에 나누어야 한다고 생각합니다만, 나눌 정도의 코드량이 아니었으므로, main.tf 에 정리해 버리고 있습니다.

    SageMaker Endpoint 정보



    추론 인스턴스를 설정하기 위해 설정이 필요한 항목은 Model, EndpointConfig, Endpoint의 세 가지입니다.
    모델은 어떤 S3 데이터를 로드할 것인지, 어떤 ECR 이미지를 사용할 것인지를 유지합니다.

    이번에는 Iris 데이터 세트의 샘플로 이미 구축한 모델인 Docker 이미지를 이용합니다.
  • Location of model artifacts
  • s3://aws-machine-learning-blog/artifacts/decision-trees/model.tar.gz

  • Location of inference code image
  • 305705277353.dkr.ecr.us-east-1.amazonaws.com/decision-trees-sample:latest


  • 참고



    Terraform에서 SageMaker 배포 모델 업데이트
    https://medium.com/mixi-developers/terraform에서 sagemaker 배포 - 모델 업데이트 - c1340fa0340d

    API Gateway + Lambda와 함께



    API Gateway와 Lambda의 모듈을 정리하거나 고민했지만, 나누어 보았습니다.
    이 근처의 모범 사례를 모르기 때문에 매번 고민합니다.

    참고



    Serverless Applications with AWS Lambda and API Gateway
    ぇtps://ぇあrん. 사시코 rp. 코 m / 테라 후 rm / 아 ws / 아 MB 다 - 아피가 테와

    동작 확인



    초기화


    $ terraform init
    

    건설



    SageMaker Endpoint의 Creation은 10분 정도 걸립니다.
    $ terraform apply
    

    예측



    csv에는 다음과 같은 추론 데이터가 포함됩니다.
  • Sepal Length
  • Sepal Width
  • Petal Length
  • Petal Width

  • test.csv
    10,10,10,10
    
    <base_url> 에는 Terraform의 Outputs로 출력되는 base_url를 지정하십시오.
    $ curl -X POST -H "Content-Type: text/csv" -d "@test.csv" <base_url>
    {"code": 200, "variant": "variant-a", "prediction": "virginica"}
    

    뒷정리


    $ terraform destroy
    

    좋은 웹페이지 즐겨찾기