새소식

ML Development - 2024.02.19

[머신러닝 시스템 설계 정리] Chapter1 : 머신러닝 시스템 개요

  • -

ML 프로젝트 구성 개요


  • 비즈니스 요구 사항 구현
  • 사용자/개발자 상호 작용 고려
  • 데이터 및 모델 관리 인프라(모니터링 및 업데이트) 구성
  • ML 알고리즘 구성

 

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


<aside> 💡 머신러닝 : 기존 데이터로부터 복잡한 패턴을 학습하고 이를 통해 본 적 없는 데이터에 대해 예측을 수행하는 접근법

</aside>

1. 시스템이 학습에 적합한 경우

  • 학습할 대상인 데이터가 있고 이를 통해 문제를 해결할 수 있어야 함
  • 숙소 임대료 예측? → 넓이, 방, 개수, 지역, 편의 시설, 평점 등이 있는 Airbnb에서 가능

2. 학습할 복잡한 패턴이 존재하는 경우

  • 무작위가 아닌 패턴이 존재 해야 함
  • 너무 단순한 문제가 아니여야 함
  • 최종적으로 시스템 스스로 복잡한 패턴 학습 → 소프트웨어 2.0

3. 사용 가능한 데이터가 있거나 수집이 가능한 경우

  • 연관 데이터라도 있어야 최소한 Zero-Shot 시도 가능
  • 당장 없다면 배포 후 프로덕션 환경의 데이터를 통해 Continual Learning 활용 가능
    • 도입 시 과도기 때 고객 만족할 수 있을 지 고민 필요
  • 당장 없다면 ML을 염두에 둔 서비스를 우선 Rule Base로 제공 후, 수집한 데이터로 개선하는 것을 목표로 설정

4. 예측을 통한 답이 필요한 경우

  • 직접적인 예측 또는 근삿값 예측이 필요한 경우 활용
  • compute-intensive problem은 근삿값 예측 문제로 변환할 경우 효과적
    • 이미지 잡음 제거, 그래픽 렌더링 등 → 정확하게 풀려면 어렵지만, 적당히 해결하는 것은 상대적으로 쉬운 문제
    • ML 적용 시 효과적임

5. 예측 데이터와 훈련 데이터가 동일한 패턴을 가진 경우

  • 대부분의 머신러닝 모델은 예측-훈련 데이터는 유사한 분포에서 생성됐다는 i.i.d 가정 하 작동하기 때문

 

ML이 잘 푸는(유용한) 문제들


1. 반복적인 패턴이 존재할 경우

  • ML 알고리즘은 패턴 학습을 위해 많은 데이터가 필요
  • 패턴이 반복될 경우 기계가 학습하기 쉬움

2. 잘못된 예측으로 인한 비용이 적을 경우

  • 실제로 모델의 성능이 100% 발휘되는 경우는 거의 없기 때문에, 잘못된 예측에 의한 비용을 고려해야 함
  • 한 사건에 대한 비용 대신, 전체 사건에 대한 평균적인 비용 고려 필요
  • ex) 자율 주행 자동차
    • 사고 나면 죽음 → 한 사건에 대해선 고 비용
    • 하지만 통계적으로 인간보다 안전한 수준에 도달할 경우 평균 비용은 낮아짐
    • 그렇기에 가치가 있음

3. 대규모 수행이 가능할 경우

  • ML 솔루션은 데이터, 컴퓨팅, 인프라, 인재에 대해 적지 않은 선행 투자가 필요함
  • 따라서 문제 해결 과정을 대규모로 적용 가능할 때 가장 합리적이라고 볼 수 있음

4. 패턴이 지속적으로 변할 경우

  • Rule Based 문제 해결법과 달리 ML은 패턴이 변하더라도 처리할 수 있음
  • 변하는 데이터 분포에 적응하게끔 시스템 설정 → 연속 학습

 

ML이 필요하지 않은(덜 선호되는) 경우


1. 비윤리적으로 간주될 수 있는 경우

  • EX) 성적 자동 채점기
    • 기준이 명확하지 않아 투명성이 의심될 수 있음

2. 보다 단순한 솔루션이 효과적인 경우

  • 비싼 돈 주고 굳이 ML을 쓸 필요가 없음

3. 비용 효율적이지 않은 경우

  • 이 경우 문제 전체를 ML로 해결하는 대신 일부를 해결하는 방법으로 변형할 수 있음
  • 기술 발전에 따라서 효율적이 될 수도 있으니 F/U은 꾸준히 하는 것이 좋음

 

1.1.1 머신러닝 유스 케이스


  • 기업, 소비자 측면 애플리케이션 모두에서 증가
  • 각 어플리케이션은 요구 사항과 고려 사항 측면에서 매우 다름

구분/요구 사항 정확도 Latency

기업 엄격 관대
소비자 관대 엄격
  • 다양한 머신러닝 활용 분야
    • 검색 및 추천
    • 타이핑 예측 및 기계 번역
    • 수요 예측 - 이상 거래 탐지 - 가격 최적화 - 고객 이탈 예측 등등

 

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


주요 차이점

차이점/구분 연구용 ML 프로덕션용 ML

요구 사항 벤치마크에서 최적의 성능 달성 이해 관계자마다 다름 → 비즈니스 목표
학습(사용) 시 고려사항 빠른 훈련, 높은 Throughput 빠른 추론, 낮은 Latency
데이터 정적임 끊임없이 변동함
공정성 중요하지 않은 경우가 많음 반드시 고려해야 함
해석 가능성 중요하지 않은 경우가 많음 반드시 고려해야 함

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


  • EX) 음식점 추천하는 모바일 앱 개발
    • 주문이 들어올 때 마다 음식점에 수수료 10% 부과해 수익 창출
    • 주문 금액이 높을 경우, 낮을 때보다 더 많은 수익 창출 가능

 

ML 엔지니어 입장

  • 목표 : 모델 성능 극대화
    • 많은 데이터가 포함된 복잡한 모델로 사용자가 주문할 가능성이 가장 높은 음식점을 추천하고 싶음

 

영업 팀 입장

  • 목표 : 매출 극대화
    • 수수료가 높은 더 비싼 음식점을 추천할 수 있는 모델을 원함

 

제품 팀 입장

  • 목표 : Latency 최소화
    • Latency가 증가할 때 마다 서비스 통한 주문이 감소함
    • 100밀리초 이내에 추천 음식점을 반환하고 싶음

 

ML 플랫폼 팀 입장

  • 목표 : 쾌적한 MLOps 환경 제공
    • 잦은 모델 업데이트는 트래픽 증가로 시스템 스케일링이 요구돼 지양

 

관리자(사장) 입장

  • 목표 : 마진 극대화
    • ML 팀을 제거하는 것이 더 이득일 수도 있음

 

프로덕션용 ML 개발 시 고민해야 할 사항들


프로덕션 용 ML이 중요해지는 이유

  • 신규 모델 연구를 위해 필요한 데이터, 컴퓨팅 비용이 매우 커지고 있음 → 순수한 연구를 감당할 수 있는 회사는 점점 더 적어지고 있음
  • 기성 모델을 응용해 적용할 수 있는 프로덕션 용 ML이 필요함

 

1. 목표에 맞는 모델 구성하기

  • 여러 목표를 한번에 해결할 수 있는 모델을 만드는 것보다, 목표마다 모델을 구성하고 각각의 예측을 결합하는 것이 좋음
  • 높은 성능을 가지는 모델은 복잡성을 정당화할 만큼의 성능이 필요함

 

2. 병목 해결하기 : Throughput vs Latency


  • 모델 연구 개발 시 : 학습 과정이 병목 → **Throughput (초당 처리되는 쿼리 개수)**을 우선시
  • 모델 배포 시 : 추론 과정이 병목 → Latency를 우선시
    • 쿼리는 순차/배치 단위 처리 여부에 따라 다른 Throughput-Latency 관계를 가짐

 

쿼리를 하나씩 처리할 때

  • Latency가 길수록 Throughput이 낮아짐

쿼리 개수 Latency Throughput

1 10ms 100개
1 20ms 50개

쿼리를 배치로 처리할 때

  • Latency가 길수록 Throughput이 높아짐

쿼리 개수 Latency Throughput

10 10ms 1000개
20 20ms 2500개

<aside> 💡 배치 처리가 무조건 좋은 것인가? → 잘 써야 좋음

  • 온라인 쿼리를 배치 처리하는 것은 기술적으로 매우 복잡
  • 배치 처리까지 충분한 쿼리가 쌓여야 하기 때문에 Latency가 길어질 수 있음 </aside>

 

Latency 줄이기

  • Latecny가 길면 전환-이탈율이 감소할 수 있어 중요하게 다뤄야 함
  • Latency를 줄이기 위해 하드웨어가 한 번에 처리하는 쿼리 개수를 제한할 수도 있음
    • 이 경우엔 쿼리 처리 비용이 올라가는 단점 존재

 

Latency는 분포로 다루자

  • Latency 수치는 경우에 따라 조금씩 바뀔 수 있기 때문에 분포로 접근해야 함
    • 평균을 사용할 경우 전체 분포를 왜곡하여 해석할 수 있음
    • 따라서 백분위수 P90, P95, P99 등으로 활용하는 것이 좋음
  • 높은 백분위수에 속하는 고객 → 비율은 매우 적지만, 데이터가 많은 고객임
    • 그동안 구매가 많거나 조회가 많은 → 가장 가치 있는 고객
    • 백분위수 기준을 높게 설정해 ‘대다수 고객이 만족 + 소수 고객’도 놓치지 않도록 관리하는 것이 중요

 

3. 현실 데이터의 특성 이해하기


  • 연구용 데이터
    • ‘정제’돼 있고 ‘정적인 과거’의 데이터임 → 연구에만 집중할 수 있고, 다른 사람의 소스를 참고할 수 있음
  • 프로덕션 데이터
    • 노이즈(편향 및 잘못된 Label 존재)가 많고 동적으로 변하는 데이터임 → 실시간으로 처리해야 하고, 요구 사항에 맞춰 데이터를 수정해야 할 일도 많음

<aside> 💡 프로덕션 환경에선 데이터를 잘 처리하는 것이 모델/알고리즘 보다 중요함

</aside>

 

4. 공정성 고려하기


  • 편향된 알고리즘 때문에 피해 보는 소수를 신경 써야 함
    • 인종 차별 등
  • 대다수 고객에겐 해당 사항이 없고, 개선을 위해 비교적 큰 비용이 드는 특징이 있음
    • 당장은 신경 쓰지 못하는 기업이 많음

 

5. 해석 가능성 고려하기


  • 신뢰할 수 있는 모델을 구성하고, 모델의 잠재적 편향을 제거하기 위해서 필요함
  • 개발자가 모델을 디버깅하고 개선할 수 있어야 하기 때문에 필요함

 

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


  • ML 시스템 또한 SWE 임 → 하지만 기존의 SWE 프로젝트 관리 방법을 그대로 사용할 순 없음
  • ML 시스템은 코드와 더불어 데이터도 관리해야 하기 때문에 유지-보수가 더욱 어려움
    • 데이터 품질, ML 모델 크기 등 추가로 관리할 사항이 많음

 

기존 SWE

  • 코드와 데이터를 모듈화하고 분리된 상태를 유지하고 싶어함
  • 코드 테스트 및 버전 관리에만 집중하면 됨

 

ML 시스템

  • 코드와 데이터가 밀접하게 관련 돼있음
  • 코드와 더불어 데이터 또한 테스트 및 관리해야 함
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.