[ML] 머신러닝 시스템 설계 : 1장 머신러닝 시스템 개요

gunny·2023년 5월 17일
1

ML

목록 보기
1/17

해당 게시물은 ML 프로덕션 환경 속에 있는 내가 모델 개발에만 열중하고 전반적인 시스템 설계에 대한 배경지식이 없었던 와중에 옆자리 팀원한테 추천 받아서 읽게된 한빛미디어의 "머신러닝 시스템 설계"를 공부하면서 요약한 게시물로, 저작권은 한빛미디어에게 있겠습니다.


1. ML을 위한 솔루션

  • ML은 '기존 데이터'로부터 '복잡한 패턴'을 '학습' 하고, 이러한 패턴을 사용해 '본 적 없는 데이터'에 대해 '예측'을 수행하는 접근법
    • '학습' : ML 시스템이 학습하기 위한 '대상'이 있어야하고,
      대부분의 경우 '데이터'로 학습함
      예를 들어 지도 학습 모델이면 한 쌍으로 이뤄진 입력과 출력 데이터를 이용해 입력 데이터에서 출력 데이터를 생성하는 관계를 학습

      예) 에어비엔비(aIRBNB) 숙소 임대료 예측 방법을 위한 ML 시스템 구축
      : 입력값 - 관련 특성 (넓이, 방 개수, 지역, 편의 시설, 평점)
      출력값 - 임대료
      : 학습 완료 시 ML 시스템은 특성 값을 감안해 새 숙소의 임대료 예측

    • '패턴' : ML 시스템은 '학습할 패턴' 이 있을 때만 유용함
      예를 들어 주사위 결과 예측은 결과가 생성되는 방식에 패턴이 없음
      그러나, 주식 가격 책정 방식은 패턴이 있어서, 기업을 이를 학습하는 ML 시스템을 구축하기 위해 투자함
      - 그러나, 패턴이 있는지 명확하지 않거나 패턴이 있어도 데이터셋 또는 ML 알고리즘이 이를 포착하기에 충분하지 않기도 함
      예를 들어 일론 머스크의 트윗이 암호화폐 가격에 미치는 영향에 패턴이 있을 수 있지만, 그 트윗으로 ml 모델을 엄격하게 훈련하고 평가하기 전까지는 패턴 유무를 알 수 없으며, 모든 모델이 암호화폐 가격을 합리적으로 예측하지 못한다고 해서 패턴이 없는 것도 아님
      - 전통적인 소프트웨어는 입력과 패턴을 넣어 출력하지만,
      머신러닝(ML)은 입력과 패턴을 넣어 출력함

    • '데이터' : 학습 가능한 데이터가 있어야함
      - 제로샷 학습(Zero-shot learning)의 맥락에서 ML 시스템은 특정 작업 관련 데이터로 훈련하지 않아도 좋은 예측을 해낼 수 있음
      그러나, 이 시스템은 특정 작업과 연관된 다른 데이터로 훈련되는 것이 일반적으로 시스템이 학습을 하려면 당면한 작업에 대한 학습 데이터는 필요하지 않더라도 데이터는 필요함
      - 연속 학습(continual learning) : 어떤 데이터로도 훈련하지 않은 ML 모델 배포 후 프로덕션 환경에서 들어오는 데이터로 학습
      - 데이터가 없고 연속 학습도 사용할 수 없을 때, ML 모델이 있는 것처럼 작동하는 룰이나 소프트웨어를 운용하면서 데이터를 수집하여 모델이 만들어질 수 있는 여건 마련

    • '예측' : ML 모델은 예측을 수행해, 예측을 통한 답변이 필요한 문제를 주료 해결함
      예측 : 미래 가치를 추정. 예를 들어 내일 날씨? 슈퍼볼 우승자? 사용자가 다음으로 보고 싶어 할 영화?

    • '본 적 없는 데이터' :
      모델이 기존 데이터로 학습한 패턴이 유용한 경우는 본 적 없는 데이터에 동일한 패턴이 있는 경우
      - "본 적 없는 데이터인데 어떤 분포에서 생성됐는지 어떻게 아나요?"=> 다만 미래의 사용자 행동이 오늘의 사용자 행동과 다르지 않을 것으로 가정하고 작업 진행

    • '반복적' :
      작업이 반복되면 각 패턴이 여러 차례 반복되어 기계가 학습하기 쉬움

    • '잘못된 예측으로 발생하는 비용 낮음'
      - ML 모델의 성능이 항상 100%가 아니라면, 모델은 어느 정도 실수가 있음.
      - 그러나 추천시스템의 경우 적합하지 않더라도 큰 문제를 야기하지는 않음. ML은 이처럼 잘못된 예측으로 발생하는 비용이 낮을 때 적합함

    • '대규모로 수행'
      - ML 솔루션은 데이터, 컴퓨팅, 인프라와 인재 등 선행 투자를 필요로 해서 대규모로 적용 가능할 때 합리적이라고 간주함
      - 주어진 문제가 대규모로 수행된다는 점은 수집할 데이터가 많음을 의미하며, ML 모델을 훈련하는데 유용한 성질

    • '패턴이 지속적으로 변화함'
      - 문제가 하나 이상의 지속적으로 변하는 패턴과 관련됐다면, 하드코딩한 솔루션은 구식이 될 수 있음.
      그러나 ML은 데이터로 학습하므로, 데이터가 어떻게 변하는지 명시적으로 파악할 필요 없이 새로운 데이터를 통해 ML 모델을 업데이트함

  • ML 모델을 사용하면 안되는 문제
    • 비윤리적인 경우
    • 보다 단순한 솔루션이 효과가 있는 경우
    • 비용 효율적이지 않은 경우
    => ML이 문제 전체를 해결하지는 못해도 문제를 더 작은 구성 요소로 나눴을 때 일부를 해결하는 경우가 있는데, 예를 들어 모든 고객 문의에 답하는 챗봇은 구축하기 어렵지만 특정 문의가 자주 묻은 질문(FAQ)와 일치하는지 예측하는 ML 모델은 구축할 수있음
  • 2020년 기준 기업에서 사용하는 머신러닝 현황(알고리드미아 출처)
    => 고객 만족도 향상, 비용 절감, 자산 및 콘텐츠 필터링, 신규 고객 획득, 고객과 소통, 고객 유지, 장기 고객 참여도 향상, 수요 변동 예측, 고객 인사이트 및 인텔리전스 창출, 고객 이탈 감소, 추천 시스템, 전환율 향상, 브랜드 인지도 구축, 고객 충성도 향상, 이상 거래 탐지, 고객 경험 개선, 내부 프로세스 자동화

2. 연구용 ML 과 프로덕션용 ML

  • 연구용 ML은 벤치마크 데이터셋에서 최적의 모델 성능 달성, 계산 우선순위는 빠른 훈련과 높은 스루풋 데이터는 정적이고 공정성과 해석 가능성이 중요하지 않은 경우가 많음
  • 프로덕션용 ML은 이해관계자마다 요구사항이 다르며, 계산 우선순위는 빠른 추론과 낮은 레이턴시 데이터는 끊임없이 변동하며 공정성과 해석 가능성을 반드시 고려해야함
  • 많은 작업에서 성능이 약간 좋아져도 수익이 향상되거나 비용이 크게 절감되기는 하나, 많은 작업의 경우 작은 개선 사항이 사용자의 눈에 띄지 않을 수 있다.
    => 단순한 모델의 성능이 합리적이라면 복잡한 모델은 복잡성을 정당화할 만큼 훨씬 나은 성능을 발휘해야 함

<계산 우선순위>

  • ML 시스템 설계시 모델 개발에 집중해 배포와 유지 관리를 소홀히 하기 쉬움

  • 모델 개발 프로세스에서는 다른 모델 여러개를 훈련하고, 각 모델은 훈련 데이터를 여러번 순회한다.
    모델 개발 단계에서는 '훈련'이 병목이 되지만, 모델을 배포하면 모델의 역할은 예측을 생성하는 일로 '추론'이 병목이다.

  • 스루풋(Throughput) 과 레이턴시(Latency)

    • 연구에서는 빠른 훈련을 우선시하지만, 프로덕션에서는 빠른 추론을 우선시함
    • 연구에서는 높은 throughput(스루풋) 을 우선시하지만, 프로덕션에서는 낮은 레이턴시(쿼리를 수신하고 결과를 반환하는 데 걸리는 시간)를 의미한다.
    • 최신 분산 시스템은 대부분 쿼리를 배치 처리해 레이턴시가 길수록 스루풋이 높다.
    • 연구에서는 1초에 처리할 수 있는 샘플 수인 스루풋에 집중하고, 샘플이 처리되는데 걸리는 시간인 레이턴시는 상대적으로 덜 고려함. 적극적으로 배치 처리를 사용해 스루풋을 늘리기 위해 레이턴시를 늘리기도 함
    • 그러나, 프로덕션 환경에서 실제 환경에 모델을 배포하면 레이턴시가 중요하다. 100밀리초가 지연되면 전환율(conversion rate)가 7% 감소할 수 있음.
    • 프로덕션 레이턴시를 줄이려면 하드웨어 하나로 한 번에 처리 가능한 쿼리 개수를 줄여야 할 수 있음. 하드웨어가 한 번에 처리할 수 있는 개수보다 훨씬 적은 쿼리를 처리한다면 하드웨어 활용도가 낮아져 각 쿼리를 처리하는 비용이 늘어난다.
  • 데이터(data)

    • 연구 단계에서 작업하는 데이터셋은 깨끗하고 형식이 잘 지정되어 있는 static함. 그러나 프로덕션 단계의 데이터는 nosie가 많이 있고, 비정형이며 변화하고 데이터가 편향되었는지 어떻게 편향됐는지 모를 가능성이 큼
  • 공정성
    - ML 알고리즘은 과거 시점 데이터를 대량으로 분석하고 패턴을 찾아내 이를 기반으로 신규 데이터에 대한 추론을 수행함.
    - 훈련 시점과 추론 시점이 일 치하지 않아 시점 차이에서 발생할 수 있는 데이터 분포 시프트 같은 편향 발생할 수 있음

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글