[Designing Machine Learning Systems] 머신러닝 시스템 개요

많은 사람들이 ‘머신러닝 시스템’이라고 하면 로지스틱 회귀나 신경망 같은 ML 알고리즘만 떠올리지만, 프로덕션 환경에서 ML 알고리즘은 시스템의 일부일 뿐이다. 프로덕션 환경에서는 고려해야하는 필수 요구사항과 배포, 운영 및 모니터링, 관리 과정을 전체적으로 고려하는 것이 필요하다는 것을 인지하면서 MLOps가 등장했다.

책에서는 MLOps를 다음과 같이 설명한다.

MLOps의 ‘Ops’는 ‘Developments and Operations’의 줄임말인 ‘DevOps’에서 유래합니다. 무언가를 운영함은 그것을 프로덕션 환경에 적용함을 의미하며 여기에는 배포, 모니터링, 유지 관리가 포함됩니다. MLOps는 ML을 프로덕션 환경에 적용하기 위한 도구와 모범 사례의 집합입니다.

이러한 MLOps에 시스템으로 접근하는 것이 ML 시스템 설계로, 시스템의 각 요소와 이해관계자가 협업함으로써 정해진 목표와 요구 사항을 충족하도록 ML 시스템을 총체적으로 고려하는 것이다. 이 책은 알고리즘과 독립적으로 적합한 솔루션을 개발할 수 있도록 돕는 프레임워크를 제안하는 것을 목적으로 쓰였으며, ML 시스템 설계를 위해 필요한 고려사항이 정리되어 있다.

1장 머신러닝 시스템 개요에서는 머신러닝을 사용해야 하는 경우와 머신러닝 시스템이 무엇인지 설명하며 ML을 실제로 적용하기 위해 필요한 것들을 전달한다.

1.1 머신러닝을 사용해야 하는 경우

ML 프로젝트를 시작하기 전 ML이 필요조건인지, 비용 효율적인지 스스로 질문해봐야 한다.

ML 솔루션은 일반적으로 다음 작업을 수행하는데 문장에서 밑줄 그어진 부분을 짚으며 예시와 함께 어떤 머신러닝을 언제 사용해야하는지 말한다.

ML은 기존 데이터로부터 복잡한 패턴학습하고 이러한 패턴을 사용해 본 적 없는 데이터에 대해 예측을 수행하는 접근법입니다.

ML로 풀 수 있는 문제는

  • 학습: 시스템에 학습 능력이 있어야 한다. 데이터로 학습하고, 지도 학습의 경우 입력 데이터에서 출력 데이터를 생성하는 관계를 학습할 수 있어야 한다.
  • 복잡한 패턴: 학습할 패턴이 존재하며 복잡해야 한다. 패턴이 단순하다면 규칙 기반으로 간단히 풀 수 있기에 어느 정도 복잡해야하고, 너무 복잡하면 학습할 패턴을 식별하지 못하기 때문에 ML로 풀 수 없다.
  • 기존 데이터: 사용 가능한 데이터가 있거나 데이터 수집이 가능해야 한다.
  • 예측: 예측에 대한 문제여야 한다. 비용이 낮고 근삿값인 예측을 대규모로 수행해 이득을 얻을 수 있을 때 특히 매력적이다.
  • 본 적 없는 데이터: 본 적 없는 데이터가 훈련 데이터와 동일한 패턴을 가져야 한다. 예를 들어 지금 시점에 사람들이 가장 많이 쓰는 앱이 무엇인지 예측하고자 하는 ML 모델을 훈련시킬때, 2008년 데이터로 훈련시키면 의미가 없다.
  • 반복적이다.
  • 잘못된 예측으로 발생하는 비용이 낮다.
  • 대규모로 수행된다. 대규모 문제를 해결할때 이점이 크다.
  • 패턴이 지속적으로 변한다. 스팸 메일 분류에서 규칙 기반으로 분류한다면 시간이 지나면서 계속 규칙을 수정해줘야 하지만 ML을 활용하면 새로운 데이터로 계속 학습시켜면 되므로 경제적이다.

ML을 사용하면 안되는 문제들

  • 비윤리적인 경우
  • 보다 단순한 솔루션이 있는 경우
  • 비용 효율적이지 않은 경우

1.1.1 머신러닝 유스 케이스

이 부분에서는 머신러닝 유스 케이스 사례를 설명한다. 다음과 같은 사례들이 있었다.

검색 엔진, 추천시스템, 타이핑 예측, 기계 번역, 이상 거래 탐지, 가격 최적화, 수요 예측, 고객 이탈 예측, …

1.2 머신러닝 시스템 이해하기

ML 시스템을 이해하면 시스템을 설계하고 개발하는데 도움이 된다.

연구와 프로덕션 환경의 차이, 전통적인 소프트웨어와의 차이를 보며 ML 시스템이 무엇인지 설명한다.

1.2.1 연구용 머신러닝 vs. 프로덕션용 머신러닝

다양한 이해관계자와 요구사항

연구에서는 요구사항이 명확하지만 프로덕션 환경에서는 그렇지 않다. 팀 별로 요구사항이 다르고, 필수 요구사항을 고려한 최적의 결과를 만들어내기 위해 계속 고민해야한다. 복잡성보다 사용성에 초점을 맞추는 느낌

계산 우선순위

연구에서는 빠른 훈련을 중시하지만, 프로덕션에서는 빠른 응답을 중요시 한다. 이를 책에서는 스루풋과 레이턴시로 설명한다. 연구에서는 스루풋을 중시하는데, 학습할때 단일 쿼리(인스턴스 개념 같다.) 학습보단 배치 학습을 선호한다. 각 쿼리의 처리 속도를 빠르게 하는데 초점을 맞추기 보단 배치 처리를 통해 전체적인 모델 학습시간을 단축하는 것을 목표로 한다. 하지만 프로덕션에서는 레이턴시(단일 쿼리에 대한 응답 시간)가 더욱 중요하므로 연구와 프로덕션에서 차이가 생기는 것으로 이해했다.

스루풋과 레이턴시

스루풋 : 스루풋(throughput) 또는 처리율(處理率)은 통신에서 네트워크 상의 어떤 노드나 터미널로부터 또 다른 터미널로 전달되는 단위 시간당 디지털 데이터 전송으로 처리하는 양을 말한다. 예를 들어 데이터 링크에서는 스루풋 단위로 초당 비트 수(bit/s 또는 bps)가 주로 사용된다.

레이턴시 : 레이턴시(latency)는 자극과 반응 사이의 시간이며, 더 일반적인 관점에서는 관찰되는 시스템에서의 어떠한 물리적 변화에 대한 원인과 결과 간의 지연 시간이다. 레이턴시는 물리적 상호작용이 추진할 수 있는, 물리적으로 제한된 속도의 결과라고 할 수 있다.

레이턴시는 쿼리를 수신하고 결과를 반환하는 데 걸리는 시간을 의미하고, 스루풋은 특정 기간 내에 처리된 쿼리 수를 의미한다.

요약: 연구에서는 분산 시스템을 통한 배치 처리를 통해 스루풋을 단축하는데 집중하는 반면, 프로덕션에서는 사용자의 요청에 대한 응답 시간을 의미하는 레이턴시를 낮추는게 더 중요하다.

데이터

연구에서 다루는 데이터는 정적이며 벤치마크의 성격을 갖는다. 하지만 프로덕션 환경에서 다루는 데이터는 잘 정제되어 있지 않고 비정형인 경우가 많으며, 비즈니스 목적(요구사항)에 따라 데이터셋의 레이블을 수정해야 하는 상황이 생길 수 있고, 입력되는 데이터 분포가 시간이 지나면서 달라질 수 있다. 이러한 요소를 고려해야 하기 때문에 프로덕션에서 데이터 관리는 더욱 중요하고 까다롭다.

공정성

연구에서는 공정성보다 SOTA에 집중하며 공정성은 프로덕션 시 고려한 문제로 넘기는 경향이 있다. 프로덕션 환경에서는 공정성은 책임 있는 AI(Resposible AI) 관점에서 필요하다. 여기서 공정성은 특정 특성에 대한 편향이 학습된 ML 모델에 내재되어 있는 경우, 그러한 편향이 사회적으로 올바르지 않다고 판단될 때 어떻게 해소할지를 다루는 문제인 것 같다.

해석 가능성

제프리 힌튼의 AI 외과의와 인간 외과의 질문 예시 프로덕션 환경에서 해석 가능성은 필수라고 주장하며 2가지 이유를 제시한다.

1) 모델을 신뢰하고 앞서 언급한 잠재 편향을 감지할 수 있도록 이유를 알아야 하므로

2) 개발자가 모델을 디버깅하고 개선할 수 있는 것이 중요하므로

하지만 현재 해석가능성에 대한 기업의 움직임은 많지 않다고 말한다.

논의

연구 일자리가 많으므로 학문적 측면에 집중해도 괜찮다는 주장에 대해 반박한다. 대부분의 회사는 단기 비즈니스 적용 및 성과로 이어지지 않는 한 수반되는 비용을 감당할 여력이 없다는 등의 이유들을 말한다.

1.2.2 머신러닝 시스템 vs. 전통적인 소프트웨어

왜 기존에 성공적이었던 소프트웨어 엔지니어링 방식을 ML 애플리케이션에 적용하지 않는지에 대한 이유를 말한다.

  • 데이터와 코드를 분리하기 어렵다. 기존 소프트웨어 프로그램에서는 데이터와 코드를 분리해서 관리하는 것이 일반적이었지만, ML 애플리케이션에서는 데이터와 코드 그리고 이것들이 결합돼서 나온 부산물로 이뤄지기 때문이다.

  • 데이터의 분포가 시간이 지남에 따라 변화하므로 데이터의 버전 관리도 필요하다.

  • ML 모델의 크기가 너무 크다. 현재 시점에서, 특히 에지 디바이스에 대형 모델을 프로덕션에 적용하는 일은 엄청난 엔지니어링 과제다.

  • 프로덕션 환경에서 이러한 모델을 모니터링하고 디버깅하는 것도 사소하지 않다.

1.3 정리

  • 프로덕션용 ML의 광범위한 유스 케이스를 둘러보며 어떤 경우에 ML 솔루션이 적절한지 확인

  • 연구용 ML과 프로덕션용 ML의 차이를 짚으며 학계에서 ML 프로덕션으로 넘어오는 사람들이 알아두면 좋을 점 확인

  • ML 시스템과 전통적인 소프트웨어 시스템의 차이를 확인

프로덕션에서 ML 시스템을 작업할 때 ML 알고리즘에 집중하는 것만으로는 충분하지 않고 시스템의 모든 구성 요소를 전체적으로 고려하는 것이 필요하다.




© 2023. by gimmaru

Powered by aiden