러닝 스파크 - 11장

Jajuna_99·2023년 3월 28일
0

러닝 스파크

목록 보기
7/8

11장 아파치 스파크로 머신러닝 파이프라인 관리, 배포 및 확장

학습하는 모델을 관리하고 배포하는 방법에 대한 장이다.

모델의 트래킹, 재현 및 배포, 다양한 모델 배포 시나리오, 확장 가능한 머신러닝 솔루션을 설계할 수 있다.

모델 관리

배포 전에 모델의 성능이 재현되고 추적할 수 있는지 확인해야 한다.

다음은 실험을 재현할 수 있는 시드들의 예시이다.

  • 라이브러리 버전 관리

  • 데이터 진화 : 초기 기본 데이터가 변경되어 모델을 사용할 수 없는 경우

  • 실행 순서 : 순서가 맞지 않거나 상태 보전적인 셀을 변경

  • 병렬 작업

ML플로는 이 작업들을 가능하게 만드는 MLlib과 통합되어 있는 오픈소스 모델 관리 도구이다.

ML 플로

ML플로에는 4 가지 주요 구성요소가 있다.

  1. 트래킹 : 매개변수, 메트릭, 코드 버전, 모델, 그리고 플롯 및 텍스트와 같은 아티팩트를 기록하는 API

  2. 프로젝트 : 다른 플랫폼에서 실행하기 위해 데이터 과학 프로젝트 및 해당 종속성을 패키징하는 표준화된 형식

3, 모델 : 다양한 실행 환경에 배포하기 위해 모델을 패키징하는 표준화된 형식. 모델을 빌드하는 데 사용된 알고리즘이나 라이브러리에 관계없이 모델을 로드하고 적용하기 위한 일관된 API 제공

  1. 레지스트리 : 모델 계보, 모델 버전, 단계 전환 및 주석을 트래킹하는 저장소

MLlib을 사용한 모델 배포 옵션

모델의 배포는 조직과 사용 사례에 따라 다르다.

비즈니스 제약 조건은 대기 시간, 처리량, 비용 등에 대한 다양한 요구사항을 부과하면, 이는 배치, 스트리밍, 실시간 같은 당명한 작업에 적합한 배포 모드를 결정한다.

  • 배치 처리 : 정기적인 일정에 따라 예측을 생성, 다른 곳에 제공될 결과를 영구 저장소에 기록한다. 예정된 실행 중에만 컴퓨팅 비용을 지불하면 되므로 일반적으로 가장 저렴하고 쉬운 배포 옵션이다.

  • 스트리밍 : 처리량과 대기 시간 간의 적절한 균형을 제공. 마이크로 데이터 베치에 대해 지속적으로 예측하고 몇 초에서 몇 분 만에 예측을 얻을 수 있다. 정형화 스트리밍을 사용하는 경우 거의 모든 코드가 배치 사용 사례와 동일하게 표시되므로 이 두 옵션 사이를 쉽게 오갈 수 있다.

  • 실시간 배포 : 처리량보다 대기 시간을 우선시하고 몇 밀리초 만에 예측 결과를 생성한다. 인프라는 로드 밸런싱을 지원해야 하며 수요가 급증하는 경우 많은 동시 요청으로 확장할 수 있어야 한다. 여기서 실시간은 실시간으로 모델 예측을 생성하는 것을 의미한다. 실시간 배포는 스파크가 대기 시간 요구사항을 충족할 수 없는 케이스로 이를 사용하려면 스파크 외부로 모델을 내보내야 한다.

비MLlib 모델에 스파크 활용

MLlib이 항상 적합한 솔루션은 아니다. 대기 시간이 매우 짧은 추론 요구사항을 충족하지 못하거나, 알고리즘에 대한 기본 제공 지원이 없을 수 있다.

그래서 판다스 UDF를 사용하여 단일 노드 모델의 분산 추론을 수행하고, 하이퍼파라미터 조정, 피처 엔지니어링 확장에 대한 보자.

판다스 UDF

알려진 사전 학습 모델을 대규모로 적용하기 위해 사용자 정의 함수(UDF)를 생성할 수 있다.

일반적인 사용 사례는 단일 머신에서 사이킷런 또는 텐서플로 모델을 데이터의 하위 집합으로 빌드하고 스파크를 사용하여 전체 데이터 세트에 대해 분산 추론을 수행하는 것이다.

UDF를 사용하려면 최적화된 직렬화, 역직렬화를 위해 판다스 UDF를 선택해야 한다.

분산 하이퍼파라미터 조정을 위한 스파크

Joblib, 하이퍼옵트

profile
Learning bunch, mostly computer and language

0개의 댓글