본문 바로가기
AI

MLOps에 대한 질문 몇가지.

by soypablo 2022. 11. 7.

MLOPs는 왜 필요한걸까?

결과적으로 이야기하면, 기존의 DEVOPs로는 ML을 지속적으로 운영하기에 한계가 있기에 이를 보완하기 위해 생겨난 것이다.

그럼 DEVOPs는 뭘까?

DEVOPs는 개발과 운영을 결합하고, 중복적인 작업을 자동화 함으로써, 유지보수, 확장, 개발등에서 드는 잠재비용을 줄이는 문화를 말한다.

DEVOPs의 가장 핵심 룰은 기술적 부채를 줄이는 것이다.(내 생각임)

기술적 부채를 줄이면, 유지 보수에 많은 비용이 들지 않고, 확장성이 높고, 안정성 또한 높아진다.

그럼 기술적 부채는 뭔데?

아주 후려쳐서 말하면, 니가 지금 확장성이나 안정성등을 고려하지 않고, 당장 굴러가게만 짠 코드가, 너의 일주일치, 혹은 한달치 야근으로 돌아올수도 있다는 말이다.

DEVOPs의 한계는(즉, 머신러닝에서의 특별한 기술적 부채는)?

Complex Models Erode Boundaries(복잡한 모델은 경계를 무너뜨린다.)

기존의 소프트웨어 프로그래밍에서는, 캡슐화와 모듈화를 통해 한 코드가 정확히 하나의 일을 수행하도록 하여,

코드를 읽기 쉽고 이해하기 쉽게 하고, 코드를 변경할 때 이 변경이 모든 코드에 영향을 미치지 않게 간단히 변경하는것이 가능했다.

그러나 머신러닝에서는, 이러한 강력한 추상화를 적용하는 것이 어려울 뿐만 아니라, 외부 데이터 없이 로직을 구현하는 것이 매우 어려운 태스크일 때 머신러닝을 사용하기 때문에(즉 외부 데이터가 필요하다.), 추상화의 경계가 모호해진다.

EX) 머신 러닝 없이, 이미지가 주어졌을때, 이 이미지에 고양이가 있는지 없는지 예측하는 로직을 구현하는 것이 쉬울까?

사실 사람이 사진에서 고양이를 어떻게 인식하는지 조차도 로직을 설명할 수 있는 사람은 별로 없을 것이다.

이러한 로직을 구현하기 어려울때, 우리는 머신러닝을 통해 가중치를 학습시켜 로직을 대신한다.

 

Entanglement(얽힘)

ML은 여러가지 신호들이 뒤섞이고,얽혀서 들어오기 때문에, 개선하기가 어렵습니다.

예를 들면, feature x1 … xn개의 특성을 사용한다고 할때, x1의 분포를 줄이면, 나머지 n-1개의 분포또한 같이 변경됩니다. 마찬가지로 새로운 특성 x(n + 1)을 추가하면, 나머지 n개의 특성이 같이 변경됩니다.

이러한 문제는 online serving 이든 batch serving이든 동일하게 작용합니다.

이것을 우리는 the CACE principle: Changing Anything Changes Everything ->“하나가 바뀌면 모든것이 바뀐다.”

라고 합니다.

 

많은 머신러닝의 특수한 기술적 부채들이 존재하는데, 다음 논문을 읽어보면 도움이 될 것 같습니다.

https://proceedings.neurips.cc/paper/2015/file/86df7dcfd896fcaf2674f757a2463eba-Paper.pdf

 

MLOps Component 중 내가 매력적으로 생각하는 TOP3

1.serving-얼마나 빠르게 클라이언트에게 전달하는지가 매우 비즈니스에서 매우 중요한 영역중 하나라고 생각해서.

2.Experiment, Model Management - 모델을 잘 만들어야 기본 비즈니스가 성립한다.

3.Data Validation(Data Management)-데이터를 잘 관리해야 2에서 모델의 분석을 명확하게 진행할 수 있고, data drift를 막을 수 있기 때문이다.(NLP에서는 data drift를 막는것이 중요하다고 생각한다.)