Review/도서 리뷰

[도서 리뷰] Introducing MLOps, MLOps 도입가이드 part2

어쩌다통계 2022. 10. 27. 23:13
728x90

이 글이 도움되셨다면 광고 클릭 부탁드립니다 : )

 

아래 part1에 이어 MLOps 도입 가이드 도서 정리하였습니다. 본 포스팅에서는 상용 배포, 모니터링과 피드백 루프 챕터에 대한 내용을 다룹니다.

2022.10.27 - [Review/도서 리뷰] - [도서 리뷰] Introducing MLOps, MLOps 도입가이드 part1

 

[도서 리뷰] Introducing MLOps, MLOps 도입가이드 part1

ML모델 관련 구글링을 하다 보면 DevOps와 비슷한 MLOps라는 용어를 손쉽게 접할 수 있습니다. 저는 처음에는 당장 필요하지 않아 보여 관심을 두지 않았는데, 회사에서 모델을 배포/서빙을 하거나

slowsteadystat.tistory.com


Ch6. 상용배포

머신러닝 상용 배포 시 알아야 할 개념 및 고려사항, 배포 프로세스 구축 방식 및 영향력 파악

  1. CI/CD 파이프 라인
    • CI/CD는 지속적인 통합(Continuous Integration)과 지속적인 전달(Continuous Delivery, 배포) -> 더 자주 더 빨리 출시하면서도 품질과 리스크 통제 가능
    • 파이프라인 예시(한 번에 완벽한 파이프라인 구축은 어려움, 점차 확장/추가해야 함)
      • 모델 구축 : 모델 아티팩트 생성 -> 아티팩트를 장기 보관소에 저장 -> 기본 점검 수행 -> 공정성 및 설명 가능성 보고서 생성
      • 테스트 환경에 배포 : 머신러닝의 성능 및 계산 성능 검증을 위한 테스트 수행 -> 수동 검증
      • 상용 환경에 배포 : 모델의 카나리(canary) 배포 -> 모델 완전 배포
  2. 머신러닝 아티팩트 개발
    • CI 파이프라인의 목표는
      • 여러 contributor의 작업을 통합할 때 불필요한 노력을 들이지 않도록 하는 것
      • 개발 내역 간 충돌로 인한 버그 감지
    • 중앙화된 버전 관리 시스템 사용 필요
      • Git활용 -> 변경사항을 선명하게 기록, 이전 버전의 코드로 안전하게 롤백 가능, 병합하기 전에 각자 작업이 가능
    • 아티팩트?
      • 코드와 데이터를 중앙 저장소에 저장한 뒤, 테스트 및 배포 가능한 프로젝트 번들
      • 아트팩트화 필요한 요소
        • 모델 및 전처리 관련 코드, 
        • 하이퍼파라미터와 설정, 
        • 학습 데이터와 검증 데이터, 
        • 실행 가능한 형태의 학습된 모델, 
        • 버전을 지정한 라이브러리, 환경 변수 등의 실행 환경
        • 문서화
        • 테스트 시나리오 관련 코드와 데이터
    • 테스트용 파이프라인
      • 아티팩트에 포함된 모델의 다양한 속성을 검증 가능
      • 소스상의 이슈를 가능한 쉽게 진단 가능
        • 정상 데이터, 특이 데이터, 최신 상용 데이터로 테스트
      • 이러한 테스트를 최대한 자동화해야 함, 효율적인 MLOps의 핵심 요소
  3. 배포 전략
    • 배포 파이프라인을 이해하려면 자주 혼동되는 개념 구별 필수
      • 통합, Integration
        • 중앙 repository에 대한 기여 contribution 부분을 병합(일반적으로 개별 기능에 대한 git 분기를 main 분기에 병합함)하고 다소 복잡한 테스트를 수행하는 프로세스
      • 전달, Delivery
        • CI/CD의 CD부분에서 사용되는 것과 같이, 상용 환경에 배치할 준비가 된 모델에서 완전 패키징되고 검증된 버전을 발하는 프로세스
      • 배포, Deployment
        • 대상 인프라에서 모델의 새 버전을 실행하는 프로세스
        • 완전히 자동화된 배포가 항상 실용적이거나 바람직한 것은 아님
        • 지속적인 전달은 지속적인 배포에 필수적이지만, 지속적인 배포 없이 지속적인 전달만으로도 엄청난 가치 제공 가능
      • 출시, Release
        • 모델의 어떤 버전을 배포한다고 해서 반드시 상용 환경의 workload가 새 버전으로 전달되는 것은 아니기 때문에 출시는 또 다른 단계라 할 수 있음
    • 모델 배포의 종류
      • 일괄 스코어링, batch scoring
      • 실시간 스코어링, real-time scoring
    • 모델 상용 배포 시 고려 사항
      • Downtime 줄이기(멈추는 시간, 무중단 배포 같은 개념)
        • 신규 시스템을 구축 -> 기능적인 검정이 끝나면 workload를 기존에서 신규 시스템으로 바꾸는 것(신규 시스템이 정상 상태를 유지하면 이전 시스템 종료)
      • 카나리 출시/배포
        • 리스크 완화 가능, 모델의 안정적인 버전은 상용 환경에 유지한 채 workload 일정 비율을 새 모델에 전달
    • 상용 환경의 유지보수
      • 자원 모니터링(CPU, 메모리, 디스크…), 상태 점검(모델 온라인 여부, 지연시간 분석), 머신러닝 지표 모니터링(모델 정확성, 이전 모델과 성능 비교)
  4. 컨테이너화
    • 모델 버전을 관리하는 것은 단순히 버전 제어 시스템에 코드를 저장하는 것 이상임
      • 특히, 환경에 대한 상세 내용(python 라이브러리 종류 및 버전, 종속성…)
      • 두 모델 간에 종속된 라이브러리의 종류나 버전에 차이가 있을 수 있음
      • 모델 하나에 오작동이 발생하면 공동 호스팅 된 다른 모델의 성능도 저하될 수 있음
    • 컨테이너화하여 응용 프로그램을 패키징하여 서버로 전송하고 타 프로그램과 격리된 상태로 실행 가능
      • 도커 활용
      • 동일한 여러 개의 도커 호스트가 필요할 수 있음 -> 관리/배포 어려움
    • 쿠버네티스
      • 컨테이너 오케스트레이션의 표준이 된 오픈 소스 플랫폼
      • 쿠버네티스 클러스터라고 불리는 도커 호스트 그룹에서 애플리케이션을 실행할 수 있는 선언적, Declarative  API 제공
        • 컨테이너를 설정하고 모니터링하고 업그레이드, 중지하고 연결하는 단계를 코드로 표현하는 대신, 사용자가 원하는 상태를 구성 파일에 저장하며 쿠버네티스가 알아서 처리하고 유지보수함
        • 쿠버네티스와 결합된 도커는 머신러닝 모델을 포함한 응용 프로그램을 호스팅 할 수 있는 강력한 인프라를 제공할 수 있음
  5. 배포 확장
    • 상용 환경에서 대규모 데이터에 모델을 적용할 수 있는 기능, 매우 많은 수의 모델을 학습시킬 수 있는 능력이 가능하도록 확장
  6. 요구사항과 도전 과제
    • 실시간/일괄 스코어링 배포 방법과 상관없이 시스템은 여러 서버상의 스코어링 로그를 읽고 추출할 수 있어야 함
    • 모델 하나를 여러 서버에 배포하면, 시스템은 여러 서버에 걸쳐 모델에 대한 모든 정보의 매핑 및 집계를 처리할 수 있어야함
    • 한 모델의 여러 가지 버전을 배포하는 경우, 시스템은 여러 서버에 걸쳐 모델의 버전 별 정보의 매핑 및 집계를 처리할 수 있어야함

 

Ch7. 모니터링과 피드백 루프

  • 잘못하면 비즈니스에 부정적인 영향을 즉각적으로 미칠 수 있기 때문에 아주 중요한 부분
  • 머신러닝 모델은 두 가지 관점에서 모니터링해야 함
    • 자원 관점 (+모델이 상용 환경에서 올바르게 실행되는 거 있는지 확인)
      • 시스템이 살아 있는지, CPU, RAM, 네트워크 사용량, 디스크 공간이 예상한 수준 안에 있는지
    • 성능 관점
      • 모델이 새로운 데이터 패턴을 정확하게 표현하는지, 설계단계에서 예상한 수준의 성능을 보이는지
  • 모델 재학습 주기 결정 요소
    • 도메인 : 사이버 보안, 실시간 거래와 같은 분야의 모델은 지속적인 변화에 맞춰 정기적 업데이트 필요
    • 비용 : 재학습 비용을 들일만큼의 성능 개선할 가치가 있는지 고려
    • 모델 성능 : 새 데이터를 충분히 수집하였는지 고려
  • 모델 성능 저하 모니터링
    • 실측 데이터 평가
      • 데이터 수집, 실측 데이터 기반 재학습에는 레이블 작업이 필요함
        • 이상 거래 탐지 모델에서 실측 데이터는 특정 거래가 실제로 사기인지 여부가 될 것
      • 수집된 데이터(True/False 레이블 된)를 기반으로 모델 성능 도출하고 학습 모델 성능 지표와 비교
    • 입력값 드리프트 감지
      • 드리프트 : 데이터 분포의 이동
      • 학습 데이터와 배포 후 들어오는 데이터가 다르지 않은지
  • 데이터 드리프트 감지
    • 적시 대응을 위해 실측 데이터를 기다리지 않고 피처 값 기반으로 모델 작동 모니터링 필요함
    • 예시
      • 표본 선택의 편향 : 학습 표본이 모집단을 대표하지 않는 경우
      • 끊임없이 변화하는 환경
    • 탐지 기법
      • 일변량 통계 테스트 : 분포 동일한지 검정
      • 도메인 분류기 : 원본 데이터와 개발 데이터를 구분하는 모델 학습 -> 모델이 성능으로 드리프트 수준 예측
  • 피드백 루프
    • 효과적인 머신러닝 프로젝트에서는 데이터 피드백 루프 형태를 구현함
    • 모니터링 단계 모델 성능을 확인해 수집한 데이터로 다시 모델 개발에 사용
반응형