본문 바로가기

전체 글75

[MLOps] 06 Model Monitoring - Prometheus 포스팅 개요 모델의 serving(배포)까지 성공했다면, 그 다음 단계는 무엇일까요? 그것은 바로 배포한 모델이 우리의 의도대로 동작하고 있는지에 대한 확인일 것입니다. 모델이 서비스화 되는 과정에서 예상치 못한 문제가 발생하지는 않았는지, 모델 자체가 불완전하지는 않은지 등 사전에 고려하지 못한 이슈를 발견하고 해결하기 위해 우리는 모델을 모니터링 할 필요가 있습니다. 이에 본 포스팅에서는 ML Model Monitoring의 방법론과 Prometheus, Grafana에 대하여 정리해보겠습니다. Model Monitoring Model Monitoring과 그 구성 요소 Model Monitoring이란, ‘serving한 모델의 지속 가능한 운영을 위한 관리’로 정리할 수 있습니다. 그렇다면 모델의.. 2023. 2. 8.
[백준] 1920번: 수 찾기 (Python/파이썬) + 이진 탐색 (Binary Search) https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에.. 2023. 1. 26.
[백준] 10828번: 스택 (Python/파이썬) https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있.. 2023. 1. 25.
[백준] 9012번: 괄호 (Python/파이썬) https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은.. 2023. 1. 25.
[백준] 4673번: 셀프 넘버 (Python/파이썬) https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 .. 2023. 1. 24.
[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.