본문 바로가기

Engineering/MLOps10

[MLOps] 09 Jenkins 포스팅 개요 본 포스팅은 CD 자동화 tool인 Jenkins와 Jenkins의 플러그인 중 하나인 Jenkins Pipeline의 개념에 대해 정리하는 글입니다. Jenkins란? Jenkins란? Jenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software. - Jenkins 소프트웨어 개발 시의 지속적 통합 서비스를 제공하는 tool Jenkins의 역할과 장점 소스코드 일관성 유지 소스 관리 시스템은 필요 정적 코드 분석에 의한 코딩 규약 준수 여부.. 2023. 2. 20.
[MLOps] 08 ML Workflow - Github Actions 포스팅 개요 본 포스팅은 ML Workflow와 관련 자동화 tool인 Github Actions에 대해 정리하는 글입니다. ML Workflow란? Github의 예시를 통하여 workflow에 대해 알아보겠습니다. Github: 오픈소스 프로젝트를 위한 플랫폼 Github을 통해 만들어진 프로젝트는 공식적으로 프로젝트를 사용(user)하고 프로젝트에 기여(contributer)하는 것이 가능 Github flow: Git branch를 효과적으로 분리하고 관리하는 branching 전략 중 하나 흐름 create branch → commit change → pull request → get feedback → tests changes → merge branch (새로 생성된 branch를 master.. 2023. 2. 9.
[MLOps] 07 Kubeflow Kubeflow 성숙한 MLOps를 위해서는? Reproducibility: 실행 환경의 일관성 & 독립성 Job Scheduling: 스케쥴 관리, 병렬 작업 관리, 유휴 자원 관리 Auto-healing & Auto-scaling: 장애 대응, 트래픽 대응 → 이를 쉽게 실행할 수 있는 인프라가 쿠버네티스와 같은 컨테이너 기반의 오케스트레이션 시스템임 kubeflow Machine Learning Toolkit for Kubernetes 각 역할마다 모듈을 쪼개서 개발됨 Experimental 단계 문제 인식 + 데이터 수집 + 데이터 분석 ML 알고리즘 선택 + 모델 설계 실험 + 학습 hyperparameters 튜닝 Production 단계 ⇒ 머신러닝 모델 프로젝트의 end-to-end에서 필.. 2023. 2. 8.
[MLOps] 06 Model Monitoring - Prometheus 포스팅 개요 모델의 serving(배포)까지 성공했다면, 그 다음 단계는 무엇일까요? 그것은 바로 배포한 모델이 우리의 의도대로 동작하고 있는지에 대한 확인일 것입니다. 모델이 서비스화 되는 과정에서 예상치 못한 문제가 발생하지는 않았는지, 모델 자체가 불완전하지는 않은지 등 사전에 고려하지 못한 이슈를 발견하고 해결하기 위해 우리는 모델을 모니터링 할 필요가 있습니다. 이에 본 포스팅에서는 ML Model Monitoring의 방법론과 Prometheus, Grafana에 대하여 정리해보겠습니다. Model Monitoring Model Monitoring과 그 구성 요소 Model Monitoring이란, ‘serving한 모델의 지속 가능한 운영을 위한 관리’로 정리할 수 있습니다. 그렇다면 모델의.. 2023. 2. 8.
[MLOps] 05 Model Serving 포스팅 개요 본 포스팅은 머신러닝 모델 serving의 개념과 변화에 대해 정리하는 글입니다. 0. Model Serving 개요 머신러닝 모델의 Serving은 곧 머신러닝 모델의 서비스화를 뜻합니다. 여기서 서비스화란, 사용자가 특정한 방식으로 input을 전해주면, 서버에서 모델의 inference를 수행한 후, 사용자는 input에 대한 결과값을 전달받을 수 있도록 하는 것입니다. 이 때 고려해야 할 점은, 사용자가 보내는 input은 그 형태가 다양하며, 사용자가 input을 보내는 주기도 제각각이라는 것입니다. input 형태의 예시 HTTP API Request 챗봇과의 대화 넷플릭스 영상 좋아요 버튼 유튜브 구독 버튼 네이버 길찾기 버튼 이와 같이 다양한 형태의 input을 동적인 주기로 .. 2023. 1. 21.
[MLOps] 04 Model Management & MLflow 포스팅 개요본 포스팅은 머신러닝 모델의 life cycle과 그 관리 툴 중 하나인 MLflow에 대하여 정리한 글입니다. 머신러닝 모델의 life cycle 구성과 모델 관리의 필요성에 대해 알아본 후, MLflow에 대해 정리하고자 합니다.  ML Model의 Life CycleML Model의 Life Cycle머신러닝 모델은 다음과 같은 life cycle을 가집니다. Raw Data → Data Processing → Train & EvaluateTrain & Evaluate: 각각의 데이터와 모델, 파라미터로 학습을 해본 후 → 각각의 시도에서 성능 평가를 한 뒤 → 가장 좋은 성능을 내는 모델을 최종 모델로 결정 모델 재현을 위해서 기록해두어야 할 정보위와 같은 과정을 통해 도출한 최종 모델.. 2023. 1. 20.
[MLOps] 03 Data Management & DVC Data managementProblemML model을 개발하다보면, raw data를 조금씩 바꿔가면서(feature engineering) 여러 버전의 데이터를 생성하게 됩니다.그런데 이렇게 데이터를 바꿔가며 실험하다보면 어떤 데이터가 어떤 feature engineering을 통해 도출된 데이터인지 기억하기 어려워집니다.Solution일반적인 software을 개발할 때에도 source code는 지속해서 수정되기에, Git + GitHub, GitLab, Bitbucket을 통해 버전 관리 및 협업을 진행합니다.ML 분야에서도 마찬가지로 Git + GitHub, GitLab, Bitbucket을 통해 버전 관리, 협업 등을 진행합니다.하지만, GitHub, GitLab, Bitbucket 등의 .. 2023. 1. 20.
[MLOps] 02 Kubernetes Basic Kubernetes 컨테이너: 어플리케이션을 실행할 수 있는 환경까지 감싸서 어디서든 쉽게 실행할 수 있도록 해 주는 기술 컨테이너 런타임: 컨테이너를 사용할 때 필요한 도구 (ex. Docker) 컨테이너 오케스트레이션: 컨테이너 런타임을 통해 컨테이너를 정해진 방식에 따라 관리하는 도구 쿠버네티스: 컨테이너 런타임(Docker)을 통해 컨테이너 오케스트레이션을 하는 도구 Traditional Deployement vs Virtualized Deployment vs Container Deployment Traditional Deployement 하나의 물리적인 서버에서 여러 개의 애플리케이션을 실행 하나의 물리적인 서버 내에서 각각의 애플리케이션의 리소스 한계를 정의할 수 없기에, 리소스 할당 문제 발.. 2023. 1. 17.
[MLOps] 01 Docker Basic Docker Build Once, Run Anywhere container는 격리된 환경에서 프로세스를 실행시킬 수 있는 기술이며, containerization은 모델을 container화하는 기술입니다. 즉, container화를 통해 우리는 프로그램의 코드를 새로 작성하지 않아도 여러 환경에서 코드가 작동되게 할 수 있으므로, 실험 환경에서 개발된 머신러닝 모델이 서비스 환경에서도 작동할 수 있으며, 나아가 컴퓨터의 운영 체제에 상관 없이 실행 가능한 단일한 소프트웨어를 만들 수 있겠습니다. Docker는 이러한 container을 만들고 사용할 수 있도록 하는 containerization 기술 중 하나입니다. Dockerfile, Docker image, Docker container Docke.. 2023. 1. 16.