딥러닝과 머신러닝은 지금까지 가능성만 보여주고 사라져왔다.머신러닝과 딥러닝 코드만으로는 실제 서비스를 운영할 수 없기 때문이다.MLOps는 DevOps라는 개발 방법론에서 파생된 단어다.DevOps = Development + Operations(운영)소프트웨어 개발
Hidden Technical Debt in Machine Learning Systems구글의 ML Product에 대한 생각을 담고 있는 논문이다.위 논문의 핵심은 머신러닝을 이용한 제품을 만드는데 있어 머신러닝 코드는 전체 시스템 구성 중 아주 일부일 뿐이라는 것이
Practitioners guide to MLOps구글은 MLOps의 핵심 기능들을 언급했다.머신러닝 엔지니어들이 데이터를 분석, 프로토타입 모델을 만들며 학습 기능을 구현할 수 있도록 한다.Git과 같은 Version Control 도구, 주피 노트북 등의 환경 제공
성공적인 MLOps 시스템을 구축하기 위해서는 다양한 구성 요소들이 필요한데, 각 요소들이 유기적으로 운영되기 위해서는 인프라 레벨에서 수 많은 이슈를 해결해야 된다.이를 위해 Container & Container Orchestration System의 필요성이 등장
Cluster : 우분투가 설치되어 있는 데스크톱 하나를 의미한다.Client : 노트북 또는 클러스가 설치되어 있는 데스크톱 외의 클라이언트로 사용할 다른 데스크톱추후 Client와 Clutser의 원활한 통신을 위해서는 Port-Forwarding 을 수행해야 하는
쿠버네티스는 기본적으로 Docker-ce를 default container runtime으로 사용한다.따라서, Docker Contaier 내에서 NVIDIA GPU를 사용하기 위해서는 NVIDIA-Docker를 Container Runtime을 사용해 pod을 생성할
kubeflow v1.4.0 설치에 필요한 manifests 파일 준비해당 튜토리얼에서는 KFserving, MPI Operato, Knative 설치는 리소스 효율로 배제하고 설치3개 pod 모두 Running 될 때까지 대기kubeflow-issuer 설치istio
MLflow는 실험 관리, Model Pkg, Deployment 관리, Model 저장Backend Store로 사용할 용도의 PostgreSQL DB 쿠버네티스 클러스터에 배포mlflow-system이라는 namespace 생성
쿠버네티스 환경에 수많은 머신러닝 모델을 배포하고, 관리할 수 있는 오픈소스 프레임워크쿠버네티스의 Ingress를 담당하는 Ambassador, Istio와 같은 모듈 필요Ambassador - Helm Repository 추가업데이트ambassador chart 6.
모니터링을 위한 도구서비스 및 운영되고 있는 인프라 상태를 지속해서 관찰하여 발생하는 문제에 빠르게 대응해야된다.
Component Contents & Component Wrapper로 구성되어 있다.하나의 Component는 Wrapper를 통해 kubeflow에 전달되며 전달된 component는
python version >= 3.7
컴포넌트 작성을 위해서는 2가지 내용을 작성해야 한다.Component Contents 작성Component Wrapper 작성흔히 작성하는 Python Code와 다르지 않다.숫자를 입력받고 출력한 뒤 반환하는 컴포넌트의 예시다.하지만 number라는 변수가 정의되어
컴포넌트는 독립적으로 실행되지 않고, Pipeline의 구성 요소로써 실행된다.즉, 컴포넌트 실행을 위해서는 Pipeline을 작성해야 한다.Pipeline 작성을 위해서는 컴포넌트의 집합 & 실행 순서가 필요하다.숫자를 입력하고, 출력하는 컴포넌트와 두 개의 컴포넌트
API Deployment까지 나아가기 위해서는 MLFlow에 모델을 저장해야한다.MLflow에서 모델 저장, Serving에서 사용하기 위해서는 아래 항목이 필요하다.model, signature, input_example, conda_envinput_examples
학습된 모델을 사용해 추론할 때는 빠르고 쉽게 추론 결과를 받아 보고 싶다.직접 스크립트를 통해 모델 로드 후 추론할 수 있지만 이는 모델이 클수록 많은 시간을 소요하여 비효율적이다. 또한, 많은 사람이 이용할 수 없고, 해당 모델이 있는 환경으로 제한된다.그래서 실제
SeldonDeployment를 통한 API DeploymentSeldonDeployment는 쿠버네티스 모델을 REST/gRPC 서버의 형태로 배포하여 정의된 CRD(Custom Resource Definition)이다.새로운 namespace 생성seldon-dep
Seldon Deployment API Request 반복 수행 후 대시보드에 변화가 일어나는지 확인대시보드 포트 포워딩데이터 요청
initContainer는 모델 저장소에서 필요한 모델 다운로드다운로드 받은 모델을 container로 전달container는 전달받은 모델을 감싼 API 서버 실행생성된 API 서버 주소로 API를 요청하여 모델의 추론값 받아본다.Custom Resource인 Sel
저장된 모델을 이용해 API를 생성하는 방법initContainer가 minio 접근 후 모델을 다운로드 받으려면 credentials가 필요하다. minio에 접근하기 위한 credentials는 위와 같다.data에 입력되어야하는 값들secret에 입력되는 값은 인
여러 개의 모델을 연결하는 방법모델 2개를 생성하는 파이프라인 작성이전 사용한 SVC 모델에 StandardScaler를 추가하고 저장