목록전체 글 (29)
나는 문어~ 꿈을 꾸는 문어~

이전 포스팅에서 AWS 리소스들을 이용해 VPC 네트워크를 구축했다. 이전 포스팅 링크는 다음과 같다. https://harrykur139.tistory.com/29 AWS 네트워크 구성하고 모델 서빙하기 (1) 네트워크 구축 (VPC, Subnet, Internet gateway, NAT gateway, Route Tab AWS를 처음 배웠을 때, EC2라는 서비스를 사용했다. 이 서비스는 그냥 데이터 센터에 있는 컴퓨터를 빌려쓰는 것이었고, 클릭 몇 번으로 만들 수 있었다. 클릭 몇 번으로 만들어진 이 인스턴스에 harrykur139.tistory.com 이 시리즈에서 완성할 네트워크 구조는 아래와 같다. 이번 포스팅에서 만들 리소스들이다. EC2(Bastion server) : private sub..

AWS를 처음 배웠을 때, EC2라는 서비스를 사용했다. 이 서비스는 그냥 데이터 센터에 있는 컴퓨터를 빌려쓰는 것이었고, 클릭 몇 번으로 만들 수 있었다. 클릭 몇 번으로 만들어진 이 인스턴스에 접속하여 웹서버 코드를 다운받고 보안 그룹으로 포트만 열어주면 외부에서 접속하는 것까지 모든 것이 가능했다. 하지만 당연히 이 모든 것은 AWS에 이미 기본 환경이 셋팅되어 있기에 가능했고, 실제로 서비스 수준에서 AWS를 잘 사용하려면 이 뒷배경에 있는 모든 것들을 스스로 커스텀할 줄 알아야한다. 그래서 이번 포스팅에서는 EC2를 사용하기 위한 네트워크를 바닥부터 구축하며 아래 그림과 같은 네트워크를 구성해보려고한다. 네트워크를 구성한 후 두 개의 private subnet에 생성된 EC2 인스턴스 각각에 간..

Airflow는 워크플로를 관리하는 솔루션이다. 데이터 파이프라인을 정의할 수 있고 머신러닝 파이프라인도 airflow를 사용해 효율적으로 관리할 수 있다. 난 아직 실무에서 "이건 airflow 써야해...!"라는 상황을 아직 마주쳐본적 없다. (마주쳐보고싶다.) 예를 들어 1주일에 한 번씩 새로운 데이터로 학습을 하여 이온 음료 수요 예측 모델을 저장해야한다고 한다면, 아래와 같은 프로세스를 가정해볼 수 있다. 이온 음료 수요 데이터를 가져온다. 이온 음료 수요 데이터를 정제한다. 기상청 날씨 데이터를 가져온다. 기상청 날씨 데이터를 정제한다. 이온 음료 데이터와 날씨 데이터를 하나로 합친다. 모델을 학습한다. 대충 위와 같은 프로세스를 1주일마다 갱신된 데이터로 돌리고 싶다고 한다면 어떻게 해야 할..

이전 포스팅에서는 머신러닝 모델을 서빙하는 Flask 서버를 만들고 이를 도커 컨테이너로 실행했다. 이를 AWS의 EC2 인스턴스에 띄워놓고 외부에서 접속하는 작업까지 해보았다. 이는 아마 머신러닝 모델을 서비스에서 사용하기 위한 가장 간단하고 기본적인 형태일 것이다. 이것을 기반으로 조금 더 전처리 코드나 입력 값의 형태가 복잡한 모델도 서빙할 수 있을 것 같다. https://harrykur139.tistory.com/26 머신러닝 모델을 서빙해보자 (ec2 + sklearn + flask + docker) 머신러닝을 서비스에서 사용하기 위해서는 모델링과 서빙이 필요하다. 누군가 성능이 아주 좋은 모델을 만들었다고 해도 이를 서비스하기 위해서는 많은 고민이 필요하다. 모델을 어떤 서버에 harryku..

머신러닝을 서비스에서 사용하기 위해서는 모델링과 서빙이 필요하다. 누군가 성능이 아주 좋은 모델을 만들었다고 해도 이를 서비스하기 위해서는 많은 고민이 필요하다. 모델을 어떤 서버에 올릴 것인지, 시간이 지남에 따라 모델의 성능을 어떻게 모니터링 할 것인지, 특정 기간마다 어떻게 자동으로 재학습을 시킬 것인지 등이다. 이러한 것을 다루는 분야를 머신러닝 엔지니어링 혹은 MLOPS라고 부르는 것 같다. 이번 포스팅은 머신러닝 모델 서빙을 가장 간단한 수준으로 하여 첫 걸음을 떼보려한다. 전체 코드 링크는 다음과 같다. https://github.com/euiraekim/flask-model-serving 순서 sklearn으로 모델 학습 후 저장 어떤 모델을 학습시키냐보다 서빙에 중점을 두었기 때문에 ir..

논문 원본 : https://arxiv.org/pdf/2012.07436v3.pdf Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting Abstract 실생활의 많은 문제는 긴 시간(sequence)을 예측하는 것을 요구한다. 이를 Long sequence time-series forecasting(LSTF)라고 한다. 최근의 연구들은 Transformer를 기반으로 많이 이루어지는데, 이는 quadratic 시간 복잡도, 높은 메모리 사용, 인코더 디코더 고유의 문제 등 여러가지 한계가 존재한다. 따라서 이 논문에서는 Transformer를 기반으로 한 LSTF를 위한 효율적인 모델인 Informer를 제안한다..

대회 링크 : https://www.kaggle.com/c/shopee-product-matching 코드 링크 : https://github.com/euiraekim/kaggle-shopee/blob/main/visualization.ipynb 목표 이전 포스팅에서 ResNet18을 ArcFace Loss로 학습했다. 학습 결과 5 epoch에서 mean f1 score가 약 0.75가 나오며 가장 높은 성능을 보였고 이 때 threshold는 0.5였다. 이번 포스팅에서는 학습에 사용하지 않은 validation data로 실제로 검색을 해보고 입력 이미지와 검색 결과 이미지들을 시각화하여 살펴볼 것이다. faiss나 annoy와 같은 이러한 유사도 검색 과정을 빠르고 간편하게 도와주는 라이브러리들이..

대회 링크 : https://www.kaggle.com/c/shopee-product-matching 코드 링크 : https://github.com/euiraekim/kaggle-shopee/blob/main/train.ipynb 개요 딥러닝을 활용하여 특정 이미지가 어떤 class인지 알아낼 때 가장 일반적인 방법은 classification이다. 각 class마다 여러장의 사진을 준비하여 학습을 시키면, 모델은 특정한 이미지가 들어왔을 때 어떤 class에 가장 가까운 지 알아내는 능력을 갖게 된다. 이러한 방식을 언제나 사용할 수 있는 것은 아니다. 이 대회의 주최 측의 경우와 같이 class가 계속 추가될 때가 그렇다. 예를 들어 기존에 1000가지 종류의 제품이 올라와 있어서 이 제품들을 분류..