Study/MLOps

    AWS Container Support Service (3/3)

    ECS (Elastic Cluster Service) ECS 클러스터 생성하기 ECS 클러스터는 여러 대의 인스턴스를 그룹화하고, 그룹내의 리소스를 자동으로 조정하고 관리한다. 이를 통해 Docker 컨테이너를 쉽고 효율적으로 배포, 관리 및 확장할 수 있도록 한다. 클러스터에서는 인스턴스들이 실행될 환경을 설정한다. Fargate 인스턴스를 이용하는 경우 자동으로 구성되어 별도로 설정할 필요는 없지만, EC2 인스턴스의 경우에는 인스턴스 유형이나 서브넷, 용량 등 다양한 환경 설정이 필요하다. Task 생성하기 실행하고자 하는 Docker 컨테이너를 정의하는 과정이다. 어느 인스턴스에서 어떤 Docker 이미지를 실행할 것이인지 정의한다. Task에서 하나의 인스턴스에 다수의 컨테이너가 순차적으로 실행..

    AWS Container Support Service (2/3)

    지난글에서는 ECS가 무엇인지 확인했다면, 이번에는 ECS로 서비스하기 위해서 무엇이 필요한지 알아보자. ECS로 서비스를 운영하기 위해서는 우선 컨테이너 이미지가 필요하다. 컨테이너 이미지를 저장하고 불러오기 위해서는 컨테이너 저장소가 필요하다. 대표적인 저장소인 도커 허브를 제외하고도 다양한 저장소가 있는데, 이번 글에서는 같은 AWS에서 지원하는 ECR을 활용해보자. ECR (Elastic Container Registry) ECR이란? ECR은 AWS에서 제공하는 컨테이너 이미지 저장소다. S3를 기반으로 하고 있어, 기존의 S3 이용자라면 친숙하게 느껴질 것이다. 대부분의 이미지 저장소와 주요 기능은 동일하며, 보안적인 측면에서 장점이 있다. 그리고 AWS의 다른 컨테이너 서비스들 간의 호환성이..

    AWS Container Support Service (1/3)

    Overview MicroServices Architecture 마이크로서비스 아키텍처(MicroServices Architecture)는 최근 유행하는 서비스 아키텍처의 한 방법으로, 다른 서비스 아키텍처들과 가장 큰 차이는 애플리케이션을 작고 독립적인 구성 요소로 나누어 접근하는 것이다. 각각의 애플리케이션이 서로 종속 관계가 없기 때문에, 확장이 용이하고 개발 속도를 앞당길 수 있는 장점이 있다. 또한 하나의 애플리케이션에서 문제가 발생해도 전체 프로세스가 실패할 가능성을 줄여 안정성을 높인다. 다만, 마이크로서비스는 서비스 규모가 커질수록 각 애플리케이션간의 통신을 관리하는 것이 다소 까다로울 수 있다. 이러한 장단점을 가진 마이크로서비스 아키텍처를 운영해 볼 수 있는 손쉬운 방법 중 하나가 바로..

    근본의 Ansible?

    Ansible이란? 리눅스에서 환경을 구성하기 위해 사용하는 방법은 무엇이 있을까? 도커나 가상환경 등 여러 방법이 있지만, 기초적으로 쉘 스크립트를 기반으로 환경을 구성하게 된다. 하지만 이러한 방법으로는 다수의 서버에 동시에 동일한 환경을 배포해야 하는 상황에서는 쉽지 않다는 것이다. 이를 위해 고안된 것이 바로 IaC(Infrastructure as Code)이다. IaC는 환경의 배포와 구성을 규격화된 코드로 정의해 사용하는 것을 의미한다. 이 개념을 기반으로 하는 환경 자동화 도구의 대표적인 예시가 바로 Ansible이다. 이전의 방법론과 다르게 Ansible은 Agent가 필요하지 않는다는 장점이 있다. 즉, 따로 노드에 Ansible로 명령하거나 관리하기 위해 별도의 설치 없이 사용할 수 있..

    Slurm과 Kubernetes 정답은?

    Slurm VS Kubernetes Slurm(Simple Linux Utility for Resource Management)이란? MLOps를 이야기하면, 대부분 K8S는 많이 들어 봤을것이다. 하지만, Slurm에 대해서는 생소한 사람들도 많을 것이다. Slurm과 K8S를 비교하기에 앞서, 간단하게 알아보자. 우선 이름에서 알 수 있듯. Slurm은 리소스를 관리하기 위한 시스템이다. 그렇다면, 어떤 환경의 리소스를 다루느냐? 그건 바로 HPC(High Performance Computing) 환경이다. Slurm은 대규모 연산에 특화되어 있는 시스템으로 다수의 노드를 관리하는데 탁월한 시스템이다. 크게 slurmctld, slurmd, slurmdbd 3가지 구성요소를 가지고 있으며 slurmc..

    도대체 MLOps는 무엇일까?

    본 게시글은 프로그래머스 스쿨, "마키나락스 개발자가 알려주는 MLOps" 강의를 수강한 내용을 기반으로 작성되었습니다. MLOps란 무엇인가 MLOps란? MLOps란 무엇일까? MLOps는 'Machine Learning + Operations'를 의미한다. ML 서비스를 배포하고 유지 및 관리 해주는 핵심 기술이라고 볼 수 있다. 그럼 ML 서비스는 기존 서비스랑 어떤 차이가 있을까? 기존 서비스는 크게 Frontend, Backend, Infra의 구조를 갖고 있다. 여기에서 간단한 ML이라면 Backend에 포함하여 표현하기도 하지만, 시간이 흐르며 ML의 몸집이 점차 커지면서 별도로 Frontend, Backend, Machine Learning, Infra의 구조를 갖게 된다. Machine..

    pydantic을 사용하여, 안정성 높이기

    Before start Overview pydantic은 Python type hints를 사용하여 데이터의 유효성을 검사하는 라이브러리이다. 파이썬에서 타입 힌트는 말 그대로 변수 타입에 대한 힌트일 뿐, 다른 타입을 사용한다고 해서 문제가 발생하지는 않는다. 이런 세상 쉽게 사는 파이썬에게 pydantic은 런타임에서 타입 힌트를 강제하고, 유효하지 않으면 error를 발생시킨다. pydantic 공식 document에서는 다음과 같이 소개하고 있다. Data validation and settings management using Python type annotations. pydantic enforces type hints at runtime, and provides user friendly er..

    BentoML로 모델 서빙하기

    이 게시글은 "BentoML - v1.0.5" 기준으로 작성되었습니다. Model Serving 이란 MLOps는 모델 관리, 모델 배포, 모델 서빙, 모니터링 등 다양한 요소로 구성되어 있습니다. 이 글에서는 모델 배포와 서빙을 중점적으로 살펴보겠습니다. 모델 서빙이란, 머신러닝 모델을 사용할 수 있도록 배포 혹은 API를 제공하는 것을 의미합니다. 즉, 실질적으로 개발된 머신러닝 모델의 예측값을 사용자에게 전달해주는 것으로 생각할 수 있습니다. 그렇다면, 모델을 서비스하기 위해서는 어떤 방법이 가장 좋을까요? 정답은 없습니다. 사용하는 환경에 따라서 모델들을 독립적으로 배포하거나 자주 변경할 필요가 있을 수 있습니다. 적은 컴퓨팅 자원으로 효율적으로 처리할 필요가 있는 경우도 있고, 반대로 실시간에 ..