본문 바로가기

분류 전체보기

(246)
도메인 주도 설계 핵심(반 버논, 2017) 도메인 주도 설계 핵심 정리 들어가며 이 글은 "반 버논님의 도메인 주도 설계 핵심 (2017)" 책을 읽고 회고 겸 정리한 글이다. 내게 임팩트 있던 내용들만 빠르게 훑어보며 정리해본다. 1장. 나에게 도메인 주도 설계는 이 장에서는 DDD의 중요성과 이 책의 개략적인 내용에 대해 설명한다. 이 책을 통해 우리는 크게 3가지에 대해 배우게 된다. 전략적 설계 (What) 전략적 설계는 세세한 구현으로 들어가기 앞서, "무엇을 할지"에 대해 큰 그림을 그리는 일이다. 바운디드 컨텍스트, 보편 언어, 서브 도메인, 컨텍스트 매핑 등에 대해 다룬다. 전술적 설계 (How) 전략적 설계 이후, 세세하게 "어떻게"에 대해 다루는 일이다. 엔티티, 값 객체, 애그리게이트, 도메인 이벤트 등에 대해 다룬다. 학습 ..
Commitizen으로 커밋, 버전 관리하기 들어가며 개발을 하며 Git을 잘 활용하려고 하다보면 이래저래 신경쓸게 많다. 그 중에서도 특히 커밋 메시지 규칙과 버저닝 규칙은 초반부터 잘 잡아놓으면 좋은 부분인데, 사실 규칙을 세우고 잘 지켜나가기가 쉽지 않다. 어떤 규칙을 세우고 팀원들에게 지켜달라고 해도, 실수는 늘 있기 마련이고, 중간에 이를 잡아주는 사람이 없으면 규칙은 언제든 무너지게 된다. 이번 글에서 소개할 commitizen은 이런 규칙을 잘 잡아주고 지켜나가도록 도와주는 python 라이브러리다. GitHub에서 오픈소스를 본 적이 있다면 CHANGELOG.md 나 섬세하게 버저닝이 된 태그들도 같이 보았을 것이다. 이런 것들을 모두 commitizen 으로 구현할 수 있다. commitizen을 사용하게 되면 더 이상 git co..
Feast - Quick Review 일반적인 정형 데이터 머신러닝 코드에는 데이터를 불러오고 필요한 feature를 뽑아 가공하는 부분이 있다. 보통 데이터 웨어하우스나 아니면 원천 데이터 소스에서 데이터를 불러올텐데, 이렇게 직접 데이터 소스에 붙지 않고 머신러닝에 필요한 데이터 스토어를 별도로 만들어 둘 수 있다. 그리고 여기에 필요한 feature들을 미리 가공하여 저장할 수 있고, 데이터 버전 관리도 도입해볼 수 있다. 이러한 개념으로 등장한 것이 feature store다. feature store는 머신러닝을 위한 feature 데이터를 모아둔 곳이라고 보면 된다. 이번 글에서는 feature store 오픈소스 툴인 Feast를 간단히 사용해보고 빠르게 리뷰해본다. 사전 준비 파이썬 3.8 (나는 3.8.7 을 사용했다.) 사..
Prefect - Quick Review Workflow 툴인 Prefect에 대해서 Quick하게 리뷰해보려고 한다. 이게 대체 뭔가 함은... 일단은 Apache Airflow 같이 워크 플로우를 정의하고 스케쥴링 돌리며, 이 모든 것을 체계적으로 매니징하는 오케스트레이션 툴이라고 보면 되겠다. 그래도 사용하기 전까지는 뭔지 확 감이 안오므로, Quick 하게 사용해보면서 어떤 건지 알아보자. 사전 준비 파이썬 3.8 (나는 3.8.7 을 사용했다.) 사용할 가상환경 접속 설치 # 설치 $ pip install prefect # 버전 확인 $ prefect version 0.14.17 아직 1점대가 나오지 않은 걸로 보아... 추후에 많이 바뀔 여지가 있겠다. 백엔드 서버 및 에이전트 실행 먼저 로컬에 prefect 와 관련된 세팅을 해보자..
MLflow - MLflow Projects 이번에는 MLflow Project 에 대해서 자세히 알아본다. 사전 준비 이전 글을 확인하자. 개요 MLflow Project는 말 그대로 MLflow에서 유용하게 관리, 사용하기 위해 정의하는 양식이다. 말로 설명하는 것보다 그냥 보고 이해하는게 더 빠를거 같다. 다음은 examples/sklearn_logistic_regression 에 있는 예시다. 하나의 MLflow Project는 다음과 같은 구조를 가진다고 보면 된다. sklearn_logistic_regression ├── MLproject ├── conda.yaml └── train.py MLproject 라는 파일이 존재하는데, 이 파일을 통해 이 프로젝트가 MLflow Project 임을 알 수 있다. MLflow Projet 는 m..
MLflow - Models 이번에는 MLflow의 Model에 대해서 좀 더 자세히 알아본다. 사전 준비 이전 글을 참고하자. 모델 저장하기 mlflow로 코드에서 모델을 저장하는 방법은 다음처럼 크게 2가지가 있다. mlflow.sklearn.save_model() mlflow.sklearn.log_model() 일단 sklearn 등 머신러닝 모델 프레임워크 단위로 함수를 제공한다. 그리고 log_model() 은 save_model() 를 똑같이 실행하는 것인데, 저장되는 위치가 run 내부라는 것이 다르다. 일단은 간단한 동작을 보기 위해 save_model() 을 사용해보자. 예를 들면 다음과 같다. import mlflow model = ... mlflow.sklearn.save_model(model, "my_model..
MLflow - Model Registry 이번에는 MLflow의 Model Registry에 대해서 알아본다. 사전 준비 음 이제 매번 쓰기 귀찮다. 어차피 직전 글이랑 이어지므로, 이전 글을 통해 확인하자. Model Registry 개념 Model Registry는 MLflow 프로젝트 실행을 통해 나온 결과물인 모델을 저장하는 중앙 집중식 모델 저장소다. MLflow로 모델을 기록했다면, 기록한 모델을 Model Registry에 등록할 수 있고, 등록된 모델은 어디서든 불러올 수 있다. 모델 등록하기 웹 UI로 등록하기 간단하게 모델을 등록해보자. 직전 글에서 사용한 실습을 그대로 이어간다. 웹 서버 (Tracking Server) 에 들어간 뒤, 실행했던 실행(Run)을 클릭하여 들어간다. 실행 상세페이지 하단에 Artifacts 블록..
MLflow - Tracking Server 이번에는 MLflow 의 Tracking Server에 대해 알아본다. 사전 준비 다음이 사전에 준비 되어 있어야 한다. # 파이썬 버전 확인 $ python --version Python 3.8.7 # mlflow 설치 & 버전 확인 $ pip install mlflow $ mlflow --version mlflow, version 1.16.0 # 예제 파일을 위한 mlflow repo clone $ git clone https://github.com/mlflow/mlflow.git $ cd mlflow/examples Tracking Server Tracking 이란? 이전의 글들을 통해 우리는 MLflow가 머신러닝 프로젝트에서 일종의 "기록" 역할을 하는 것임을 알았다. 여기서 머신러닝의 과정과 ..