분류 전체보기

    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..

    Quantization은 무엇일까?

    Quantization 알아보기 Quantization이란? Quantization, 한국말로 양자화. Quantization의 사전적 의미는 분야마다 다르게 해석될 수 있는데, 물리에서는 '어떤 연속적인 양을 이산적인 양으로 만드는 것', 수학이나 신호 처리에서는 '아날로그 신호를 특정 대표값으로 나타내어 디지털 신호로 변환하는 것'이라고 정의한다. 넓은 의미로 '어떤 측정된 양을 기본 단위로 치환하는 것'라고 볼 수 있다. 딥러닝에서 Quantization이란? 그렇다면 딥러닝에서 Quantization은 어떤 의미로 해석될까? 딥러닝에서 Quantization은 일반적으로 사용하는 floating point precision보다 낮은 bitwidths로 tensor를 저장하는 기술을 의미한다. 예컨..

    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를 제공하는 것을 의미합니다. 즉, 실질적으로 개발된 머신러닝 모델의 예측값을 사용자에게 전달해주는 것으로 생각할 수 있습니다. 그렇다면, 모델을 서비스하기 위해서는 어떤 방법이 가장 좋을까요? 정답은 없습니다. 사용하는 환경에 따라서 모델들을 독립적으로 배포하거나 자주 변경할 필요가 있을 수 있습니다. 적은 컴퓨팅 자원으로 효율적으로 처리할 필요가 있는 경우도 있고, 반대로 실시간에 ..

    FFmpeg와 친해지기

    FFmpeg는 모든 음악, 사진, 동영상처리 관련에 있어서 가장 근본이라고 생각한다. 우리가 사용하는 대부분의 코덱은 대부분 FFmpeg의 libavcodec을 기반으로 하고 있으며, Python에서 자주 사용하는 비전 라이브러리인 OpenCV나 MoviePy 등 동영상처리를 위해서는 결국 모두 FFmpeg를 통해서 처리 된다. 그만큼 중요하다는 소리다. 기본 문법 예시 ffmpeg를 실행하면 처리하는 정보를 보여주는데, image to video를 예시로 간단히 살펴보자. Input에 대한 정보 file format pixel format image size input framerate Output에 대한 정보 video codec pixel format video size output bitrate ..

    Conditional Generative Adversarial Networks

    Conditional Generative Adversarial Nets Introduction 기존의 Generative Adversarial Nets 생성 모델을 학습하기 위해서, 데이터의 확률적 계산의 어려움을 대체하는 GAN. 이 모델은 Markov chain이나 별다른 추측 필요없이 오직 Back-Propagation으로만 학습이 가능하다. (더 자세한 내용은 이전 글 참조) 생성되는 데이터를 조절할 수 있을까? 하지만 기존의 모델은 Unconditional 생성 모델로, 데이터가 생성되는 종류를 제어할 방법이 없다. 하지만 이것이 가능하다면 성능이 향상되지 않을까? 이를 조건 설정을 통해 데이터 생성 과정을 제어하고자 하는 것이 바로 이 논문에서 다룰 Conditional Generative A..

    Generative Adversarial Networks

    시작하기에 앞서, Generative Model을 간단하게 살펴보자. 머신러닝에는 크게 지도학습(Supervised Learning), 비지도학습(Unsupervised Learning), 그리고 강화학습(Reinforcement Learning) 3가지로 구분할 수 있다. 이 글에서는 비지도학습중에 대표적으로 클러스터링(Clustering)과 생성모델(Generative Model)이 있다. 오늘은 그중에서도 생성모델에 한번 집중해보자. 생성모델은 주어진 학습 데이터를 학습하여 학습 데이터의 분포를 따르는 유사한 데이터를 생성하는 모델이다. 이러한 생성모델에는 여러 가지 방식들이 있는데, 학습 데이터의 분포를 기반으로 할 것인지(Explicit Density) 혹은 그러한 분포를 몰라도 생성할 것인지(..