목록AWS (13)
강
AWS Lambda 환경에서 ML 추론 작업 수행해보기 서론 해당 글에서는 다양한 ML 프레임워크 중 Tensorflow를 사용해 간단한 딥러닝 추론을 진행하는 방법에 대해 다룹니다. Tensorflow 추론 코드에 대한 이해도가 어느정도 있다고 가정하고 진행합니다. 1. 깃허브 구성 AWS Lambda에서 실행시킬 코드와 관련 라이브러리 환경 구성을 위해 깃허브를 이용합니다. 해당 깃허브 링크를 예시로 설명합니다. https://github.com/workdd/lambda-container-example model 폴더에는 추론을 위한 모델이 담겨져 있습니다 imagenet_class_index.json는 정확도 측정을 위한 imagenet의 정답 라벨 데이터가 json 형식으로 저장되어 있습니다 la..
aws cli은 기본적으로 대부분 version 1로 설치되어 있다. 하지만 연구를하면서 아래와 같이 aws cli version2 에서만 쓸 수 있는 명령어를 사용해야 했고, 버전을 업데이트 하였다. aws lambda create-function AWS CLI 1 삭제 aws 공식 문서에서도 version 1과 2는 모두 ‘aws’ 명령어 이름을 쓰기 때문에 주의가 필요하다고 한다. 나의 경우 간단하게 cli 1 버전을 삭제하고, cli 2버전을 새로 설치하였다. 해당 명령어들을 활용해 cli 1 버전 삭제를 진행한다 pip3 uninstall awscli sudo yum remove awscli sudo rm ~/.aws/ aws cli 1버전을 삭제하는데 굉장히 애를 먹었었다. 현재 해당 aws ..
M1 맥북이 출시되면서 더이상 인텔이 하드웨어 칩에서 1인자가 아님을 여러 느끼고 있다. 여러 하드웨어 칩 셋 제공업자들은 더이상 인텔에 의존하지 않고 독자적인 Arm 기반 칩을 만드는데 주력하는 것이 최근 트렌드인 듯 하다. AWS도 발빠르게 이러한 트렌드를 따라가고(주도 하는 것 같기도) 있으며 추론 용 하드웨어인 AWS Inferentia Neuron 칩도 발표가 되었었다. 오늘은 일반 인텔기반 EC2 처럼 범용적으로 사용할 수 있지만 성능면에서 최적화한 AWS의 Graviton2 칩을 소개하고자 한다. 이 글은 아래 세미나 강의를 적극 참고하여 작성했습니다. Graviton2 기반의 EC2 인스턴스 집중 탐구 - 윤석찬 https://www.youtube.com/watch?v=GHQMFVLRl4U..
문제 직면 람다에서 주기적으로 web에 request요청을 보내야 하는 작업을 해야했다. 기존에 python3.7 버전에서 람다를 즐겨 사용했던 나는 람다에서 리눅스 커맨드를 실행하는 방법으로 작업을 진행하려 했었다. 예시로 import os def lambda_handler(event,context): os.system("curl https://naver.com") python 내장 라이브러리인 os를 이용하여 람다에서 curl 명령어를 실행하려고 했었다. 하지만 어째서인지 아래와 같은 에러가 발생했다. bin/sh: curl: command not found 현재 람다가 사용하는 리눅스에 curl 명령어가 없다는 메세지였다. Stackoverflow를 통해 조금 더 공부해 보니, python3.7까지..
저번 포스팅에서 python boto3 라이브러리를 이용하여 s3를 download 받는 방법을 정리했다. 하지만 s3 download는 s3에 있는 이미지 데이터를 로컬에 저장해두어야 한다는 단점이 있다. 로컬에 이미지를 저장해야 하는 경우에는 괜찮겟지만, 나의 경우 굳이 이미지를 저장하지 않고 python 단에서 사용만 한 후 이미지에 대한 데이터만 뽑아두면 되는 상황이였다. 따라서 boto3의 object get 방식을 이용하여 python 단에서 이미지를 read하기만 하면 된다. import boto3 from PIL import Image s3 = boto3.resource('s3') def read_image_from_s3(filename): bucket = s3.Bucket(bucket_n..
서버리스 아키텍쳐를 AWS 에서는 Lambda, MicroSoft에서는 Azure Function으로 제공하고 있다. 두 제공 업체에서 모두 병렬적인 워크로드를 서버리스 환경에서 돌려보았다. AWS Lambda에서는 높은 처리량을 보였던 반면 Azure Function에서는 병렬적인 처리도 순차적으로 진행하는 경향을 보였다. 따라서 내부 구조에 대해 이해해 보려고 정리해보았다. Benchmarking Parallelism in FaaS Platforms 이라는 논문을 참고하여 구조에 대해 이해했다. 3.2. AWS Lambda architecture Control Plane은 사용자가 AWS Lambda 와Invoke Service 등을 구성하는 부분이다. Data Plane은 내부적으로 실행 환경을 구..
로컬 환경에서 S3에 파일을 업로드하거나 S3에서 파일을 다운로드 받고 싶은 경우가 있다. AWS CLI의 방법도 있지만 python의 boto3라는 라이브러리를 통해서도 진행할 수 있다. 우선 터미널을 켠다. 사전 작업 aws configure aws configure로 계정 등록은 필수다. pip install boto3 boto3 라이브러리를 설치한다 S3에서 다운로드 받기 import boto3 bucket_name = '' object_path = '' file_path = '/' s3 = boto3.client('s3') s3.download_file(bucket_name, object_path, file_path) S3에 로컬 파일 업로드하기 import boto3 bucket_name = ..
dynamodb에 올려져 있는 데이터를 로컬에 json 형태로 저장한다. 우선 터미널을 켠다. aws configure aws cli 명령어를 사용해야 하기 때문에 configure로 계정을 등록한다. aws dynamodb scan --table-name [table_name] --region ap-northeast-2 \ --output json > [file_name].json aws dynamodb의 scan 명령어를 활용한다. 테이블 이름, 해당 테이블이 있는 지역, json으로 만들 파일의 이름을 입력하면 끝이다.