AI Engineering/MLOps

반응형

    [BentoML] ML model serving 방법 (feat. YOLOv8)

    오늘은 BentoML을 이용한 model serving 방법을 설명드리려고 합니다. 정확히는 BentoML을 사용하여 model serving을 위한 model prediction api를 생성하는 것을 목표로 하겠습니다. 1. BentoML이란? Model serving 방법을 설명드리기 전 BentoML에 대해 간단히 알아보죠. BentoML의 Bento는 일본어이며 한국어로는 도시락을 의미합니다. BentoML: ML-powered prediction service 생성을 쉽게 해주는 framework BentoML의 Bento는 일본어이며 한국어로는 도시락을 의미 도시락이 밥과 반찬이 모두 있는 것처럼 BentoML은 model serving에 필요한 요소들을 모아주기 때문에 이와 같이 nami..

    Airflow (2) - DAG workflow 작성 및 실행

    1. Workflow(DAG) 작성 및 실행 이제부터 직접 python을 통해 workflow를 DAG형태로 만들어보고 해당 workflow를 airflow에서 실행하고 이해해봅시다. airflow안에서 yolov5 model으로 inference하는 것을 목적으로 하겠습니다. 따라오시죠! 1.1 실행 환경 준비 실행 환경을 다음과 같이 셋팅합니다. airflow webserver 실행 (localhost의 8080포트로 연결) airflow webserver -p 8080 airflow scheduler 실행 airflow scheduler DAG file을 생성할 저장소 생성 (맥북 기준) cd ~/airflow/ mkdir dags 참고로 airflow.cfg 는 Airflow 관련 설정에 대한 파..

    Airflow (1) - Airflow 이해 및 설치

    0. Machine Learning pipelining (ML pipelining 필요성 및 동기에 대한 밑의 단락입니다 읽어보세용!) 기업에서 ML model을 서비스할 경우 정제되어 있는 데이터셋은 없으며, 주기적으로 라벨이 수정되거나 새로운 데이터가 끊임 없이 계속 쌓이거나 바뀌게 됩니다. 그때마다 새로 training dataeset을 구성해야 하며, validation set 또한 주기적으로 업데이트해야 할 것입니다. 또한, 좀 더 유저 경험을 고려한 새로운 evaluation metrics를 개발해야 하며 model serving이나 monitoring, data와 model의 버전 컨트롤까지 고려해야합니다. 그래서 data가 업데이트될 때마다, model이 변경될 때마다, error가 발생하..

    Docker/Kubernetes - (12) Kubernetes Ingress

    Environment: Ubuntu 18.04 1. Ingress Ingress network는 외부에서 서버로 들어오는 트래픽을 처리하며 네트워크 7계층 레벨에서 정의되는 k8s object입니다. 주요 기능은 다음과 같습니다. 외부 요청의 라우팅 /request, /request/you 등과 같이 특정 경로로 들어오는 요청을 어떠한 service로 전달할지 결정 가상 호스트의 요청 처리 같은 IP에 대해 다른 도메인 이름으로 요청이 도착했을 때, 어떻게 처리할 지 정의 SSL/TLS 보안 연결 처리 여러개의 서비스로 요청을 라우팅할 때, 보안 연결을 위한 인증서를 쉽게 적용 1.1 Ingress 사용 이유 구체적으로 기존에 설명하였던 NodePort, LoadBalancer타입의 service도 위와..

    Docker/Kubernetes - (11) Kubernetes 리소스의 관리와 설정

    Environment: Ubuntu 18.04 1. Namespace: 리소스를 논리적으로 구분하는 장벽 k8s에서 용도에 따라 container와 그와 관련된 리소스를 구분 지어 관리할 수 있는, 하나의 논리적인 그룹을 제공하기 위해 Namespace라는 object를 사용합니다. 예를 들어 모니터링을 위한 리소스들은 monitoring이라는 이름의 namespace로 생성될수 있고 테스트를 위한 리소스들은 test라는 namespace를 생성가능합니다. 1.1 Namespace 이해 Namespace는 namespace(ns)라는 이름으로 k8s에서 사용가능하며 다음과 같이 namespace목록을 확인가능하다. 기본적으로 3개의 namespace가 존재하는데 각각의 namespace는 논리적인 리소스..

    Docker/Kubernetes - (10) Kubernetes 이해 및 사용

    Environment: Ubuntu 18.04 1. Kubernetes(k8s) 이해 Kubernetes(k8s)이 가지는 고유한 특성에 대해 알아봅시다. 1. 모든 리스소는 object형태로 관리됨 이전 글에서 swarm mode의 container 집합을 service(서비스)라고 하였습니다. K8s은 이러한 개념을 폭넓고 세밀한 단위로 사용하기 위해 object라는 개념을 사용합니다. 예로 container 집합(Pods), Pods을 관리하는 컨트롤러(Replica Set), 사용자(Service Account), 노드(Node) 모두를 하나의 object로 사용가능합니다. 사용가능 한 object는 kubectl api-resources명령어로 확인가능합니다. 2. YAML파일을 통한 k8s 사..

반응형