본문 바로가기
  • 데이터에 가치를 더하다, 서영석입니다.
가치를 창출하는 데이터 분석/개인 프로젝트

#공부일지 1_2. Introduction to Machine Learning in Production (Coursera)

by 꿀먹은데이터 2022. 11. 16.

Deployment

Key challenges

머신러닝 모델을 배포하는데 두 가지 주요 범주의 문제가 있다.

첫 번째는 머신러닝 또는 통계적 문제이고, 두 번째는 소프트웨어 엔진 문제이다.

시스템을 성공적으로 배포하기 위해 수행해야 하는 작업을 이해할 수 있어야한다.

많은 배포의 과제 중 하나는 개념 드리프트와 데이터 드리프트이다.

음성 인식의 예를 들자면,

데이터 세트에서 음성 인식 시스템을 교육한 후 테스트 세트에서 평가할 수 있지만

시간이 지남에 따라 음성 데이터가 변경되기 때문에

음성 인식 시스템을 구축할 때 지난 몇 개월 동안의 데이터로 구성된 검증 세트와 테스트 세트를 유지해야한다.

 

시스템에 갑작스러운 충격이 가해지면 데이터가 갑자기 변경되는 경우가 있다.

예를 들어 코로나 19 팬데믹이 닥쳤을 땓 개인의 구매 패턴이 갑자기 바뀌면서 신용 카드 사기 시스템이 작동하지 않았다.

상대적으로 온라인 쇼핑을 거의 하지 않던 많은 사람들이 갑자기 온라인 쇼핑을 훨씬 더 많이 사용하기 시작했다. 그래서 사람들이 신용 카드를 사용하는 방식이 갑자기 바뀌었고 실제로 사기 방지 시스템이 많이 작동했다.

데이터 분포에 대한 이러한 갑작스러운 변화는 많은 ML 팀이 COVID가 시작될 때 새로운 데이터를 수집하고 시스템을 재교육하여 이 새로운 데이터 분포에 적응할 수 있도록 약간의 노력을 기울이고 있음을 의미했다.

 

여기서 데이터 드리프트라는 용어가 X가 변경되는 경우를 설명하는데 이용된다.

 

개념 드리프트의 예로 주택 가격을 추정하기 위해 X가 주택 크기, Y가 주택 가격이라고 가정하자.

인플레이션이나 시장의 변화로 인해 시간이 지남에 따라 주택 가격이 높아질 수 있다. 

집의 크기는 변하지 않았지만 주어진 집의 가격이 변함 이것이 개념 드리프트다.

반면 데이터 드리프트는 사람들이 더 큰 집을 짓기 시작하는 등

시간이 지남에 따라 실제로 입력분포(X)가 변하는 경우이다.

 

X 또는 Y의 매핑이 변경되지 않더라도 X의 분포가 변경되는 경우

시스템을 성공적으로 배포하기 위해 관리해야 하는 문제는 소프트웨어 엔지니어링 문제이다.

 

소프트웨어 엔지니어링 문제를 관리하기 위한 적절한 결정을 내리는 데 도움이 될 수 있는 질문 체크리스트

Realtime or Batch

애플리케이션에 대해 내려야 할 한 가지 결정은 실시간 예측이 필요한지 아니면 일괄 예측인지

예를 들어 사용자가 말하고 0.5초 안에 응답을 받아야 하는 음성 인식 시스템을 구축하는 경우 분명히 실시간 예측이 필요

Cloud vs Edge/Browser

예측 서비스가 클라우드에서 실행되는지와 Edge / 웹 브라우저에서도 실행되는지

Compute resources

얼마나 많은 CPU 또는 GPU 리소스를 알고 있고 예측 서비스에 대해 얼마나 많은 메모리 리소스를 보유하고 있는지 알고 있다면 올바른 소프트웨어 아키텍처를 선택하는 데 도움이 될 수 있다.

Latency throughput (QPS)

애플리케이션에 따라, 특히 실시간 애플리케이션인 경우 QPS, 초당 쿼리로 측정된 것과 같은 대기 시간 및 처리량은 도달해야 할 수 있는 다른 소프트웨어 엔지니어링 메트릭이 될 것이다.

Logging

시스템을 구축할 때 분석 및 검토를 위해 가능한 한 많은 데이터를 로깅하고 향후 학습 알고리즘 재훈련을 위해 더 많은 데이터를 제공하는 것이 유용할 수 있다.

Security and privacy

보안 및 개인 정보 보호, 저는 응용 프로그램마다 필요한 보안 및 개인 정보 보호 수준이 매우 다를 수 있다.

 

요약하자면, 시스템을 배포하려면 두 가지 광범위한 작업 세트가 필요하다. 프로덕션에서 시스템을 배포할 수 있도록 소프트웨어를 작성해야 한다.

 

Deployment patterns

배포 유형 중 하나는 이전에 제공하지 않았던 새로운 제품이나 기능을 제공하는 경우이다.

예를 들어 이전에 제공한 적이 없는 음성 인식 서비스를 제공하는 경우 일반적인 설계 패턴은 소량의 트래픽을 시작한 다음 점진적으로 증가시키는 것이다. 

두 번째 일반적인 배포 사용 사례는 사람이 이미 수행하고 있는 작업이 있지만 이제 학습 알고리즘을 사용하여 해당 작업을 자동화하거나 지원하려는 경우이다.

예를 들어, 공장에서 스마트폰 스크래치를 검사하는 사람이 있지만 이제 학습 알고리즘을 사용하여 해당 작업을 지원하거나 자동화하고 싶은 경우이다.

마지막으로, 세 번째 일반적인 배포 사례는 이전 머신 러닝 시스템 구현으로 이미 이 작업을 수행했지만 이제 더 나은 시스템으로 교체하려는 경우이다.

이러한 경우에 표시되는 두 가지 반복되는 주제는 종종 모니터링을 통해 점진적인 증가를 원한다는 것이다.

즉, 완전히 입증되지 않은 학습 알고리즘에 많은 양의 트래픽을 전송하는 대신 적은 양의 트래픽만 전송하고 모니터링한 다음 트래픽 비율 또는 양을 늘릴 수 있다.

학습 알고리즘이 실제 결정을 내리도록 할 준비가 되면 일반적인 배포 패턴은 카나리아 배포를 사용하는 것이다.

카나리아 배포에서는 초기에 트래픽의 5%, 어쩌면 더 적은 부분으로 롤아웃하고 알고리즘이 실제 결정을 내리도록 할 것이다.

블루 그린 배포라는 용어로 소프트웨어의 이전 버전을 blue version이라고 하고

새 버전을 방금 구현한 학습 알고리즘을 Green version이라고 한다.

 

Green 배포에서 수행하는 작업은 라우터가 Old/blue version으로 이미지를 전송하고 결정을 내리는 것이다.

그런 다음 New version으로 전환하려는 경우 라우터가 Old version으로 이미지 전송을 중지하고 갑자기 New version으로 전환하도록 한다.

따라서 Green 배포가 구현되는 방식은 오래된 예측 서비스가 일종의 서비스에서 실행될 수 있다는 것이다.

그런 다음 새로운 예측 서비스인 Green version을 시작하고 라우터가 갑자기 이전 서비스에서 새 서비스로 트래픽을 전환하도록 한다.

Green 배포의 장점은 롤백을 활성화하는 쉬운 방법이 있다는 것이다.

문제가 발생하면 blue version의 예측 서비스를 계속 실행하고 있다고 가정하고

매우 신속하게 라우터를 다시 구성하여 트래픽을 Old / Blue version으로 다시 보내도록 할 수 있다.

Monitoring

모니터링하는 가장 일반적인 방법은 대시보드를 사용하여 시간이 지남에 따라 수행되는 방식을 추적하는 것이다.

애플리케이션에 따라 대시보드에서 다양한 메트릭을 모니터링할 수 있다.

예를 들어 서버 부하를 모니터링하는 하나의 대시보드가 ​​있거나 null이 아닌 출력의 회절을 모니터링하는 다른 대시보드가 ​​있을 수 있습니다.

처음으로 모니터링 대시보드를 디자인할 때 다양한 메트릭으로 시작하여 상대적으로 큰 집합을 모니터링한 다음 시간이 지남에 따라 특히 유용하지 않다고 생각되는 항목을 점차적으로 제거해도 괜찮다고 생각한다.

모델링을 하면 기계 학습 모델과 일부 데이터를 생각해 내고 모델을 훈련시키는 것이 실험이다.

오류 분석을 수행하고 오류 분석을 사용하여 모델 또는 데이터를 개선하는 방법을 파악하고

이 루프를 여러 번 반복하여 좋은 모델을 얻을 수 있다.

Pipeline monitoring

많은 AI 시스템은 예측 서비스를 실행하는 단일 기계 학습 모델이 아니라 여러 단계의 파이프라인을 포함한다.

모바일 앱에서 음성 인식이 구현되는 방식은 이와 같지 않고 대신 약간 더 복잡한 파이프라인이다.

여기서 오디오는 VAD 또는 음성 활동 감지 모듈이라는 모듈로 공급되며, 이 모듈의 역할은 말하고 있는 사람이 있는지 확인하는 것이다.

음성 활동 감지 또는 VAD 모듈을 사용하는 이유는 음성 인식 시스템이 클라우드에서 실행되기 때문이다.

파이프라인 전체에 기계 학습 기반 구성 요소 또는 비 기계 학습 기반 구성 요소를 포함할 수 있는 이러한 복잡한 기계 학습 파이프라인을 구축할 때. 개념 드리프트 또는 데이터 기반 또는 둘 다, 그리고 파이프라인의 여러 단계를 포함한 변경 사항을 감지할 수 있는 모니터링을 위해 메트릭을 브레인스토밍하는 것이 유용하다는 것이다.

따라서 모니터링할 메트릭에는 파이프라인의 각 구성 요소 또는 전체 파이프라인에 대한 소프트웨어 메트릭이 포함될 수 있다.

시간이 지남에 따라 더 길거나 짧은 오디오 지우기를 하는 음성 활동 감지 시스템 또는 사용자가 자동차를 소유하고 있는지 여부에 대해 갑자기 더 많은 알 수 없는 속성을 갖는 사용자 프로필 시스템과 같은 문제를 발견하는 데 도움이 될 수 있다.

위 슬라이드는 데이터가 얼마나 빨리 변경될 것인지 또는 변경되지 않을 것인지에 대해 생각하는 방법을 제공한다.